{"version":3,"file":"static/js/main.52a04f5d.js","mappings":"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AAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,IAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,KAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,I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CpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,QAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YACxC,CAAI,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,SACpC,WAAY,SAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,SAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,SAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,UAAY,WAAY,UAAY,WACpC,WAAY,UAAY,SAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,SAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,YAG5C,IAAIC,EAAe,CACfC,KAAM,GACNC,KAAM,IAGV,SAASnO,EAAEoO,EAAKxlD,GACZ,IAAIoV,EAAKpV,GAAK,GAAM,IAChBoU,EAAKpU,GAAK,GAAM,IAChBuU,EAAKvU,GAAK,EAAK,IACfwU,EAAQ,IAAJxU,EAEJC,EAAIulD,EAAID,KAAK,GAAGnwC,GAAKowC,EAAID,KAAK,GAAGnxC,GAIrC,OAHAnU,GAAQulD,EAAID,KAAK,GAAGhxC,GACpBtU,GAAQulD,EAAID,KAAK,GAAG/wC,GAEbvU,CACX,CAEA,SAASwlD,EAAiBD,EAAKluB,EAAMC,GACjC,IAEImuB,EAFAC,EAAKruB,EACLsuB,EAAKruB,EAGT,IAAI,IAAIp8B,EAAI,EAAGA,EAAI+pD,IAAK/pD,EACpBwqD,GAAUH,EAAIF,KAAKnqD,GACnByqD,EAAKxO,EAAEoO,EAAKG,GAAMC,EAElBF,EAAOC,EACPA,EAAKC,EACLA,EAAKF,EAUT,OAPAA,EAAOC,EACPA,EAAKC,EACLA,EAAKF,EAELE,GAAUJ,EAAIF,KAAKJ,GACnBS,GAAUH,EAAIF,KAAKJ,EAAI,GAEhB,CAAC5tB,KAAMquB,EAAIpuB,MAAOquB,EAC7B,CAEA,SAASC,EAAiBL,EAAKluB,EAAMC,GACjC,IAEImuB,EAFAC,EAAKruB,EACLsuB,EAAKruB,EAGT,IAAI,IAAIp8B,EAAI+pD,EAAI,EAAG/pD,EAAI,IAAKA,EACxBwqD,GAAUH,EAAIF,KAAKnqD,GACnByqD,EAAKxO,EAAEoO,EAAKG,GAAMC,EAElBF,EAAOC,EACPA,EAAKC,EACLA,EAAKF,EAUT,OAPAA,EAAOC,EACPA,EAAKC,EACLA,EAAKF,EAELE,GAAUJ,EAAIF,KAAK,GACnBK,GAAUH,EAAIF,KAAK,GAEZ,CAAChuB,KAAMquB,EAAIpuB,MAAOquB,EAC7B,CAaA,SAASE,EAAaN,EAAKj4B,EAAKw4B,GAE5B,IAAI,IAAIC,EAAM,EAAGA,EAAM,EAAGA,IAC1B,CACIR,EAAID,KAAKS,GAAO,GAChB,IAAI,IAAIC,EAAM,EAAGA,EAAM,IAAKA,IAExBT,EAAID,KAAKS,GAAKC,GAAOb,EAAOY,GAAKC,EAEzC,CAEA,IAAIC,EAAW,EACf,IAAI,IAAInoD,EAAQ,EAAGA,EAAQmnD,EAAI,EAAGnnD,IAE9BynD,EAAIF,KAAKvnD,GAASonD,EAAOpnD,GAASwvB,EAAI24B,GACtCA,IACGA,GAAYH,IAEXG,EAAW,GAInB,IAAIC,EAAQ,EACRC,EAAQ,EACRC,EAAM,EACV,IAAI,IAAIlrD,EAAI,EAAGA,EAAI+pD,EAAI,EAAG/pD,GAAK,EAE3BkrD,EAAMZ,EAAiBD,EAAKW,EAAOC,GACnCD,EAAQE,EAAI/uB,KACZ8uB,EAAQC,EAAI9uB,MACZiuB,EAAIF,KAAKnqD,GAAKgrD,EACdX,EAAIF,KAAKnqD,EAAI,GAAKirD,EAGtB,IAAI,IAAIjrD,EAAI,EAAGA,EAAI,EAAGA,IAElB,IAAI,IAAI2E,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAEzBumD,EAAMZ,EAAiBD,EAAKW,EAAOC,GACnCD,EAAQE,EAAI/uB,KACZ8uB,EAAQC,EAAI9uB,MACZiuB,EAAID,KAAKpqD,GAAG2E,GAAKqmD,EACjBX,EAAID,KAAKpqD,GAAG2E,EAAI,GAAKsmD,EAI7B,OAAO,CACX,CAKA,IAAIE,EAAWrsC,EAAOqsC,SAAWj3B,EAAYhc,OAAO,CAChDgH,SAAU,WAEN,GAAI5Z,KAAK8lD,iBAAmB9lD,KAAKya,KAAjC,CAKA,IAAIqS,EAAM9sB,KAAK8lD,eAAiB9lD,KAAKya,KACjCsrC,EAAWj5B,EAAI5pB,MACfuqB,EAAUX,EAAI/pB,SAAW,EAG7BsiD,EAAaT,EAAcmB,EAAUt4B,EARrC,CASJ,EAEAra,aAAc,SAAUoI,EAAGrd,GACvB,IAAIynD,EAAMZ,EAAiBJ,EAAcppC,EAAErd,GAASqd,EAAErd,EAAS,IAC/Dqd,EAAErd,GAAUynD,EAAI/uB,KAChBrb,EAAErd,EAAS,GAAKynD,EAAI9uB,KACxB,EAEAzI,aAAc,SAAU7S,EAAGrd,GACvB,IAAIynD,EAAMR,EAAiBR,EAAcppC,EAAErd,GAASqd,EAAErd,EAAS,IAC/Dqd,EAAErd,GAAUynD,EAAI/uB,KAChBrb,EAAErd,EAAS,GAAKynD,EAAI9uB,KACxB,EAEAl0B,UAAW,EAEX6qB,QAAS,EAEThS,OAAQ,IAWZnC,EAAEusC,SAAWj3B,EAAY3U,cAAc4rC,EAC1C,CAlcA,GAqcMtjD,EAASsjD,SAvchB,CAbC,0BCAA,WAaM,IAAUtjD,EAVhBtI,EAAOC,SAUSqI,EAVmBC,EAAQ,MAAWA,EAAQ,MAY9D,SAAUwpB,GAEP,IAAI1S,EAAI/W,EACJgpB,EAAQjS,EAAE5G,IACV6G,EAAYgS,EAAMhS,UAClBiS,EAASD,EAAMC,OAEfw6B,EADQ1sC,EAAE2sC,IACMC,KAChB1sC,EAASF,EAAEG,KAGX0sC,EAAc,GACdC,EAAc,GACdC,EAAkB,IAGrB,WAGG,IADA,IAAI9mD,EAAI,EAAGC,EAAI,EACNiV,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB0xC,EAAY5mD,EAAI,EAAIC,IAAOiV,EAAI,IAAMA,EAAI,GAAK,EAAK,GAEnD,IACI6xC,GAAQ,EAAI/mD,EAAI,EAAIC,GAAK,EAC7BD,EAFWC,EAAI,EAGfA,EAAI8mD,CACR,CAGA,IAAS/mD,EAAI,EAAGA,EAAI,EAAGA,IACnB,IAASC,EAAI,EAAGA,EAAI,EAAGA,IACnB4mD,EAAW7mD,EAAI,EAAIC,GAAKA,GAAM,EAAID,EAAI,EAAIC,GAAK,EAAK,EAM5D,IADA,IAAI+mD,EAAO,EACF7rD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAIzB,IAHA,IAAI8rD,EAAmB,EACnBC,EAAmB,EAEdpnD,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,GAAW,EAAPknD,EAAa,CACb,IAAIG,GAAe,GAAKrnD,GAAK,EACzBqnD,EAAc,GACdD,GAAoB,GAAKC,EAEzBF,GAAoB,GAAME,EAAc,EAEhD,CAGW,IAAPH,EAEAA,EAAQA,GAAQ,EAAK,IAErBA,IAAS,CAEjB,CAEAF,EAAgB3rD,GAAKsrD,EAAQzkD,OAAOilD,EAAkBC,EAC1D,CACH,CA9CA,GAiDD,IAAI9d,EAAI,IACP,WACG,IAAK,IAAIjuC,EAAI,EAAGA,EAAI,GAAIA,IACpBiuC,EAAEjuC,GAAKsrD,EAAQzkD,QAEtB,CAJA,GASD,IAAIolD,EAAOntC,EAAOmtC,KAAOn7B,EAAO5Y,OAAO,CASnC8H,IAAK8Q,EAAO9Q,IAAI9H,OAAO,CACnBg0C,aAAc,MAGlBhtC,SAAU,WAEN,IADA,IAAI8J,EAAQ1jB,KAAK6mD,OAAS,GACjBnsD,EAAI,EAAGA,EAAI,GAAIA,IACpBgpB,EAAMhpB,GAAK,IAAIsrD,EAAQlsC,KAG3B9Z,KAAK4C,WAAa,KAAO,EAAI5C,KAAK0a,IAAIksC,cAAgB,EAC1D,EAEArrC,gBAAiB,SAAUC,EAAGrd,GAM1B,IAJA,IAAIulB,EAAQ1jB,KAAK6mD,OACbC,EAAkB9mD,KAAK4C,UAAY,EAG9BlI,EAAI,EAAGA,EAAIosD,EAAiBpsD,IAAK,CAEtC,IAAIqsD,EAAOvrC,EAAErd,EAAS,EAAIzD,GACtBssD,EAAOxrC,EAAErd,EAAS,EAAIzD,EAAI,GAG9BqsD,EACoC,UAA7BA,GAAO,EAAOA,IAAQ,IACO,YAA7BA,GAAO,GAAOA,IAAQ,GAE7BC,EACsC,UAA/BA,GAAQ,EAAOA,IAAS,IACO,YAA/BA,GAAQ,GAAOA,IAAS,IAI3BC,EAAOvjC,EAAMhpB,IACZwsD,MAAQF,EACbC,EAAKE,KAAQJ,CACjB,CAGA,IAAK,IAAIK,EAAQ,EAAGA,EAAQ,GAAIA,IAAS,CAErC,IAAK,IAAI7nD,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGxB,IADA,IAAI8nD,EAAO,EAAGC,EAAO,EACZ9nD,EAAI,EAAGA,EAAI,EAAGA,IAEnB6nD,IADIJ,EAAOvjC,EAAMnkB,EAAI,EAAIC,IACZ0nD,KACbI,GAAQL,EAAKE,IAIjB,IAAII,EAAK5e,EAAEppC,GACXgoD,EAAGL,KAAOG,EACVE,EAAGJ,IAAOG,CACd,CACA,IAAS/nD,EAAI,EAAGA,EAAI,EAAGA,IAEnB,KAAIioD,EAAM7e,GAAGppC,EAAI,GAAK,GAClBkoD,EAAM9e,GAAGppC,EAAI,GAAK,GAClBmoD,EAASD,EAAIP,KACbS,EAASF,EAAIN,IAKjB,IAFIE,EAAOG,EAAIN,MAASQ,GAAU,EAAMC,IAAW,IAC/CL,EAAOE,EAAIL,KAASQ,GAAU,EAAMD,IAAW,IAC1CloD,EAAI,EAAGA,EAAI,EAAGA,KACfynD,EAAOvjC,EAAMnkB,EAAI,EAAIC,IACpB0nD,MAAQG,EACbJ,EAAKE,KAAQG,CAXO,CAgB5B,IAAK,IAAIM,EAAY,EAAGA,EAAY,GAAIA,IAAa,CACjD,IAKIC,GADAZ,EAAOvjC,EAAMkkC,IACEV,KACfY,EAAUb,EAAKE,IACfY,EAAY5B,EAAYyB,GAGxBG,EAAY,IACZV,EAAQQ,GAAWE,EAAcD,IAAa,GAAKC,EACnDT,EAAQQ,GAAWC,EAAcF,IAAa,GAAKE,IAEnDV,EAAQS,GAAYC,EAAY,GAAQF,IAAa,GAAKE,EAC1DT,EAAQO,GAAYE,EAAY,GAAQD,IAAa,GAAKC,GAI9D,IAAIC,EAAUrf,EAAEyd,EAAWwB,IAC3BI,EAAQd,KAAOG,EACfW,EAAQb,IAAOG,CACnB,CAGA,IAAIW,EAAKtf,EAAE,GACPuf,EAASxkC,EAAM,GAKnB,IAJAukC,EAAGf,KAAOgB,EAAOhB,KACjBe,EAAGd,IAAOe,EAAOf,IAGR5nD,EAAI,EAAGA,EAAI,EAAGA,IACnB,IAASC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IACIynD,EAAOvjC,EADPkkC,EAAYroD,EAAI,EAAIC,GAEpB2oD,EAAQxf,EAAEif,GACVQ,EAAUzf,GAAIppC,EAAI,GAAK,EAAK,EAAIC,GAChC6oD,EAAU1f,GAAIppC,EAAI,GAAK,EAAK,EAAIC,GAGpCynD,EAAKC,KAAOiB,EAAMjB,MAASkB,EAAQlB,KAAOmB,EAAQnB,KAClDD,EAAKE,IAAOgB,EAAMhB,KAASiB,EAAQjB,IAAOkB,EAAQlB,GACtD,CAIAF,EAAOvjC,EAAM,GAAjB,IACI4kC,EAAgBjC,EAAgBe,GACpCH,EAAKC,MAAQoB,EAAcpB,KAC3BD,EAAKE,KAAQmB,EAAcnB,GAC/B,CACJ,EAEAptC,YAAa,WAET,IAAIpX,EAAO3C,KAAK4rB,MACZ3oB,EAAYN,EAAKO,MAEjB6oB,GADa/rB,KAAK8rB,YACU,EAAhBnpB,EAAKI,UACjBwlD,EAAiC,GAAjBvoD,KAAK4C,UAGzBK,EAAU8oB,IAAc,IAAM,GAAQ,GAAKA,EAAY,GACvD9oB,GAAY+oB,EAAKyrB,MAAM1rB,EAAY,GAAKw8B,GAAiBA,IAAmB,GAAK,IAAM,IACvF5lD,EAAKI,SAA8B,EAAnBE,EAAUzH,OAG1BwE,KAAKksB,WASL,IANA,IAAIxI,EAAQ1jB,KAAK6mD,OACb2B,EAAoBxoD,KAAK0a,IAAIksC,aAAe,EAC5C6B,EAAoBD,EAAoB,EAGxCE,EAAY,GACPhuD,EAAI,EAAGA,EAAI+tD,EAAmB/tD,IAAK,CAExC,IAAIusD,EAAOvjC,EAAMhpB,GACbmtD,EAAUZ,EAAKC,KACfY,EAAUb,EAAKE,IAGnBU,EAC4C,UAArCA,GAAW,EAAOA,IAAY,IACO,YAArCA,GAAW,GAAOA,IAAY,GAErCC,EAC4C,UAArCA,GAAW,EAAOA,IAAY,IACO,YAArCA,GAAW,GAAOA,IAAY,GAIrCY,EAAU/tD,KAAKmtD,GACfY,EAAU/tD,KAAKktD,EACnB,CAGA,OAAO,IAAItuC,EAAUO,KAAK4uC,EAAWF,EACzC,EAEAr8B,MAAO,WAIH,IAHA,IAAIA,EAAQX,EAAOW,MAAMzlB,KAAK1G,MAE1B0jB,EAAQyI,EAAM06B,OAAS7mD,KAAK6mD,OAAOpqD,MAAM,GACpC/B,EAAI,EAAGA,EAAI,GAAIA,IACpBgpB,EAAMhpB,GAAKgpB,EAAMhpB,GAAGyxB,QAGxB,OAAOA,CACX,IAiBJ7S,EAAEqtC,KAAOn7B,EAAOvR,cAAc0sC,GAgB9BrtC,EAAEqvC,SAAWn9B,EAAOrR,kBAAkBwsC,EACzC,CAjTA,CAiTC36B,MAGKzpB,EAASokD,KAtThB,CAbC,gCCWF,IAAIiC,EAAQpmD,EAAQ,MACpB,SAASqmD,EAAuBr/C,GAC9B,IAAIs/C,EAAM,4BAA8Bt/C,EACxC,GAAI,EAAI6sB,UAAU76B,OAAQ,CACxBstD,GAAO,WAAa1Q,mBAAmB/hB,UAAU,IACjD,IAAK,IAAI37B,EAAI,EAAGA,EAAI27B,UAAU76B,OAAQd,IACpCouD,GAAO,WAAa1Q,mBAAmB/hB,UAAU37B,GACrD,CACA,MACE,yBACA8O,EACA,WACAs/C,EACA,gHAEJ,CACA,SAASvY,IAAQ,CACjB,IAAIwY,EAAY,CACZh1C,EAAG,CACDE,EAAGs8B,EACH37B,EAAG,WACD,MAAMm4B,MAAM8b,EAAuB,KACrC,EACAG,EAAGzY,EACHj3B,EAAGi3B,EACH0Y,EAAG1Y,EACHl8B,EAAGk8B,EACH51B,EAAG41B,EACH9/B,EAAG8/B,EACH/0B,EAAG+0B,GAELh8B,EAAG,EACH20C,YAAa,MAEf9d,EAAoBx3B,OAAOC,IAAI,gBAYjC,IAAIu5B,EACFwb,EAAM3X,gEACR,SAASkY,EAAuBC,EAAIrP,GAClC,MAAI,SAAWqP,EAAW,GACtB,kBAAoBrP,EACf,oBAAsBA,EAAQA,EAAQ,QAD/C,CAEF,CACA7/C,EAAQmvD,6DACNN,EACF7uD,EAAQovD,aAAe,SAAUrtD,EAAUstD,GACzC,IAAIz8B,EACF,EAAIuJ,UAAU76B,aAAU,IAAW66B,UAAU,GAAKA,UAAU,GAAK,KACnE,IACGkzB,GACA,IAAMA,EAAUC,UACf,IAAMD,EAAUC,UAChB,KAAOD,EAAUC,SAEnB,MAAMzc,MAAM8b,EAAuB,MACrC,OA9BF,SAAwB5sD,EAAUwtD,EAAeC,GAC/C,IAAI58B,EACF,EAAIuJ,UAAU76B,aAAU,IAAW66B,UAAU,GAAKA,UAAU,GAAK,KACnE,MAAO,CACLxhB,SAAUu2B,EACVte,IAAK,MAAQA,EAAM,KAAO,GAAKA,EAC/B7wB,SAAUA,EACVwtD,cAAeA,EACfC,eAAgBA,EAEpB,CAoBSC,CAAe1tD,EAAUstD,EAAW,KAAMz8B,EACnD,EACA5yB,EAAQ0vD,UAAY,SAAUxY,GAC5B,IAAIyY,EAAqBzc,EAAqBzE,EAC5CmhB,EAAyBf,EAAUx0C,EACrC,IACE,GAAM64B,EAAqBzE,EAAI,KAAQogB,EAAUx0C,EAAI,EAAI68B,EAAK,OAAOA,GACvE,CAAE,QACChE,EAAqBzE,EAAIkhB,EACvBd,EAAUx0C,EAAIu1C,EACff,EAAUh1C,EAAEE,GAChB,CACF,EACA/Z,EAAQ6vD,WAAa,SAAUC,EAAMp0B,GACnC,kBAAoBo0B,IACjBp0B,EAEIA,EACC,kBAFAA,EAAUA,EAAQq0B,aAGd,oBAAsBr0B,EACpBA,EACA,QACF,EACLA,EAAU,KACfmzB,EAAUh1C,EAAEuF,EAAE0wC,EAAMp0B,GACxB,EACA17B,EAAQgwD,YAAc,SAAUF,GAC9B,kBAAoBA,GAAQjB,EAAUh1C,EAAEi1C,EAAEgB,EAC5C,EACA9vD,EAAQiwD,QAAU,SAAUH,EAAMp0B,GAChC,GAAI,kBAAoBo0B,GAAQp0B,GAAW,kBAAoBA,EAAQwzB,GAAI,CACzE,IAAIA,EAAKxzB,EAAQwzB,GACfa,EAAcd,EAAuBC,EAAIxzB,EAAQq0B,aACjDG,EACE,kBAAoBx0B,EAAQw0B,UAAYx0B,EAAQw0B,eAAY,EAC9DC,EACE,kBAAoBz0B,EAAQy0B,cACxBz0B,EAAQy0B,mBACR,EACR,UAAYjB,EACRL,EAAUh1C,EAAEtD,EACVu5C,EACA,kBAAoBp0B,EAAQ00B,WAAa10B,EAAQ00B,gBAAa,EAC9D,CACEL,YAAaA,EACbG,UAAWA,EACXC,cAAeA,IAGnB,WAAajB,GACbL,EAAUh1C,EAAE4G,EAAEqvC,EAAM,CAClBC,YAAaA,EACbG,UAAWA,EACXC,cAAeA,EACfE,MAAO,kBAAoB30B,EAAQ20B,MAAQ30B,EAAQ20B,WAAQ,GAEnE,CACF,EACArwD,EAAQswD,cAAgB,SAAUR,EAAMp0B,GACtC,GAAI,kBAAoBo0B,EACtB,GAAI,kBAAoBp0B,GAAW,OAASA,GAC1C,GAAI,MAAQA,EAAQwzB,IAAM,WAAaxzB,EAAQwzB,GAAI,CACjD,IAAIa,EAAcd,EAChBvzB,EAAQwzB,GACRxzB,EAAQq0B,aAEVlB,EAAUh1C,EAAEyH,EAAEwuC,EAAM,CAClBC,YAAaA,EACbG,UACE,kBAAoBx0B,EAAQw0B,UAAYx0B,EAAQw0B,eAAY,EAC9DG,MAAO,kBAAoB30B,EAAQ20B,MAAQ30B,EAAQ20B,WAAQ,GAE/D,OACK,MAAQ30B,GAAWmzB,EAAUh1C,EAAEyH,EAAEwuC,EAC5C,EACA9vD,EAAQuwD,QAAU,SAAUT,EAAMp0B,GAChC,GACE,kBAAoBo0B,GACpB,kBAAoBp0B,GACpB,OAASA,GACT,kBAAoBA,EAAQwzB,GAC5B,CACA,IAAIA,EAAKxzB,EAAQwzB,GACfa,EAAcd,EAAuBC,EAAIxzB,EAAQq0B,aACnDlB,EAAUh1C,EAAEk1C,EAAEe,EAAMZ,EAAI,CACtBa,YAAaA,EACbG,UACE,kBAAoBx0B,EAAQw0B,UAAYx0B,EAAQw0B,eAAY,EAC9DG,MAAO,kBAAoB30B,EAAQ20B,MAAQ30B,EAAQ20B,WAAQ,EAC3DtvD,KAAM,kBAAoB26B,EAAQ36B,KAAO26B,EAAQ36B,UAAO,EACxDovD,cACE,kBAAoBz0B,EAAQy0B,cACxBz0B,EAAQy0B,mBACR,EACNK,eACE,kBAAoB90B,EAAQ80B,eACxB90B,EAAQ80B,oBACR,EACNC,YACE,kBAAoB/0B,EAAQ+0B,YAAc/0B,EAAQ+0B,iBAAc,EAClEC,WACE,kBAAoBh1B,EAAQg1B,WAAah1B,EAAQg1B,gBAAa,EAChEC,MAAO,kBAAoBj1B,EAAQi1B,MAAQj1B,EAAQi1B,WAAQ,GAE/D,CACF,EACA3wD,EAAQ4wD,cAAgB,SAAUd,EAAMp0B,GACtC,GAAI,kBAAoBo0B,EACtB,GAAIp0B,EAAS,CACX,IAAIq0B,EAAcd,EAAuBvzB,EAAQwzB,GAAIxzB,EAAQq0B,aAC7DlB,EAAUh1C,EAAEM,EAAE21C,EAAM,CAClBZ,GACE,kBAAoBxzB,EAAQwzB,IAAM,WAAaxzB,EAAQwzB,GACnDxzB,EAAQwzB,QACR,EACNa,YAAaA,EACbG,UACE,kBAAoBx0B,EAAQw0B,UAAYx0B,EAAQw0B,eAAY,GAElE,MAAOrB,EAAUh1C,EAAEM,EAAE21C,EACzB,EACA9vD,EAAQ6wD,iBAAmB,SAAUC,GACnCjC,EAAUh1C,EAAEa,EAAEo2C,EAChB,EACA9wD,EAAQ+wD,wBAA0B,SAAU7Z,EAAIz8B,GAC9C,OAAOy8B,EAAGz8B,EACZ,EACAza,EAAQgxD,aAAe,SAAUhY,EAAQC,EAAcC,GACrD,OAAOhG,EAAqBzhB,EAAEu/B,aAAahY,EAAQC,EAAcC,EACnE,EACAl5C,EAAQixD,cAAgB,WACtB,OAAO/d,EAAqBzhB,EAAEy/B,yBAChC,EACAlxD,EAAQ46C,QAAU,sCC9MhB76C,EAAOC,QAAU,EAAjBD,2GCHK,IAII0F,EAAU,OACVD,EAAU,OACVE,EAAc,OAIdyrD,EAAS,UAKTC,EAAY,aACZC,EAAY,aAIZC,EAAQ,sCCNnB,IAAIC,EAAYjpD,EAAQ,MACtBomD,EAAQpmD,EAAQ,MAChBkpD,EAAWlpD,EAAQ,MACrB,SAASqmD,EAAuBr/C,GAC9B,IAAIs/C,EAAM,4BAA8Bt/C,EACxC,GAAI,EAAI6sB,UAAU76B,OAAQ,CACxBstD,GAAO,WAAa1Q,mBAAmB/hB,UAAU,IACjD,IAAK,IAAI37B,EAAI,EAAGA,EAAI27B,UAAU76B,OAAQd,IACpCouD,GAAO,WAAa1Q,mBAAmB/hB,UAAU37B,GACrD,CACA,MACE,yBACA8O,EACA,WACAs/C,EACA,gHAEJ,CACA,SAAS6C,EAAiB/vD,GACxB,SACGA,GACA,IAAMA,EAAK4tD,UAAY,IAAM5tD,EAAK4tD,UAAY,KAAO5tD,EAAK4tD,SAE/D,CACA,IAAIoC,EAA4Bh4C,OAAOC,IAAI,iBACzCuf,EAAqBxf,OAAOC,IAAI,8BAChCu3B,EAAoBx3B,OAAOC,IAAI,gBAC/Bwf,EAAsBzf,OAAOC,IAAI,kBACjCw3B,EAAyBz3B,OAAOC,IAAI,qBACpCy3B,EAAsB13B,OAAOC,IAAI,kBACjCg4C,EAAsBj4C,OAAOC,IAAI,kBACjC03B,EAAsB33B,OAAOC,IAAI,kBACjC23B,EAAqB53B,OAAOC,IAAI,iBAChC43B,EAAyB73B,OAAOC,IAAI,qBACpC63B,EAAsB93B,OAAOC,IAAI,kBACjCi4C,EAA2Bl4C,OAAOC,IAAI,uBACtC83B,EAAkB/3B,OAAOC,IAAI,cAC7B+3B,EAAkBh4B,OAAOC,IAAI,cAC/BD,OAAOC,IAAI,eACXD,OAAOC,IAAI,0BACX,IAAIk4C,EAAuBn4C,OAAOC,IAAI,mBACtCD,OAAOC,IAAI,uBACXD,OAAOC,IAAI,wBACX,IAAIm4C,EAA4Bp4C,OAAOC,IAAI,6BACzCg4B,EAAwBj4B,OAAOk4B,SACjC,SAASmgB,EAAcvd,GACrB,OAAI,OAASA,GAAiB,kBAAoBA,EAAsB,KAIjE,oBAHPA,EACG7C,GAAyB6C,EAAc7C,IACxC6C,EAAc,eAC6BA,EAAgB,IAC/D,CACA,IAAIwd,EAAyBt4C,OAAOC,IAAI,0BACxC,SAASs4C,EAAyBlxD,GAChC,GAAI,MAAQA,EAAM,OAAO,KACzB,GAAI,oBAAsBA,EACxB,OAAOA,EAAK4Z,WAAaq3C,EACrB,KACAjxD,EAAKmxD,aAAenxD,EAAKwG,MAAQ,KACvC,GAAI,kBAAoBxG,EAAM,OAAOA,EACrC,OAAQA,GACN,KAAKo4B,EACH,MAAO,WACT,KAAK+X,EACH,MAAO,SACT,KAAKE,EACH,MAAO,WACT,KAAKD,EACH,MAAO,aACT,KAAKK,EACH,MAAO,WACT,KAAKogB,EACH,MAAO,eAEX,GAAI,kBAAoB7wD,EACtB,OAAQA,EAAK4Z,UACX,KAAK22B,EACH,OAAQvwC,EAAKmxD,aAAe,WAAa,YAC3C,KAAK7gB,EACH,OAAQtwC,EAAK62C,SAASsa,aAAe,WAAa,YACpD,KAAK3gB,EACH,IAAI4gB,EAAYpxD,EAAKk3C,OAKrB,OAJAl3C,EAAOA,EAAKmxD,eAGTnxD,EAAO,MADNA,EAAOoxD,EAAUD,aAAeC,EAAU5qD,MAAQ,IAC9B,cAAgBxG,EAAO,IAAM,cAC9CA,EACT,KAAK0wC,EACH,OAEE,QADC0gB,EAAYpxD,EAAKmxD,aAAe,MAE7BC,EACAF,EAAyBlxD,EAAKA,OAAS,OAE/C,KAAK2wC,EACHygB,EAAYpxD,EAAKwzC,SACjBxzC,EAAOA,EAAKuzC,MACZ,IACE,OAAO2d,EAAyBlxD,EAAKoxD,GACvC,CAAE,MAAO9sD,GAAI,EAEnB,OAAO,IACT,CACA,IAGE+sD,EACAC,EAJEnf,EACAwb,EAAM3X,gEACR/rC,EAAS5D,OAAO4D,OAGlB,SAASsnD,EAA8B/qD,GACrC,QAAI,IAAW6qD,EACb,IACE,MAAMvf,OACR,CAAE,MAAOxtC,GACP,IAAIuuC,EAAQvuC,EAAEqoC,MAAM1qC,OAAO4wC,MAAM,gBACjCwe,EAAUxe,GAASA,EAAM,IAAO,GAChCye,GACG,EAAIhtD,EAAEqoC,MAAM5+B,QAAQ,YACjB,kBACC,EAAIzJ,EAAEqoC,MAAM5+B,QAAQ,KACnB,eACA,EACV,CACF,MAAO,KAAOsjD,EAAS7qD,EAAO8qD,CAChC,CACA,IAAIE,GAAU,EACd,SAASC,EAA6Btb,EAAIub,GACxC,IAAKvb,GAAMqb,EAAS,MAAO,GAC3BA,GAAU,EACV,IAAIG,EAA4B7f,MAAM8f,kBACtC9f,MAAM8f,uBAAoB,EAC1B,IACE,IAAIC,EAAiB,CACnBC,4BAA6B,WAC3B,IACE,GAAIJ,EAAW,CACb,IAAIK,EAAO,WACT,MAAMjgB,OACR,EAMA,GALAzrC,OAAO0zB,eAAeg4B,EAAKn4B,UAAW,QAAS,CAC7Co4B,IAAK,WACH,MAAMlgB,OACR,IAEE,kBAAoBmgB,SAAWA,QAAQP,UAAW,CACpD,IACEO,QAAQP,UAAUK,EAAM,GAC1B,CAAE,MAAOztD,GACP,IAAI4tD,EAAU5tD,CAChB,CACA2tD,QAAQP,UAAUvb,EAAI,GAAI4b,EAC5B,KAAO,CACL,IACEA,EAAKtmD,MACP,CAAE,MAAO0mD,GACPD,EAAUC,CACZ,CACAhc,EAAG1qC,KAAKsmD,EAAKn4B,UACf,CACF,KAAO,CACL,IACE,MAAMkY,OACR,CAAE,MAAOsgB,GACPF,EAAUE,CACZ,EACCL,EAAO5b,MACN,oBAAsB4b,EAAKM,OAC3BN,EAAKM,OAAM,WAAa,GAC5B,CACF,CAAE,MAAOC,GACP,GAAIA,GAAUJ,GAAW,kBAAoBI,EAAO3lB,MAClD,MAAO,CAAC2lB,EAAO3lB,MAAOulB,EAAQvlB,MAClC,CACA,MAAO,CAAC,KAAM,KAChB,GAEFklB,EAAeC,4BAA4BX,YACzC,8BACF,IAAIoB,EAAqBlsD,OAAO4zB,yBAC9B43B,EAAeC,4BACf,QAEFS,GACEA,EAAmB13B,cACnBx0B,OAAO0zB,eACL83B,EAAeC,4BACf,OACA,CAAElxD,MAAO,gCAEb,IAAI4xD,EAAwBX,EAAeC,8BACzCW,EAAcD,EAAsB,GACpCE,EAAeF,EAAsB,GACvC,GAAIC,GAAeC,EAAc,CAC/B,IAAIC,EAAcF,EAAYG,MAAM,MAClCC,EAAeH,EAAaE,MAAM,MACpC,IACEL,EAAqBV,EAAiB,EACtCA,EAAiBc,EAAYpyD,SAC5BoyD,EAAYd,GAAgBhT,SAAS,gCAGtCgT,IACF,KAEEU,EAAqBM,EAAatyD,SACjCsyD,EAAaN,GAAoB1T,SAChC,gCAIF0T,IACF,GACEV,IAAmBc,EAAYpyD,QAC/BgyD,IAAuBM,EAAatyD,OAEpC,IACEsxD,EAAiBc,EAAYpyD,OAAS,EACpCgyD,EAAqBM,EAAatyD,OAAS,EAC7C,GAAKsxD,GACL,GAAKU,GACLI,EAAYd,KAAoBgB,EAAaN,IAG7CA,IACJ,KAEE,GAAKV,GAAkB,GAAKU,EAC5BV,IAAkBU,IAElB,GAAII,EAAYd,KAAoBgB,EAAaN,GAAqB,CACpE,GAAI,IAAMV,GAAkB,IAAMU,EAChC,MAEKV,IAED,IADAU,GAEEI,EAAYd,KACVgB,EAAaN,GACjB,CACA,IAAIO,EACF,KACAH,EAAYd,GAAgBluD,QAAQ,WAAY,QAIlD,OAHAwyC,EAAGgb,aACD2B,EAAMjU,SAAS,iBACdiU,EAAQA,EAAMnvD,QAAQ,cAAewyC,EAAGgb,cACpC2B,CACT,QACK,GAAKjB,GAAkB,GAAKU,GAErC,KACF,CACJ,CACF,CAAE,QACCf,GAAU,EAAM1f,MAAM8f,kBAAoBD,CAC7C,CACA,OAAQA,EAA4Bxb,EAAKA,EAAGgb,aAAehb,EAAG3vC,KAAO,IACjE+qD,EAA8BI,GAC9B,EACN,CACA,SAASoB,EAAcC,GACrB,OAAQA,EAAM5T,KACZ,KAAK,GACL,KAAK,GACL,KAAK,EACH,OAAOmS,EAA8ByB,EAAMhzD,MAC7C,KAAK,GACH,OAAOuxD,EAA8B,QACvC,KAAK,GACH,OAAOA,EAA8B,YACvC,KAAK,GACH,OAAOA,EAA8B,gBACvC,KAAK,EACL,KAAK,GACH,OAAQyB,EAAQvB,EAA6BuB,EAAMhzD,MAAM,GAC3D,KAAK,GACH,OACGgzD,EAAQvB,EAA6BuB,EAAMhzD,KAAKk3C,QAAQ,GAE7D,KAAK,EACH,OAAQ8b,EAAQvB,EAA6BuB,EAAMhzD,MAAM,GAC3D,QACE,MAAO,GAEb,CACA,SAASizD,EAA4BC,GACnC,IACE,IAAIC,EAAO,GACX,GACGA,GAAQJ,EAAcG,GACpBA,EAAiBA,EAAehyD,aAC9BgyD,GACP,OAAOC,CACT,CAAE,MAAO7uD,GACP,MAAO,6BAA+BA,EAAEuuB,QAAU,KAAOvuB,EAAEqoC,KAC7D,CACF,CACA,SAASymB,EAAuBJ,GAC9B,IAAIryD,EAAOqyD,EACTK,EAAiBL,EACnB,GAAIA,EAAMM,UAAW,KAAO3yD,EAAKO,QAAUP,EAAOA,EAAKO,WAClD,CACH8xD,EAAQryD,EACR,GAEI,KAAoB,MADrBA,EAAOqyD,GACMO,SAAkBF,EAAiB1yD,EAAKO,QACnD8xD,EAAQryD,EAAKO,aACX8xD,EACT,CACA,OAAO,IAAMryD,EAAKy+C,IAAMiU,EAAiB,IAC3C,CACA,SAASG,EAA6BR,GACpC,GAAI,KAAOA,EAAM5T,IAAK,CACpB,IAAIqU,EAAgBT,EAAMU,cAI1B,GAHA,OAASD,IAEP,QADET,EAAQA,EAAMM,aACGG,EAAgBT,EAAMU,gBACvC,OAASD,EAAe,OAAOA,EAAcE,UACnD,CACA,OAAO,IACT,CACA,SAASC,EAAgBZ,GACvB,GAAII,EAAuBJ,KAAWA,EACpC,MAAMlhB,MAAM8b,EAAuB,KACvC,CAqEA,SAASiG,EAAyBlzD,GAChC,IAAIy+C,EAAMz+C,EAAKy+C,IACf,GAAI,IAAMA,GAAO,KAAOA,GAAO,KAAOA,GAAO,IAAMA,EAAK,OAAOz+C,EAC/D,IAAKA,EAAOA,EAAKwqC,MAAO,OAASxqC,GAAQ,CAEvC,GAAI,QADJy+C,EAAMyU,EAAyBlzD,IACb,OAAOy+C,EACzBz+C,EAAOA,EAAKmzD,OACd,CACA,OAAO,IACT,CACA,IAAI5hB,EAAc9X,MAAMF,QACtB65B,EACEtD,EAASrC,6DACX4F,EAAyB,CACvBC,SAAS,EACTvsD,KAAM,KACNwsD,OAAQ,KACRjc,OAAQ,MAEVkc,EAAa,GACb9xD,GAAS,EACX,SAAS+xD,EAAa7d,GACpB,MAAO,CAAEnpC,QAASmpC,EACpB,CACA,SAASpvC,EAAIktD,GACX,EAAIhyD,IACAgyD,EAAOjnD,QAAU+mD,EAAW9xD,GAAU8xD,EAAW9xD,GAAS,KAAOA,IACvE,CACA,SAAS3C,EAAK20D,EAAQzzD,GACpByB,IACA8xD,EAAW9xD,GAASgyD,EAAOjnD,QAC3BinD,EAAOjnD,QAAUxM,CACnB,CACA,IAAI0zD,EAAqBF,EAAa,MACpCG,EAA0BH,EAAa,MACvCI,EAA0BJ,EAAa,MACvCK,EAA+BL,EAAa,MAC9C,SAASM,EAAkB1B,EAAO2B,GAKhC,OAJAj1D,EAAK80D,EAAyBG,GAC9Bj1D,EAAK60D,EAAyBvB,GAC9BtzD,EAAK40D,EAAoB,MACzBtB,EAAQ2B,EAAiBpG,UAEvB,KAAK,EACL,KAAK,GACHoG,GAAoBA,EAAmBA,EAAiBC,mBACnDD,EAAmBA,EAAiB5nD,cACnC8nD,GAAkBF,GAEpB,EACJ,MACF,QACE,GAEGA,GADC3B,EAAQ,IAAMA,EAAQ2B,EAAiBG,WAAaH,GAC5B/0D,QACzBozD,EAAQA,EAAMjmD,aAGZ4nD,EAAmBI,GADrB/B,EAAQ6B,GAAkB7B,GAC0B2B,QAErD,OAAQA,GACN,IAAK,MACHA,EAAmB,EACnB,MACF,IAAK,OACHA,EAAmB,EACnB,MACF,QACEA,EAAmB,GAG7BxtD,EAAImtD,GACJ50D,EAAK40D,EAAoBK,EAC3B,CACA,SAASK,KACP7tD,EAAImtD,GACJntD,EAAIotD,GACJptD,EAAIqtD,EACN,CACA,SAASS,GAAgBjC,GACvB,OAASA,EAAMU,eAAiBh0D,EAAK+0D,EAA8BzB,GACnE,IAAI3hB,EAAUijB,EAAmBlnD,QAC7B8nD,EAA2BH,GAAwB1jB,EAAS2hB,EAAMhzD,MACtEqxC,IAAY6jB,IACTx1D,EAAK60D,EAAyBvB,GAC/BtzD,EAAK40D,EAAoBY,GAC7B,CACA,SAASC,GAAenC,GACtBuB,EAAwBnnD,UAAY4lD,IACjC7rD,EAAImtD,GAAqBntD,EAAIotD,IAChCE,EAA6BrnD,UAAY4lD,IACtC7rD,EAAIstD,GACJW,GAAsB5e,cAAgBwd,EAC3C,CACA,IAAIn6B,GAAiBxzB,OAAOuzB,UAAUC,eACpCw7B,GAAqB7E,EAAU1J,0BAC/BwO,GAAmB9E,EAAUtK,wBAC7BqP,GAAc/E,EAAUvJ,qBACxBuO,GAAehF,EAAU5J,sBACzB9D,GAAM0N,EAAU5N,aAChB6S,GAA0BjF,EAAUjK,iCACpCmP,GAAoBlF,EAAU3K,2BAC9B8P,GAAuBnF,EAAUvK,8BACjC2P,GAAmBpF,EAAUzK,wBAC7B8P,GAAcrF,EAAU1K,qBACxBgQ,GAAetF,EAAU5K,sBACzBmQ,GAAQvF,EAAUwF,IAClBC,GAAgCzF,EAAUyF,8BAC1CC,GAAa,KACbC,GAAe,KAYjB,SAASC,GAA2BC,GAElC,GADA,oBAAsBN,IAASE,GAA8BI,GACzDF,IAAgB,oBAAsBA,GAAaG,cACrD,IACEH,GAAaG,cAAcJ,GAAYG,EACzC,CAAE,MAAOltC,GAAM,CACnB,CACA,IAAIotC,GAAQxlC,KAAKwlC,MAAQxlC,KAAKwlC,MAG9B,SAAuBjyD,GAErB,OAAO,KADPA,KAAO,GACU,GAAM,IAAO0xD,GAAI1xD,GAAKkyD,GAAO,GAAM,CACtD,EALER,GAAMjlC,KAAKilC,IACXQ,GAAMzlC,KAAKylC,IAKb,IAAIC,GAAqB,IACvBC,GAAgB,QAClB,SAASC,GAAwBC,GAC/B,IAAIC,EAA2B,GAARD,EACvB,GAAI,IAAMC,EAAkB,OAAOA,EACnC,OAAQD,GAASA,GACf,KAAK,EACH,OAAO,EACT,KAAK,EACH,OAAO,EACT,KAAK,EACH,OAAO,EACT,KAAK,EACH,OAAO,EACT,KAAK,GACH,OAAO,GACT,KAAK,GACH,OAAO,GACT,KAAK,GACH,OAAO,GACT,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,OACL,KAAK,OACL,KAAK,OACL,KAAK,QACL,KAAK,QACH,OAAe,QAARA,EACT,KAAK,QACL,KAAK,QACL,KAAK,SACL,KAAK,SACH,OAAe,SAARA,EACT,KAAK,SACH,OAAO,SACT,KAAK,UACH,OAAO,UACT,KAAK,UACH,OAAO,UACT,KAAK,UACH,OAAO,UACT,KAAK,WACH,OAAO,EACT,QACE,OAAOA,EAEb,CACA,SAASE,GAAaj2D,EAAMk2D,GAC1B,IAAIC,EAAen2D,EAAKm2D,aACxB,GAAI,IAAMA,EAAc,OAAO,EAC/B,IAAIC,EAAY,EACdC,EAAiBr2D,EAAKq2D,eACtBC,EAAct2D,EAAKs2D,YACnBC,EAAYv2D,EAAKu2D,UACnBv2D,EAAO,IAAMA,EAAKw2D,cAClB,IAAIC,EAAqC,UAAfN,EAqB1B,OApBA,IAAMM,EAEF,KADEN,EAAeM,GAAuBJ,GAEnCD,EAAYN,GAAwBK,GAErC,KADEG,GAAeG,GAEZL,EAAYN,GAAwBQ,GACrCt2D,GAEA,KADEu2D,EAAYE,GAAuBF,KAElCH,EAAYN,GAAwBS,IAE/C,KADEE,EAAsBN,GAAgBE,GAEnCD,EAAYN,GAAwBW,GACrC,IAAMH,EACHF,EAAYN,GAAwBQ,GACrCt2D,GAEA,KADEu2D,EAAYJ,GAAgBI,KAE3BH,EAAYN,GAAwBS,IAC1C,IAAMH,EACT,EACA,IAAMF,GACJA,IAAaE,GACb,KAAOF,EAAWG,MAChBA,EAAiBD,GAAaA,KAC/BG,EAAYL,GAAYA,IAEtB,KAAOG,GAAkB,KAAmB,QAAZE,IACnCL,EACAE,CACR,CACA,SAASM,GAA0B12D,EAAM22D,GACvC,OACE,KACC32D,EAAKm2D,eACFn2D,EAAKq2D,gBAAkBr2D,EAAKs2D,aAC9BK,EAEN,CACA,SAASC,GAAsBzL,EAAM9H,GACnC,OAAQ8H,GACN,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,OAAO9H,EAAc,IACvB,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,OACL,KAAK,OACL,KAAK,OACL,KAAK,QACL,KAAK,QACH,OAAOA,EAAc,IAYvB,QACE,OAAQ,EAEd,CACA,SAASwT,KACP,IAAI1L,EAAOyK,GAGX,OADA,KAA4B,SAD5BA,KAAuB,MACkBA,GAAqB,KACvDzK,CACT,CACA,SAAS2L,KACP,IAAI3L,EAAO0K,GAGX,OADA,KAAuB,UADvBA,KAAkB,MACmBA,GAAgB,SAC9C1K,CACT,CACA,SAAS4L,GAAcC,GACrB,IAAK,IAAIC,EAAU,GAAIr4D,EAAI,EAAG,GAAKA,EAAGA,IAAKq4D,EAAQp4D,KAAKm4D,GACxD,OAAOC,CACT,CACA,SAASC,GAAkBl3D,EAAMm3D,GAC/Bn3D,EAAKm2D,cAAgBgB,EACrB,YAAcA,IACVn3D,EAAKq2D,eAAiB,EAAKr2D,EAAKs2D,YAAc,EAAKt2D,EAAKu2D,UAAY,EAC1E,CAiDA,SAASa,GAAwBp3D,EAAMq3D,EAAaC,GAClDt3D,EAAKm2D,cAAgBkB,EACrBr3D,EAAKq2D,iBAAmBgB,EACxB,IAAIE,EAAmB,GAAK7B,GAAM2B,GAClCr3D,EAAKs3D,gBAAkBD,EACvBr3D,EAAKw3D,cAAcD,GAEjB,WADAv3D,EAAKw3D,cAAcD,GAED,QAAjBD,CACL,CACA,SAASG,GAAkBz3D,EAAMs3D,GAC/B,IAAII,EAAsB13D,EAAKs3D,gBAAkBA,EACjD,IAAKt3D,EAAOA,EAAKw3D,cAAeE,GAAsB,CACpD,IAAIC,EAAU,GAAKjC,GAAMgC,GACvBvM,EAAO,GAAKwM,EACbxM,EAAOmM,EAAmBt3D,EAAK23D,GAAWL,IACxCt3D,EAAK23D,IAAYL,GACpBI,IAAuBvM,CACzB,CACF,CACA,SAASyM,GAAqB7B,GAE5B,OAAO,GADPA,IAAUA,GAEN,EAAIA,EACF,KAAe,UAARA,GACL,GACA,UACF,EACF,CACN,CACA,SAAS8B,KACP,IAAIC,EAAiB5E,EAAwBz6C,EAC7C,OAAI,IAAMq/C,EAAuBA,OAE1B,KADPA,EAAiB7jB,OAAOE,OACW,GAAK4jB,GAAiBD,EAAe34D,KAC1E,CASA,IAAI64D,GAAY9nC,KAAKsE,SAASlB,SAAS,IAAI3yB,MAAM,GAC/Cs3D,GAAsB,gBAAkBD,GACxCE,GAAmB,gBAAkBF,GACrCG,GAA+B,oBAAsBH,GACrDI,GAA2B,iBAAmBJ,GAC9CK,GAAmC,oBAAsBL,GACzDM,GAA6B,kBAAoBN,GACjDO,GAA+B,oBAAsBP,GACrDQ,GAA0B,iBAAmBR,GAC/C,SAASS,GAAsB34D,UACtBA,EAAKm4D,WACLn4D,EAAKo4D,WACLp4D,EAAKs4D,WACLt4D,EAAKu4D,WACLv4D,EAAKw4D,GACd,CACA,SAASI,GAA2BC,GAClC,IAAIC,EAAaD,EAAWV,IAC5B,GAAIW,EAAY,OAAOA,EACvB,IAAK,IAAI3E,EAAa0E,EAAW1E,WAAYA,GAAc,CACzD,GACG2E,EACC3E,EAAWkE,KACXlE,EAAWgE,IACb,CAEA,GADAhE,EAAa2E,EAAWnG,UAEtB,OAASmG,EAAWtuB,OACnB,OAAS2pB,GAAc,OAASA,EAAW3pB,MAE5C,IACEquB,EAAaE,GAA0BF,GACvC,OAASA,GAET,CACA,GAAK1E,EAAa0E,EAAWV,IAAuB,OAAOhE,EAC3D0E,EAAaE,GAA0BF,EACzC,CACF,OAAOC,CACT,CAEA3E,GADA0E,EAAa1E,GACWA,UAC1B,CACA,OAAO,IACT,CACA,SAAS6E,GAAoBh5D,GAC3B,GACGA,EAAOA,EAAKm4D,KAAwBn4D,EAAKq4D,IAC1C,CACA,IAAI5Z,EAAMz+C,EAAKy+C,IACf,GACE,IAAMA,GACN,IAAMA,GACN,KAAOA,GACP,KAAOA,GACP,KAAOA,GACP,IAAMA,EAEN,OAAOz+C,CACX,CACA,OAAO,IACT,CACA,SAASi5D,GAAoBC,GAC3B,IAAIza,EAAMya,EAAKza,IACf,GAAI,IAAMA,GAAO,KAAOA,GAAO,KAAOA,GAAO,IAAMA,EAAK,OAAOya,EAAKC,UACpE,MAAMhoB,MAAM8b,EAAuB,IACrC,CACA,SAASmM,GAAqBl5D,GAC5B,IAAIm5D,EAAYn5D,EAAKu4D,IAIrB,OAHAY,IACGA,EAAYn5D,EAAKu4D,IAChB,CAAEa,gBAAiB,IAAIC,IAAOC,iBAAkB,IAAID,MACjDF,CACT,CACA,SAASI,GAAoBz5D,GAC3BA,EAAK04D,KAA2B,CAClC,CACA,IAAIgB,GAAkB,IAAIC,IACxBC,GAA+B,CAAC,EAClC,SAASC,GAAsBC,EAAkBC,GAC/CC,GAAoBF,EAAkBC,GACtCC,GAAoBF,EAAmB,UAAWC,EACpD,CACA,SAASC,GAAoBF,EAAkBC,GAE7C,IADAH,GAA6BE,GAAoBC,EAE/CD,EAAmB,EACnBA,EAAmBC,EAAan6D,OAChCk6D,IAEAJ,GAAgBn+B,IAAIw+B,EAAaD,GACrC,CACA,IAAIG,KACA,qBAAuB9lB,QACvB,qBAAuBA,OAAO31C,UAC9B,qBAAuB21C,OAAO31C,SAASmkC,eAEzCu3B,GAA6BC,OAC3B,iZAEFC,GAA4B,CAAC,EAC7BC,GAA8B,CAAC,EAUjC,SAASC,GAAqBt6D,EAAM6F,EAAM5F,GACxC,GAV2Bs6D,EAUH10D,EATpBqzB,GAAepuB,KAAKuvD,GAA6BE,KAEjDrhC,GAAepuB,KAAKsvD,GAA2BG,KAC/CL,GAA2BzyD,KAAK8yD,GAC1BF,GAA4BE,IAAiB,GACvDH,GAA0BG,IAAiB,EACpC,IAIL,GAAI,OAASt6D,EAAOD,EAAKw6D,gBAAgB30D,OACpC,CACH,cAAe5F,GACb,IAAK,YACL,IAAK,WACL,IAAK,SAEH,YADAD,EAAKw6D,gBAAgB30D,GAEvB,IAAK,UACH,IAAI40D,EAAY50D,EAAKkI,cAAclN,MAAM,EAAG,GAC5C,GAAI,UAAY45D,GAAa,UAAYA,EAEvC,YADAz6D,EAAKw6D,gBAAgB30D,GAI3B7F,EAAK06D,aAAa70D,EAAM,GAAK5F,EAC/B,CA3BJ,IAA6Bs6D,CA4B7B,CACA,SAASI,GAA0B36D,EAAM6F,EAAM5F,GAC7C,GAAI,OAASA,EAAOD,EAAKw6D,gBAAgB30D,OACpC,CACH,cAAe5F,GACb,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,UAEH,YADAD,EAAKw6D,gBAAgB30D,GAGzB7F,EAAK06D,aAAa70D,EAAM,GAAK5F,EAC/B,CACF,CACA,SAAS26D,GAA+B56D,EAAM66D,EAAWh1D,EAAM5F,GAC7D,GAAI,OAASA,EAAOD,EAAKw6D,gBAAgB30D,OACpC,CACH,cAAe5F,GACb,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,UAEH,YADAD,EAAKw6D,gBAAgB30D,GAGzB7F,EAAK86D,eAAeD,EAAWh1D,EAAM,GAAK5F,EAC5C,CACF,CACA,SAAS86D,GAAiB96D,GACxB,cAAeA,GACb,IAAK,SACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,YAEL,IAAK,SACH,OAAOA,EACT,QACE,MAAO,GAEb,CACA,SAAS+6D,GAAYC,GACnB,IAAI57D,EAAO47D,EAAK57D,KAChB,OACG47D,EAAOA,EAAKC,WACb,UAAYD,EAAKltD,gBAChB,aAAe1O,GAAQ,UAAYA,EAExC,CA2CA,SAAS87D,GAAMn7D,GACbA,EAAKo7D,gBAAkBp7D,EAAKo7D,cA3C9B,SAA0Bp7D,GACxB,IAAIq7D,EAAaL,GAAYh7D,GAAQ,UAAY,QAC/Cs7D,EAAa51D,OAAO4zB,yBAClBt5B,EAAKkE,YAAY+0B,UACjBoiC,GAEFE,EAAe,GAAKv7D,EAAKq7D,GAC3B,IACGr7D,EAAKk5B,eAAemiC,IACrB,qBAAuBC,GACvB,oBAAsBA,EAAWE,KACjC,oBAAsBF,EAAWjK,IACjC,CACA,IAAImK,EAAMF,EAAWE,IACnBnK,EAAMiK,EAAWjK,IAcnB,OAbA3rD,OAAO0zB,eAAep5B,EAAMq7D,EAAY,CACtCnhC,cAAc,EACdshC,IAAK,WACH,OAAOA,EAAI1wD,KAAK1G,KAClB,EACAitD,IAAK,SAAUpxD,GACbs7D,EAAe,GAAKt7D,EACpBoxD,EAAIvmD,KAAK1G,KAAMnE,EACjB,IAEFyF,OAAO0zB,eAAep5B,EAAMq7D,EAAY,CACtCphC,WAAYqhC,EAAWrhC,aAElB,CACLwhC,SAAU,WACR,OAAOF,CACT,EACAG,SAAU,SAAUz7D,GAClBs7D,EAAe,GAAKt7D,CACtB,EACA07D,aAAc,WACZ37D,EAAKo7D,cAAgB,YACdp7D,EAAKq7D,EACd,EAEJ,CACF,CAE8CO,CAAiB57D,GAC/D,CACA,SAAS67D,GAAqB77D,GAC5B,IAAKA,EAAM,OAAO,EAClB,IAAI87D,EAAU97D,EAAKo7D,cACnB,IAAKU,EAAS,OAAO,EACrB,IAAIC,EAAYD,EAAQL,WACpBx7D,EAAQ,GAQZ,OAPAD,IACGC,EAAQ+6D,GAAYh7D,GACjBA,EAAKg8D,QACH,OACA,QACFh8D,EAAKC,QACXD,EAAOC,KACS87D,IAAaD,EAAQJ,SAAS17D,IAAO,EACvD,CACA,SAASi8D,GAAiBC,GAExB,GAAI,qBADJA,EAAMA,IAAQ,qBAAuB19D,SAAWA,cAAW,IAC3B,OAAO,KACvC,IACE,OAAO09D,EAAIt9D,eAAiBs9D,EAAIxb,IAClC,CAAE,MAAOtoC,GACP,OAAO8jD,EAAIxb,IACb,CACF,CACA,IAAIyb,GAAsD,WAC1D,SAASC,GAA+Cn8D,GACtD,OAAOA,EAAM+C,QACXm5D,IACA,SAAUlxC,GACR,MAAO,KAAOA,EAAGqK,WAAW,GAAG9B,SAAS,IAAM,GAChD,GAEJ,CACA,SAAS6oC,GACPn3D,EACAjF,EACA21C,EACA0mB,EACAN,EACAO,EACAl9D,EACAwG,GAEAX,EAAQW,KAAO,GACf,MAAQxG,GACR,oBAAsBA,GACtB,kBAAoBA,GACpB,mBAAqBA,EAChB6F,EAAQ7F,KAAOA,EAChB6F,EAAQs1D,gBAAgB,QACxB,MAAQv6D,EACN,WAAaZ,GACV,IAAMY,GAAS,KAAOiF,EAAQjF,OAAUiF,EAAQjF,OAASA,KAC5DiF,EAAQjF,MAAQ,GAAK86D,GAAiB96D,IAExCiF,EAAQjF,QAAU,GAAK86D,GAAiB96D,KACrCiF,EAAQjF,MAAQ,GAAK86D,GAAiB96D,IAE1C,WAAaZ,GAAQ,UAAYA,GAAS6F,EAAQs1D,gBAAgB,SACrE,MAAQv6D,EACJu8D,GAAgBt3D,EAAS7F,EAAM07D,GAAiB96D,IAChD,MAAQ21C,EACN4mB,GAAgBt3D,EAAS7F,EAAM07D,GAAiBnlB,IAChD,MAAQ0mB,GAAoBp3D,EAAQs1D,gBAAgB,SAC1D,MAAQwB,GACN,MAAQO,IACPr3D,EAAQq3D,iBAAmBA,GAC9B,MAAQP,IACL92D,EAAQ82D,QACPA,GAAW,oBAAsBA,GAAW,kBAAoBA,GACpE,MAAQn2D,GACR,oBAAsBA,GACtB,kBAAoBA,GACpB,mBAAqBA,EAChBX,EAAQW,KAAO,GAAKk1D,GAAiBl1D,GACtCX,EAAQs1D,gBAAgB,OAC9B,CACA,SAASiC,GACPv3D,EACAjF,EACA21C,EACAomB,EACAO,EACAl9D,EACAwG,EACA62D,GAOA,GALA,MAAQr9D,GACN,oBAAsBA,GACtB,kBAAoBA,GACpB,mBAAqBA,IACpB6F,EAAQ7F,KAAOA,GACd,MAAQY,GAAS,MAAQ21C,EAAc,CACzC,KAEK,WAAav2C,GAAQ,UAAYA,QACjC,IAAWY,GAAS,OAASA,GAGhC,OACF21C,EACE,MAAQA,EAAe,GAAKmlB,GAAiBnlB,GAAgB,GAC/D31C,EAAQ,MAAQA,EAAQ,GAAK86D,GAAiB96D,GAAS21C,EACvD8mB,GAAez8D,IAAUiF,EAAQjF,QAAUiF,EAAQjF,MAAQA,GAC3DiF,EAAQ0wC,aAAe31C,CACzB,CAEA+7D,EACE,oBAFFA,EAAU,MAAQA,EAAUA,EAAUO,IAEH,kBAAoBP,KAAaA,EACpE92D,EAAQ82D,QAAUU,EAAcx3D,EAAQ82D,UAAYA,EACpD92D,EAAQq3D,iBAAmBP,EAC3B,MAAQn2D,GACN,oBAAsBA,GACtB,kBAAoBA,GACpB,mBAAqBA,IACpBX,EAAQW,KAAOA,EACpB,CACA,SAAS22D,GAAgBx8D,EAAMX,EAAMY,GAClC,WAAaZ,GAAQ48D,GAAiBj8D,EAAK28D,iBAAmB38D,GAC7DA,EAAK41C,eAAiB,GAAK31C,IAC1BD,EAAK41C,aAAe,GAAK31C,EAC9B,CACA,SAAS28D,GAAc58D,EAAM68D,EAAUC,EAAWC,GAEhD,GADA/8D,EAAOA,EAAKg6B,QACR6iC,EAAU,CACZA,EAAW,CAAC,EACZ,IAAK,IAAI/9D,EAAI,EAAGA,EAAIg+D,EAAUl9D,OAAQd,IACpC+9D,EAAS,IAAMC,EAAUh+D,KAAM,EACjC,IAAKg+D,EAAY,EAAGA,EAAY98D,EAAKJ,OAAQk9D,IAC1Ch+D,EAAI+9D,EAAS3jC,eAAe,IAAMl5B,EAAK88D,GAAW78D,OACjDD,EAAK88D,GAAWE,WAAal+D,IAAMkB,EAAK88D,GAAWE,SAAWl+D,GAC9DA,GAAKi+D,IAAuB/8D,EAAK88D,GAAWG,iBAAkB,EACpE,KAAO,CAGL,IAFAH,EAAY,GAAK/B,GAAiB+B,GAClCD,EAAW,KACN/9D,EAAI,EAAGA,EAAIkB,EAAKJ,OAAQd,IAAK,CAChC,GAAIkB,EAAKlB,GAAGmB,QAAU68D,EAGpB,OAFA98D,EAAKlB,GAAGk+D,UAAW,OACnBD,IAAuB/8D,EAAKlB,GAAGm+D,iBAAkB,IAGnD,OAASJ,GAAY78D,EAAKlB,GAAGo+D,WAAaL,EAAW78D,EAAKlB,GAC5D,CACA,OAAS+9D,IAAaA,EAASG,UAAW,EAC5C,CACF,CACA,SAASG,GAAej4D,EAASjF,EAAO21C,GAEpC,MAAQ31C,KACNA,EAAQ,GAAK86D,GAAiB96D,MACtBiF,EAAQjF,QAAUiF,EAAQjF,MAAQA,GAC5C,MAAQ21C,GAKV1wC,EAAQ0wC,aACN,MAAQA,EAAe,GAAKmlB,GAAiBnlB,GAAgB,GAJ7D1wC,EAAQ0wC,eAAiB31C,IAAUiF,EAAQ0wC,aAAe31C,EAK9D,CACA,SAASm9D,GAAal4D,EAASjF,EAAO21C,EAAcv1C,GAClD,GAAI,MAAQJ,EAAO,CACjB,GAAI,MAAQI,EAAU,CACpB,GAAI,MAAQu1C,EAAc,MAAMzE,MAAM8b,EAAuB,KAC7D,GAAI1b,EAAYlxC,GAAW,CACzB,GAAI,EAAIA,EAAST,OAAQ,MAAMuxC,MAAM8b,EAAuB,KAC5D5sD,EAAWA,EAAS,EACtB,CACAu1C,EAAev1C,CACjB,CACA,MAAQu1C,IAAiBA,EAAe,IACxC31C,EAAQ21C,CACV,CACAA,EAAemlB,GAAiB96D,GAChCiF,EAAQ0wC,aAAeA,GACvBv1C,EAAW6E,EAAQs6C,eACN5J,GACX,KAAOv1C,GACP,OAASA,IACR6E,EAAQjF,MAAQI,EACrB,CACA,SAASg9D,GAAer9D,EAAMk/C,GAC5B,GAAIA,EAAM,CACR,IAAIoe,EAAat9D,EAAKs9D,WACtB,GACEA,GACAA,IAAet9D,EAAKu9D,WACpB,IAAMD,EAAW1P,SAGjB,YADA0P,EAAWE,UAAYte,EAG3B,CACAl/C,EAAKw/C,YAAcN,CACrB,CACA,IAAIue,GAAkB,IAAI9D,IACxB,26BAA26B1H,MACz6B,MAGJ,SAASyL,GAAiBhe,EAAOie,EAAW19D,GAC1C,IAAI29D,EAAmB,IAAMD,EAAUvwD,QAAQ,MAC/C,MAAQnN,GAAS,mBAAqBA,GAAS,KAAOA,EAClD29D,EACEle,EAAM5lB,YAAY6jC,EAAW,IAC7B,UAAYA,EACTje,EAAMme,SAAW,GACjBne,EAAMie,GAAa,GACxBC,EACEle,EAAM5lB,YAAY6jC,EAAW19D,GAC7B,kBAAoBA,GAClB,IAAMA,GACNw9D,GAAgBK,IAAIH,GACpB,UAAYA,EACTje,EAAMme,SAAW59D,EACjBy/C,EAAMie,IAAc,GAAK19D,GAAOqB,OAClCo+C,EAAMie,GAAa19D,EAAQ,IACtC,CACA,SAAS89D,GAAkB/9D,EAAMg+D,EAAQC,GACvC,GAAI,MAAQD,GAAU,kBAAoBA,EACxC,MAAM7sB,MAAM8b,EAAuB,KAErC,GADAjtD,EAAOA,EAAK0/C,MACR,MAAQue,EAAY,CACtB,IAAK,IAAIN,KAAaM,GACnBA,EAAW/kC,eAAeykC,IACxB,MAAQK,GAAUA,EAAO9kC,eAAeykC,KACxC,IAAMA,EAAUvwD,QAAQ,MACrBpN,EAAK85B,YAAY6jC,EAAW,IAC5B,UAAYA,EACT39D,EAAK69D,SAAW,GAChB79D,EAAK29D,GAAa,IAC7B,IAAK,IAAIO,KAAgBF,EACtBL,EAAYK,EAAOE,GAClBF,EAAO9kC,eAAeglC,IACpBD,EAAWC,KAAkBP,GAC7BD,GAAiB19D,EAAMk+D,EAAcP,EAC7C,MACE,IAAK,IAAIQ,KAAgBH,EACvBA,EAAO9kC,eAAeilC,IACpBT,GAAiB19D,EAAMm+D,EAAcH,EAAOG,GACpD,CACA,SAASC,GAAgBn/D,GACvB,IAAK,IAAMA,EAAQmO,QAAQ,KAAM,OAAO,EACxC,OAAQnO,GACN,IAAK,iBACL,IAAK,gBACL,IAAK,YACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,gBACH,OAAO,EACT,QACE,OAAO,EAEb,CACA,IAAIo/D,GAAU,IAAI9E,IAAI,CAClB,CAAC,gBAAiB,kBAClB,CAAC,UAAW,OACZ,CAAC,YAAa,cACd,CAAC,cAAe,eAChB,CAAC,eAAgB,iBACjB,CAAC,oBAAqB,sBACtB,CAAC,aAAc,eACf,CAAC,gBAAiB,kBAClB,CAAC,YAAa,cACd,CAAC,WAAY,aACb,CAAC,WAAY,aACb,CAAC,qBAAsB,uBACvB,CAAC,4BAA6B,+BAC9B,CAAC,eAAgB,iBACjB,CAAC,iBAAkB,mBACnB,CAAC,mBAAoB,qBACrB,CAAC,mBAAoB,qBACrB,CAAC,cAAe,gBAChB,CAAC,WAAY,aACb,CAAC,aAAc,eACf,CAAC,eAAgB,iBACjB,CAAC,aAAc,eACf,CAAC,WAAY,aACb,CAAC,iBAAkB,oBACnB,CAAC,cAAe,gBAChB,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,aAAc,eACf,CAAC,YAAa,cACd,CAAC,6BAA8B,gCAC/B,CAAC,2BAA4B,8BAC7B,CAAC,YAAa,eACd,CAAC,eAAgB,kBACjB,CAAC,iBAAkB,mBACnB,CAAC,gBAAiB,kBAClB,CAAC,gBAAiB,kBAClB,CAAC,YAAa,cACd,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,mBAAoB,qBACrB,CAAC,oBAAqB,sBACtB,CAAC,aAAc,eACf,CAAC,WAAY,YACb,CAAC,gBAAiB,kBAClB,CAAC,kBAAmB,oBACpB,CAAC,iBAAkB,mBACnB,CAAC,YAAa,cACd,CAAC,cAAe,gBAChB,CAAC,wBAAyB,0BAC1B,CAAC,yBAA0B,2BAC3B,CAAC,kBAAmB,oBACpB,CAAC,mBAAoB,qBACrB,CAAC,gBAAiB,kBAClB,CAAC,iBAAkB,mBACnB,CAAC,mBAAoB,qBACrB,CAAC,gBAAiB,kBAClB,CAAC,cAAe,gBAChB,CAAC,aAAc,eACf,CAAC,iBAAkB,mBACnB,CAAC,gBAAiB,kBAClB,CAAC,kBAAmB,oBACpB,CAAC,oBAAqB,sBACtB,CAAC,qBAAsB,uBACvB,CAAC,cAAe,gBAChB,CAAC,eAAgB,iBACjB,CAAC,aAAc,gBACf,CAAC,cAAe,gBAChB,CAAC,WAAY,aACb,CAAC,eAAgB,iBACjB,CAAC,gBAAiB,kBAClB,CAAC,eAAgB,iBACjB,CAAC,WAAY,cACb,CAAC,cAAe,iBAChB,CAAC,cAAe,iBAChB,CAAC,cAAe,gBAChB,CAAC,cAAe,gBAChB,CAAC,aAAc,eACf,CAAC,UAAW,cAEd+E,GACE,2HACJ,SAASC,GAAYrR,GACnB,OAAOoR,GAAqB72D,KAAK,GAAKylD,GAClC,8FACAA,CACN,CACA,IAAIsR,GAAwB,KAC5B,SAASC,GAAeC,GAItB,OAHAA,EAAcA,EAAY3kC,QAAU2kC,EAAYC,YAAcxqB,QAClDyqB,0BACTF,EAAcA,EAAYE,yBACtB,IAAMF,EAAY9Q,SAAW8Q,EAAYvK,WAAauK,CAC/D,CACA,IAAIG,GAAgB,KAClBC,GAAe,KACjB,SAASC,GAAqBhlC,GAC5B,IAAIilC,EAAmBhG,GAAoBj/B,GAC3C,GAAIilC,IAAqBjlC,EAASilC,EAAiB7F,WAAY,CAC7D,IAAI/4D,EAAQ25B,EAAOq+B,KAAqB,KACxCr/C,EAAG,OAAUghB,EAASilC,EAAiB7F,UAAY6F,EAAiB3/D,MAClE,IAAK,QAYH,GAXAg9D,GACEtiC,EACA35B,EAAMH,MACNG,EAAMw1C,aACNx1C,EAAMw1C,aACNx1C,EAAM47D,QACN57D,EAAMm8D,eACNn8D,EAAMf,KACNe,EAAMyF,MAERm5D,EAAmB5+D,EAAMyF,KACrB,UAAYzF,EAAMf,MAAQ,MAAQ2/D,EAAkB,CACtD,IAAK5+D,EAAQ25B,EAAQ35B,EAAM+zD,YAAc/zD,EAAQA,EAAM+zD,WAQvD,IAPA/zD,EAAQA,EAAM6+D,iBACZ,eACE7C,GACE,GAAK4C,GAEP,oBAGFA,EAAmB,EACnBA,EAAmB5+D,EAAMR,OACzBo/D,IACA,CACA,IAAIE,EAAY9+D,EAAM4+D,GACtB,GAAIE,IAAcnlC,GAAUmlC,EAAU9P,OAASr1B,EAAOq1B,KAAM,CAC1D,IAAI+P,EAAaD,EAAU9G,KAAqB,KAChD,IAAK+G,EAAY,MAAMhuB,MAAM8b,EAAuB,KACpDoP,GACE6C,EACAC,EAAWl/D,MACXk/D,EAAWvpB,aACXupB,EAAWvpB,aACXupB,EAAWnD,QACXmD,EAAW5C,eACX4C,EAAW9/D,KACX8/D,EAAWt5D,KAEf,CACF,CACA,IACEm5D,EAAmB,EACnBA,EAAmB5+D,EAAMR,OACzBo/D,KAECE,EAAY9+D,EAAM4+D,IACP5P,OAASr1B,EAAOq1B,MAAQyM,GAAqBqD,EAC7D,CACA,MAAMnmD,EACR,IAAK,WACHokD,GAAepjC,EAAQ35B,EAAMH,MAAOG,EAAMw1C,cAC1C,MAAM78B,EACR,IAAK,SAED,OADDimD,EAAmB5+D,EAAMH,QAEtB28D,GAAc7iC,IAAU35B,EAAMy8D,SAAUmC,GAAkB,GAEpE,CACF,CACA,IAAII,IAAuB,EAC3B,SAASC,GAAiB7pB,EAAIz8B,EAAGhB,GAC/B,GAAIqnD,GAAsB,OAAO5pB,EAAGz8B,EAAGhB,GACvCqnD,IAAuB,EACvB,IAEE,OAD+B5pB,EAAGz8B,EAEpC,CAAE,QACA,GACIqmD,IAAuB,GACzB,OAASP,IAAiB,OAASC,MAGhCQ,KACDT,KACI9lD,EAAI8lD,GACLrpB,EAAKspB,GACLA,GAAeD,GAAgB,KAChCE,GAAqBhmD,GACrBy8B,IAEF,IAAKz8B,EAAI,EAAGA,EAAIy8B,EAAG51C,OAAQmZ,IAAKgmD,GAAqBvpB,EAAGz8B,GAC9D,CACF,CACA,SAASwmD,GAAYrG,EAAMY,GACzB,IAAIX,EAAYD,EAAKC,UACrB,GAAI,OAASA,EAAW,OAAO,KAC/B,IAAI/4D,EAAQ+4D,EAAUf,KAAqB,KAC3C,GAAI,OAASh4D,EAAO,OAAO,KAC3B+4D,EAAY/4D,EAAM05D,GAClB/gD,EAAG,OAAQ+gD,GACT,IAAK,UACL,IAAK,iBACL,IAAK,gBACL,IAAK,uBACL,IAAK,cACL,IAAK,qBACL,IAAK,cACL,IAAK,qBACL,IAAK,YACL,IAAK,mBACL,IAAK,gBACF15D,GAASA,EAAM88D,YAEb98D,IACC,YAFA84D,EAAOA,EAAK75D,OAGZ,UAAY65D,GACZ,WAAaA,GACb,aAAeA,IAEnBA,GAAQ94D,EACR,MAAM2Y,EACR,QACEmgD,GAAO,EAEX,GAAIA,EAAM,OAAO,KACjB,GAAIC,GAAa,oBAAsBA,EACrC,MAAMhoB,MACJ8b,EAAuB,IAAK6M,SAAyBX,IAEzD,OAAOA,CACT,CACA,IAAIqG,IAAgC,EACpC,GAAIvF,GACF,IACE,IAAIjgC,GAAU,CAAC,EACft0B,OAAO0zB,eAAeY,GAAS,UAAW,CACxCwhC,IAAK,WACHgE,IAAgC,CAClC,IAEFrrB,OAAO+L,iBAAiB,OAAQlmB,GAASA,IACzCma,OAAOsrB,oBAAoB,OAAQzlC,GAASA,GAC9C,CAAE,MAAO5hB,IACPonD,IAAgC,CAClC,CACF,IAAIt/D,GAAO,KACTw/D,GAAY,KACZC,GAAe,KACjB,SAASC,KACP,GAAID,GAAc,OAAOA,GACzB,IAAInkC,EAGFz6B,EAFA8+D,EAAaH,GACbI,EAAcD,EAAWjgE,OAEzBmgE,EAAW,UAAW7/D,GAAOA,GAAKD,MAAQC,GAAKs/C,YAC/CwgB,EAAYD,EAASngE,OACvB,IACE47B,EAAQ,EACRA,EAAQskC,GAAeD,EAAWrkC,KAAWukC,EAASvkC,GACtDA,KAEF,IAAIykC,EAASH,EAActkC,EAC3B,IACEz6B,EAAM,EACNA,GAAOk/D,GACPJ,EAAWC,EAAc/+D,KAASg/D,EAASC,EAAYj/D,GACvDA,KAEF,OAAQ4+D,GAAeI,EAASl/D,MAAM26B,EAAO,EAAIz6B,EAAM,EAAIA,OAAM,EACnE,CACA,SAASm/D,GAAiBxB,GACxB,IAAIyB,EAAUzB,EAAYyB,QAM1B,MALA,aAAczB,EAEV,KADEA,EAAcA,EAAY0B,WACP,KAAOD,IAAYzB,EAAc,IACrDA,EAAcyB,EACnB,KAAOzB,IAAgBA,EAAc,IAC9B,IAAMA,GAAe,KAAOA,EAAcA,EAAc,CACjE,CACA,SAAS2B,KACP,OAAO,CACT,CACA,SAASC,KACP,OAAO,CACT,CACA,SAASC,GAAqBC,GAC5B,SAASC,EACPC,EACAC,EACA7H,EACA4F,EACAkC,GAQA,IAAK,IAAI/oC,KANTzzB,KAAKy8D,WAAaH,EAClBt8D,KAAK08D,YAAchI,EACnB10D,KAAK/E,KAAOshE,EACZv8D,KAAKs6D,YAAcA,EACnBt6D,KAAK21B,OAAS6mC,EACdx8D,KAAK28D,cAAgB,KACAP,EACnBA,EAAUtnC,eAAerB,KACrB6oC,EAAYF,EAAU3oC,GACvBzzB,KAAKyzB,GAAY6oC,EACdA,EAAUhC,GACVA,EAAY7mC,IASpB,OARAzzB,KAAK48D,oBACH,MAAQtC,EAAYuC,iBAChBvC,EAAYuC,kBACZ,IAAOvC,EAAY3nB,aAErBspB,GACAC,GACJl8D,KAAK88D,qBAAuBZ,GACrBl8D,IACT,CAuBA,OAtBAkF,EAAOm3D,EAAmBxnC,UAAW,CACnCmnB,eAAgB,WACdh8C,KAAK68D,kBAAmB,EACxB,IAAI5sB,EAAQjwC,KAAKs6D,YACjBrqB,IACGA,EAAM+L,eACH/L,EAAM+L,iBACN,mBAAqB/L,EAAM0C,cAAgB1C,EAAM0C,aAAc,GAClE3yC,KAAK48D,mBAAqBX,GAC/B,EACAlgB,gBAAiB,WACf,IAAI9L,EAAQjwC,KAAKs6D,YACjBrqB,IACGA,EAAM8L,gBACH9L,EAAM8L,kBACN,mBAAqB9L,EAAM8sB,eAC1B9sB,EAAM8sB,cAAe,GACzB/8D,KAAK88D,qBAAuBb,GACjC,EACAe,QAAS,WAAa,EACtBC,aAAchB,KAETI,CACT,CACA,IAaEa,GACAC,GACAC,GAfEC,GAAiB,CACjBC,WAAY,EACZptB,QAAS,EACTC,WAAY,EACZotB,UAAW,SAAUttB,GACnB,OAAOA,EAAMstB,WAAarf,KAAKH,KACjC,EACA8e,iBAAkB,EAClBW,UAAW,GAEbC,GAAiBtB,GAAqBkB,IACtCK,GAAmBx4D,EAAO,CAAC,EAAGm4D,GAAgB,CAAEM,KAAM,EAAGC,OAAQ,IACjEC,GAAmB1B,GAAqBuB,IAIxCI,GAAsB54D,EAAO,CAAC,EAAGw4D,GAAkB,CACjDK,QAAS,EACTC,QAAS,EACTC,QAAS,EACTC,QAAS,EACTC,MAAO,EACPC,MAAO,EACPC,QAAS,EACTC,SAAU,EACVC,OAAQ,EACRC,QAAS,EACTC,iBAAkBC,GAClBC,OAAQ,EACRC,QAAS,EACTC,cAAe,SAAU5uB,GACvB,YAAO,IAAWA,EAAM4uB,cACpB5uB,EAAM6uB,cAAgB7uB,EAAMsqB,WAC1BtqB,EAAM8uB,UACN9uB,EAAM6uB,YACR7uB,EAAM4uB,aACZ,EACAG,UAAW,SAAU/uB,GACnB,MAAI,cAAeA,EAAcA,EAAM+uB,WACvC/uB,IAAUmtB,KACPA,IAAkB,cAAgBntB,EAAMh1C,MACnCiiE,GAAgBjtB,EAAM8tB,QAAUX,GAAeW,QAChDZ,GAAgBltB,EAAM+tB,QAAUZ,GAAeY,SAC/Cb,GAAgBD,GAAgB,EACpCE,GAAiBntB,GACbitB,GACT,EACA+B,UAAW,SAAUhvB,GACnB,MAAO,cAAeA,EAAQA,EAAMgvB,UAAY9B,EAClD,IAEF+B,GAAsB/C,GAAqB2B,IAE3CqB,GAAqBhD,GADAj3D,EAAO,CAAC,EAAG44D,GAAqB,CAAEsB,aAAc,KAGrEC,GAAsBlD,GADAj3D,EAAO,CAAC,EAAGw4D,GAAkB,CAAEmB,cAAe,KAOpES,GAA0BnD,GALAj3D,EAAO,CAAC,EAAGm4D,GAAgB,CACnDkC,cAAe,EACfC,YAAa,EACbC,cAAe,KAUjBC,GAA0BvD,GAPAj3D,EAAO,CAAC,EAAGm4D,GAAgB,CACnDphB,cAAe,SAAUhM,GACvB,MAAO,kBAAmBA,EACtBA,EAAMgM,cACNlM,OAAOkM,aACb,KAIF0jB,GAA4BxD,GADAj3D,EAAO,CAAC,EAAGm4D,GAAgB,CAAE16D,KAAM,KAE/Di9D,GAAe,CACbC,IAAK,SACLC,SAAU,IACVC,KAAM,YACNC,GAAI,UACJC,MAAO,aACPC,KAAM,YACNC,IAAK,SACLC,IAAK,KACLC,KAAM,cACNC,KAAM,cACNC,OAAQ,aACRC,gBAAiB,gBAEnBC,GAAiB,CACf,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,UACJ,GAAI,MACJ,GAAI,QACJ,GAAI,WACJ,GAAI,SACJ,GAAI,IACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,YACJ,GAAI,UACJ,GAAI,aACJ,GAAI,YACJ,GAAI,SACJ,GAAI,SACJ,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,aACL,IAAK,QAEPC,GAAoB,CAClBC,IAAK,SACLC,QAAS,UACTC,KAAM,UACNC,MAAO,YAEX,SAASC,GAAoBC,GAC3B,IAAI1G,EAAct6D,KAAKs6D,YACvB,OAAOA,EAAYmE,iBACfnE,EAAYmE,iBAAiBuC,MAC5BA,EAASN,GAAkBM,OACxB1G,EAAY0G,EAEtB,CACA,SAAStC,KACP,OAAOqC,EACT,CACA,IAsCEE,GAAyB9E,GAtCEj3D,EAAO,CAAC,EAAGw4D,GAAkB,CACtD5wC,IAAK,SAAUwtC,GACb,GAAIA,EAAYxtC,IAAK,CACnB,IAAIA,EAAM8yC,GAAatF,EAAYxtC,MAAQwtC,EAAYxtC,IACvD,GAAI,iBAAmBA,EAAK,OAAOA,CACrC,CACA,MAAO,aAAewtC,EAAYr/D,KAE9B,MADEq/D,EAAcwB,GAAiBxB,IACZ,QAAUx3C,OAAOC,aAAau3C,GACnD,YAAcA,EAAYr/D,MAAQ,UAAYq/D,EAAYr/D,KACxDwlE,GAAenG,EAAYyB,UAAY,eACvC,EACR,EACAvyD,KAAM,EACNrE,SAAU,EACVk5D,QAAS,EACTC,SAAU,EACVC,OAAQ,EACRC,QAAS,EACT0C,OAAQ,EACRC,OAAQ,EACR1C,iBAAkBC,GAClB1C,SAAU,SAAU/rB,GAClB,MAAO,aAAeA,EAAMh1C,KAAO6gE,GAAiB7rB,GAAS,CAC/D,EACA8rB,QAAS,SAAU9rB,GACjB,MAAO,YAAcA,EAAMh1C,MAAQ,UAAYg1C,EAAMh1C,KACjDg1C,EAAM8rB,QACN,CACN,EACAqF,MAAO,SAAUnxB,GACf,MAAO,aAAeA,EAAMh1C,KACxB6gE,GAAiB7rB,GACjB,YAAcA,EAAMh1C,MAAQ,UAAYg1C,EAAMh1C,KAC5Cg1C,EAAM8rB,QACN,CACR,KAeFsF,GAAwBlF,GAZAj3D,EAAO,CAAC,EAAG44D,GAAqB,CACtDwD,UAAW,EACXC,MAAO,EACPC,OAAQ,EACRC,SAAU,EACVC,mBAAoB,EACpBC,MAAO,EACPC,MAAO,EACPC,MAAO,EACPC,YAAa,EACbC,UAAW,KAabC,GAAsB7F,GAVAj3D,EAAO,CAAC,EAAGw4D,GAAkB,CACjDuE,QAAS,EACTC,cAAe,EACfC,eAAgB,EAChB5D,OAAQ,EACRC,QAAS,EACTH,QAAS,EACTC,SAAU,EACVG,iBAAkBC,MAQpB0D,GAA2BjG,GALAj3D,EAAO,CAAC,EAAGm4D,GAAgB,CACpDpmB,aAAc,EACduoB,YAAa,EACbC,cAAe,KAuBjB4C,GAAsBlG,GApBAj3D,EAAO,CAAC,EAAG44D,GAAqB,CACpDwE,OAAQ,SAAUryB,GAChB,MAAO,WAAYA,EACfA,EAAMqyB,OACN,gBAAiBryB,GACdA,EAAMsyB,YACP,CACR,EACAC,OAAQ,SAAUvyB,GAChB,MAAO,WAAYA,EACfA,EAAMuyB,OACN,gBAAiBvyB,GACdA,EAAMwyB,YACP,eAAgBxyB,GACbA,EAAMyyB,WACP,CACV,EACAC,OAAQ,EACRC,UAAW,KAObC,GAAuB1G,GAJAj3D,EAAO,CAAC,EAAGm4D,GAAgB,CAChDyF,SAAU,EACVC,SAAU,KAGZC,GAAe,CAAC,EAAG,GAAI,GAAI,IAC3BC,GAAyBpN,IAAa,qBAAsB9lB,OAC5DmzB,GAAe,KACjBrN,IACE,iBAAkBz7D,WACjB8oE,GAAe9oE,SAAS8oE,cAC3B,IAAIC,GAAuBtN,IAAa,cAAe9lB,SAAWmzB,GAChEE,GACEvN,MACEoN,IACCC,IAAgB,EAAIA,IAAgB,IAAMA,IAC/CG,GAAgBvgD,OAAOC,aAAa,IACpCugD,IAAmB,EACrB,SAASC,GAAyBC,EAAclJ,GAC9C,OAAQkJ,GACN,IAAK,QACH,OAAQ,IAAMR,GAAah6D,QAAQsxD,EAAYyB,SACjD,IAAK,UACH,OAAO,MAAQzB,EAAYyB,QAC7B,IAAK,WACL,IAAK,YACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,EAEb,CACA,SAAS0H,GAAuBnJ,GAE9B,MAAO,kBADPA,EAAcA,EAAYsD,SACgB,SAAUtD,EAChDA,EAAY33D,KACZ,IACN,CACA,IAAI+gE,IAAc,EAiDlB,IAAIC,GAAsB,CACxBC,OAAO,EACPC,MAAM,EACNC,UAAU,EACV,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACR7zC,UAAU,EACVj1B,OAAO,EACP4hD,QAAQ,EACRmnB,KAAK,EACLppB,MAAM,EACNqpB,MAAM,EACNrb,KAAK,EACLsb,MAAM,GAER,SAASC,GAAmBxN,GAC1B,IAAIC,EAAWD,GAAQA,EAAKC,UAAYD,EAAKC,SAASntD,cACtD,MAAO,UAAYmtD,IACb6M,GAAoB9M,EAAK57D,MAC3B,aAAe67D,CAGrB,CACA,SAASwN,GACPC,EACAzP,EACAwF,EACA3kC,GAEA8kC,GACIC,GACEA,GAAa//D,KAAKg7B,GACjB+kC,GAAe,CAAC/kC,GAClB8kC,GAAgB9kC,EAErB,GADAm/B,EAAO0P,GAA4B1P,EAAM,aAChCt5D,SACL8+D,EAAc,IAAImD,GAClB,WACA,SACA,KACAnD,EACA3kC,GAEF4uC,EAAc5pE,KAAK,CAAEs1C,MAAOqqB,EAAamK,UAAW3P,IACxD,CACA,IAAI4P,GAAkB,KACpBC,GAAsB,KACxB,SAASC,GAAgBL,GACvBM,GAAqBN,EAAe,EACtC,CACA,SAASO,GAAsBpQ,GAE7B,GAAI+C,GADa5C,GAAoBH,IACC,OAAOA,CAC/C,CACA,SAASqQ,GAA4BvB,EAAc9O,GACjD,GAAI,WAAa8O,EAAc,OAAO9O,CACxC,CACA,IAAIsQ,IAAwB,EAC5B,GAAInP,GAAW,CACb,IAAIoP,GACJ,GAAIpP,GAAW,CACb,IAAIqP,GAAgC,YAAa9qE,SACjD,IAAK8qE,GAA+B,CAClC,IAAIC,GAA4B/qE,SAASmkC,cAAc,OACvD4mC,GAA0B7O,aAAa,UAAW,WAClD4O,GACE,oBAAsBC,GAA0BC,OACpD,CACAH,GAAsCC,EACxC,MAAOD,IAAsC,EAC7CD,GACEC,MACE7qE,SAAS8oE,cAAgB,EAAI9oE,SAAS8oE,aAC5C,CACA,SAASmC,KACPX,KACGA,GAAgBY,YAAY,mBAAoBC,IAChDZ,GAAsBD,GAAkB,KAC7C,CACA,SAASa,GAAqBjL,GAC5B,GACE,UAAYA,EAAYrjB,cACxB6tB,GAAsBH,IACtB,CACA,IAAIJ,EAAgB,GACpBD,GACEC,EACAI,GACArK,EACAD,GAAeC,IAEjBW,GAAiB2J,GAAiBL,EACpC,CACF,CACA,SAASiB,GAAkChC,EAAc7tC,EAAQ++B,GAC/D,YAAc8O,GACT6B,KAEAV,GAAsBjQ,GADtBgQ,GAAkB/uC,GAEH8vC,YAAY,mBAAoBF,KAChD,aAAe/B,GAAgB6B,IACrC,CACA,SAASK,GAAmClC,GAC1C,GACE,oBAAsBA,GACtB,UAAYA,GACZ,YAAcA,EAEd,OAAOsB,GAAsBH,GACjC,CACA,SAASgB,GAA2BnC,EAAc9O,GAChD,GAAI,UAAY8O,EAAc,OAAOsB,GAAsBpQ,EAC7D,CACA,SAASkR,GAAmCpC,EAAc9O,GACxD,GAAI,UAAY8O,GAAgB,WAAaA,EAC3C,OAAOsB,GAAsBpQ,EACjC,CAIA,IAAImR,GAAW,oBAAsBvkE,OAAOwkE,GAAKxkE,OAAOwkE,GAHxD,SAAYvmE,EAAGC,GACb,OAAQD,IAAMC,IAAM,IAAMD,GAAK,EAAIA,IAAM,EAAIC,IAAQD,IAAMA,GAAKC,IAAMA,CACxE,EAEA,SAASumE,GAAaC,EAAMC,GAC1B,GAAIJ,GAASG,EAAMC,GAAO,OAAO,EACjC,GACE,kBAAoBD,GACpB,OAASA,GACT,kBAAoBC,GACpB,OAASA,EAET,OAAO,EACT,IAAIC,EAAQ5kE,OAAO0xB,KAAKgzC,GACtBG,EAAQ7kE,OAAO0xB,KAAKizC,GACtB,GAAIC,EAAM1qE,SAAW2qE,EAAM3qE,OAAQ,OAAO,EAC1C,IAAK2qE,EAAQ,EAAGA,EAAQD,EAAM1qE,OAAQ2qE,IAAS,CAC7C,IAAIC,EAAaF,EAAMC,GACvB,IACGrxC,GAAepuB,KAAKu/D,EAAMG,KAC1BP,GAASG,EAAKI,GAAaH,EAAKG,IAEjC,OAAO,CACX,CACA,OAAO,CACT,CACA,SAASC,GAAYzqE,GACnB,KAAOA,GAAQA,EAAKs9D,YAAct9D,EAAOA,EAAKs9D,WAC9C,OAAOt9D,CACT,CACA,SAAS0qE,GAA0BxqE,EAAMqC,GACvC,IAESooE,EAFL3qE,EAAOyqE,GAAYvqE,GAEvB,IADAA,EAAO,EACWF,GAAQ,CACxB,GAAI,IAAMA,EAAK4tD,SAAU,CAEvB,GADA+c,EAAUzqE,EAAOF,EAAKw/C,YAAY5/C,OAC9BM,GAAQqC,GAAUooE,GAAWpoE,EAC/B,MAAO,CAAEvC,KAAMA,EAAMuC,OAAQA,EAASrC,GACxCA,EAAOyqE,CACT,CACA5xD,EAAG,CACD,KAAO/Y,GAAQ,CACb,GAAIA,EAAK4qE,YAAa,CACpB5qE,EAAOA,EAAK4qE,YACZ,MAAM7xD,CACR,CACA/Y,EAAOA,EAAKm0D,UACd,CACAn0D,OAAO,CACT,CACAA,EAAOyqE,GAAYzqE,EACrB,CACF,CACA,SAAS6qE,GAAaC,EAAWC,GAC/B,SAAOD,IAAaC,KAChBD,IAAcC,KAEZD,GAAa,IAAMA,EAAUld,YAE3Bmd,GAAa,IAAMA,EAAUnd,SAC3Bid,GAAaC,EAAWC,EAAU5W,YAClC,aAAc2W,EACZA,EAAUppC,SAASqpC,KACnBD,EAAUE,4BAC0C,GAA/CF,EAAUE,wBAAwBD,KAGrD,CACA,SAASE,GAAqBpd,GAO5B,IACE,IAAI3oD,EAAU+2D,IAPhBpO,EACE,MAAQA,GACR,MAAQA,EAAc8O,eACtB,MAAQ9O,EAAc8O,cAAcuO,YAChCrd,EAAc8O,cAAcuO,YAC5B/2B,QAEyC31C,UAC7C0G,aAAmB2oD,EAAcsd,mBAEjC,CACA,IACE,IAAI5W,EACF,kBAAoBrvD,EAAQkmE,cAAc7hE,SAAS6kD,IACvD,CAAE,MAAO5lC,GACP+rC,GAA2B,CAC7B,CACA,IAAIA,EACC,MACLrvD,EAAU+2D,IAFoBpO,EAAgB3oD,EAAQkmE,eAEb5sE,SAC3C,CACA,OAAO0G,CACT,CACA,SAASmmE,GAAyBpQ,GAChC,IAAIC,EAAWD,GAAQA,EAAKC,UAAYD,EAAKC,SAASntD,cACtD,OACEmtD,IACE,UAAYA,IACX,SAAWD,EAAK57D,MACf,WAAa47D,EAAK57D,MAClB,QAAU47D,EAAK57D,MACf,QAAU47D,EAAK57D,MACf,aAAe47D,EAAK57D,OACtB,aAAe67D,GACf,SAAWD,EAAKqQ,gBAEtB,CACA,SAASC,GAAiBC,EAA2B3d,GACnD,IAAI4d,EAAiBR,GAAqBpd,GAC1CA,EAAgB2d,EAA0BE,YAC1C,IAAIC,EAAsBH,EAA0BI,eACpD,GACEH,IAAmB5d,GACnBA,GACAA,EAAc8O,eACdkO,GAAahd,EAAc8O,cAAc1I,gBAAiBpG,GAC1D,CACA,GAAI,OAAS8d,GAAuBN,GAAyBxd,GAC3D,GACI2d,EAA4BG,EAAoBnwC,WAElD,KADCiwC,EAAiBE,EAAoB5qE,OAEnC0qE,EAAiBD,GACpB,mBAAoB3d,EAEnBA,EAAcge,eAAiBL,EAC7B3d,EAAcie,aAAe17C,KAAK4pB,IACjCyxB,EACA5d,EAAc5tD,MAAML,aAErB,IACD6rE,GACED,EACA3d,EAAc8O,eAAiBn+D,WAC/BgtE,EAA0BN,aAC5B/2B,QACa11C,aACf,CACAgtE,EAAiBA,EAAehtE,eAChC,IAAImB,EAASiuD,EAAcrO,YAAY5/C,OACrC47B,EAAQpL,KAAK4pB,IAAI2xB,EAAoBnwC,MAAO57B,GAC9C+rE,OACE,IAAWA,EAAoB5qE,IAC3By6B,EACApL,KAAK4pB,IAAI2xB,EAAoB5qE,IAAKnB,IACvC6rE,EAAez0D,QACdwkB,EAAQmwC,IACN/rE,EAAS+rE,EACVA,EAAsBnwC,EACtBA,EAAQ57B,GACXA,EAAS8qE,GAA0B7c,EAAeryB,GAClD,IAAIuwC,EAAYrB,GACd7c,EACA8d,GAEF/rE,GACEmsE,IACC,IAAMN,EAAe/sE,YACpB+sE,EAAeO,aAAepsE,EAAOI,MACrCyrE,EAAeQ,eAAiBrsE,EAAO2C,QACvCkpE,EAAeS,YAAcH,EAAU/rE,MACvCyrE,EAAeU,cAAgBJ,EAAUxpE,WACzCipE,EACAA,EAA0BjsB,eACF6sB,SAASxsE,EAAOI,KAAMJ,EAAO2C,QACvDkpE,EAAersE,kBACfo8B,EAAQmwC,GACHF,EAAejsE,SAASgsE,GACzBC,EAAez0D,OAAO+0D,EAAU/rE,KAAM+rE,EAAUxpE,UAC/CipE,EAA0Ba,OACzBN,EAAU/rE,KACV+rE,EAAUxpE,QAEZkpE,EAAejsE,SAASgsE,IAChC,CAEF,IADAA,EAA4B,GAE1BC,EAAiB5d,EAChB4d,EAAiBA,EAAetX,YAGjC,IAAMsX,EAAe7d,UACnB4d,EAA0BzsE,KAAK,CAC7BmG,QAASumE,EACTxwC,KAAMwwC,EAAea,WACrB3sB,IAAK8rB,EAAec,YAG1B,IADA,oBAAsB1e,EAAcpuD,OAASouD,EAAcpuD,QAEzDouD,EAAgB,EAChBA,EAAgB2d,EAA0B5rE,OAC1CiuD,KAEC4d,EAAiBD,EAA0B3d,IAC1B3oD,QAAQonE,WAAab,EAAexwC,KACnDwwC,EAAevmE,QAAQqnE,UAAYd,EAAe9rB,GACzD,CACF,CACA,IAAI6sB,GACAvS,IAAa,iBAAkBz7D,UAAY,IAAMA,SAAS8oE,aAC5D1oE,GAAgB,KAChB6tE,GAAoB,KACpBC,GAAgB,KAChBC,IAAY,EACd,SAASC,GAAqBjE,EAAejK,EAAakC,GACxD,IAAI1E,EACF0E,EAAkBzsB,SAAWysB,EACzBA,EAAkBpiE,SAClB,IAAMoiE,EAAkBhT,SACtBgT,EACAA,EAAkBjE,cAC1BgQ,IACE,MAAQ/tE,IACRA,KAAkBq9D,GAAiBC,KAEnC,mBADEA,EAAMt9D,KACmBysE,GAAyBnP,GAC/CA,EAAM,CAAE1gC,MAAO0gC,EAAI2P,eAAgB9qE,IAAKm7D,EAAI4P,cAK5C5P,EAAM,CACL8P,YALA9P,GACCA,EAAIS,eAAiBT,EAAIS,cAAcuO,aACxC/2B,QACA11C,gBAEgButE,WAChBC,aAAc/P,EAAI+P,aAClBC,UAAWhQ,EAAIgQ,UACfC,YAAajQ,EAAIiQ,aAEtBO,IAAiBvC,GAAauC,GAAexQ,KAC1CwQ,GAAgBxQ,EAElB,GADCA,EAAM0M,GAA4B6D,GAAmB,aAC9C7sE,SACJ8+D,EAAc,IAAImD,GAClB,WACA,SACA,KACAnD,EACAkC,GAEF+H,EAAc5pE,KAAK,CAAEs1C,MAAOqqB,EAAamK,UAAW3M,IACnDwC,EAAY3kC,OAASn7B,KAC9B,CACA,SAASiuE,GAAcC,EAAWC,GAChC,IAAIpkB,EAAW,CAAC,EAIhB,OAHAA,EAASmkB,EAAU/+D,eAAiBg/D,EAAUh/D,cAC9C46C,EAAS,SAAWmkB,GAAa,SAAWC,EAC5CpkB,EAAS,MAAQmkB,GAAa,MAAQC,EAC/BpkB,CACT,CACA,IAAIqkB,GAAiB,CACjBC,aAAcJ,GAAc,YAAa,gBACzCK,mBAAoBL,GAAc,YAAa,sBAC/CM,eAAgBN,GAAc,YAAa,kBAC3CO,cAAeP,GAAc,aAAc,iBAC3CQ,gBAAiBR,GAAc,aAAc,mBAC7CS,iBAAkBT,GAAc,aAAc,oBAC9CU,cAAeV,GAAc,aAAc,kBAE7CW,GAAqB,CAAC,EACtB9tB,GAAQ,CAAC,EASX,SAAS+tB,GAA2BV,GAClC,GAAIS,GAAmBT,GAAY,OAAOS,GAAmBT,GAC7D,IAAKC,GAAeD,GAAY,OAAOA,EACvC,IACED,EADEY,EAAYV,GAAeD,GAE/B,IAAKD,KAAaY,EAChB,GAAIA,EAAUx0C,eAAe4zC,IAAcA,KAAaptB,GACtD,OAAQ8tB,GAAmBT,GAAaW,EAAUZ,GACtD,OAAOC,CACT,CAjBA9S,KACIva,GAAQlhD,SAASmkC,cAAc,OAAO+c,MACxC,mBAAoBvL,gBACV64B,GAAeC,aAAaU,iBAC7BX,GAAeE,mBAAmBS,iBAClCX,GAAeG,eAAeQ,WACvC,oBAAqBx5B,eACZ64B,GAAeO,cAAcK,YAWxC,IAAIC,GAAgBJ,GAA2B,gBAC7CK,GAAsBL,GAA2B,sBACjDM,GAAkBN,GAA2B,kBAC7CO,GAAiBP,GAA2B,iBAC5CQ,GAAmBR,GAA2B,mBAC9CS,GAAoBT,GAA2B,oBAC/CU,GAAiBV,GAA2B,iBAC5CW,GAA6B,IAAI7U,IACjC8U,GACE,6nBAA6nBpc,MAC3nB,KAEN,SAASqc,GAAoB1G,EAAclH,GACzC0N,GAA2B/c,IAAIuW,EAAclH,GAC7C7G,GAAsB6G,EAAW,CAACkH,GACpC,CACA,IAAI2G,GAAmB,GACrBC,GAAwB,EACxBC,GAA2B,EAC7B,SAASC,KACP,IACE,IAAI30B,EAAWy0B,GACb1vE,EAAK2vE,GAA2BD,GAAwB,EAC1D1vE,EAAIi7C,GAEJ,CACA,IAAIsY,EAAQkc,GAAiBzvE,GAC7ByvE,GAAiBzvE,KAAO,KACxB,IAAI6vE,EAAQJ,GAAiBzvE,GAC7ByvE,GAAiBzvE,KAAO,KACxB,IAAI2tC,EAAS8hC,GAAiBzvE,GAC9ByvE,GAAiBzvE,KAAO,KACxB,IAAIusD,EAAOkjB,GAAiBzvE,GAE5B,GADAyvE,GAAiBzvE,KAAO,KACpB,OAAS6vE,GAAS,OAASliC,EAAQ,CACrC,IAAI6mB,EAAUqb,EAAMrb,QACpB,OAASA,EACJ7mB,EAAO/rC,KAAO+rC,GACbA,EAAO/rC,KAAO4yD,EAAQ5yD,KAAQ4yD,EAAQ5yD,KAAO+rC,GACnDkiC,EAAMrb,QAAU7mB,CAClB,CACA,IAAM4e,GAAQujB,GAA8Bvc,EAAO5lB,EAAQ4e,EAC7D,CACF,CACA,SAASwjB,GAAgBxc,EAAOsc,EAAOliC,EAAQ4e,GAC7CkjB,GAAiBC,MAA2Bnc,EAC5Ckc,GAAiBC,MAA2BG,EAC5CJ,GAAiBC,MAA2B/hC,EAC5C8hC,GAAiBC,MAA2BnjB,EAC5CojB,IAA4BpjB,EAC5BgH,EAAM4D,OAAS5K,EAEf,QADAgH,EAAQA,EAAMM,aACKN,EAAM4D,OAAS5K,EACpC,CACA,SAASyjB,GAA4Bzc,EAAOsc,EAAOliC,EAAQ4e,GAEzD,OADAwjB,GAAgBxc,EAAOsc,EAAOliC,EAAQ4e,GAC/B0jB,GAAuB1c,EAChC,CACA,SAAS2c,GAA+B3c,EAAOhH,GAE7C,OADAwjB,GAAgBxc,EAAO,KAAM,KAAMhH,GAC5B0jB,GAAuB1c,EAChC,CACA,SAASuc,GAA8BK,EAAaxiC,EAAQ4e,GAC1D4jB,EAAYhZ,OAAS5K,EACrB,IAAIsH,EAAYsc,EAAYtc,UAC5B,OAASA,IAAcA,EAAUsD,OAAS5K,GAC1C,IAAK,IAAI6jB,GAAW,EAAI/uE,EAAS8uE,EAAY1uE,OAAQ,OAASJ,GAC3DA,EAAOgvE,YAAc9jB,EAEpB,QADCsH,EAAYxyD,EAAOwyD,aACGA,EAAUwc,YAAc9jB,GAC/C,KAAOlrD,EAAOs+C,MAEZ,QADEwwB,EAAc9uE,EAAOg5D,YAC2B,EAA1B8V,EAAYG,cAAoBF,GAAW,IACpED,EAAc9uE,EACdA,EAASA,EAAOI,OACrB2uE,GACE,OAASziC,GACT,IAAMwiC,EAAYxwB,MAChBt+C,EAAS8uE,EAAY9V,UACtB+V,EAAW,GAAKtZ,GAAMvK,GAGvB,QADC4jB,GADA9uE,EAASA,EAAOkvE,eACKH,IAEjB/uE,EAAO+uE,GAAY,CAACziC,GACrBwiC,EAAYlwE,KAAK0tC,GACpBA,EAAO4e,KAAc,UAAPA,EACnB,CACA,SAAS0jB,GAAuBE,GAC9B,GAAI,GAAKK,GACP,MACIA,GAAoB,EACrBC,GAAwB,KACzBp+B,MAAM8b,EAAuB,MAEjC,IAAK,IAAI9sD,EAAS8uE,EAAY1uE,OAAQ,OAASJ,GACpBA,GAAxB8uE,EAAc9uE,GAA+BI,OAChD,OAAO,IAAM0uE,EAAYxwB,IAAMwwB,EAAY9V,UAAY,IACzD,CACA,IAAIqW,GAAqB,CAAC,EACxBC,GAAiB,IAAIC,QACvB,SAASC,GAA2B1vE,EAAO0xC,GACzC,GAAI,kBAAoB1xC,GAAS,OAASA,EAAO,CAC/C,IAAIm7B,EAAWq0C,GAAejU,IAAIv7D,GAClC,YAAI,IAAWm7B,EAAiBA,GAChCuW,EAAS,CACP1xC,MAAOA,EACP0xC,OAAQA,EACR3F,MAAOsmB,EAA4B3gB,IAErC89B,GAAepe,IAAIpxD,EAAO0xC,GACnBA,EACT,CACA,MAAO,CACL1xC,MAAOA,EACP0xC,OAAQA,EACR3F,MAAOsmB,EAA4B3gB,GAEvC,CACA,IAAIi+B,GAAY,GACdC,GAAiB,EACjBC,GAAmB,KACnBC,GAAgB,EAChBC,GAAU,GACVC,GAAe,EACfC,GAAsB,KACtBC,GAAgB,EAChBC,GAAsB,GACxB,SAASC,GAAa9d,EAAgB+d,GACpCV,GAAUC,MAAoBE,GAC9BH,GAAUC,MAAoBC,GAC9BA,GAAmBvd,EACnBwd,GAAgBO,CAClB,CACA,SAASC,GAAWhe,EAAgB+d,EAAe5uE,GACjDsuE,GAAQC,MAAkBE,GAC1BH,GAAQC,MAAkBG,GAC1BJ,GAAQC,MAAkBC,GAC1BA,GAAsB3d,EACtB,IAAIie,EAAuBL,GAC3B5d,EAAiB6d,GACjB,IAAIK,EAAa,GAAK7a,GAAM4a,GAAwB,EACpDA,KAA0B,GAAKC,GAC/B/uE,GAAS,EACT,IAAI9B,EAAS,GAAKg2D,GAAM0a,GAAiBG,EACzC,GAAI,GAAK7wE,EAAQ,CACf,IAAI8wE,EAAuBD,EAAcA,EAAa,EACtD7wE,GACE4wE,GACE,GAAKE,GAAwB,GAC/Bl9C,SAAS,IACXg9C,IAAyBE,EACzBD,GAAcC,EACdP,GACG,GAAM,GAAKva,GAAM0a,GAAiBG,EAClC/uE,GAAS+uE,EACVD,EACFJ,GAAsBxwE,EAAS2yD,CACjC,MACG4d,GACE,GAAKvwE,EAAW8B,GAAS+uE,EAAcD,EACvCJ,GAAsB7d,CAC7B,CACA,SAASoe,GAAuBpe,GAC9B,OAASA,EAAehyD,SACrB8vE,GAAa9d,EAAgB,GAAIge,GAAWhe,EAAgB,EAAG,GACpE,CACA,SAASqe,GAAere,GACtB,KAAOA,IAAmBud,IACvBA,GAAmBF,KAAYC,IAC7BD,GAAUC,IAAkB,KAC5BE,GAAgBH,KAAYC,IAC5BD,GAAUC,IAAkB,KACjC,KAAOtd,IAAmB2d,IACvBA,GAAsBF,KAAUC,IAC9BD,GAAQC,IAAgB,KACxBG,GAAsBJ,KAAUC,IAChCD,GAAQC,IAAgB,KACxBE,GAAgBH,KAAUC,IAC1BD,GAAQC,IAAgB,IAC/B,CACA,IAAIY,GAAuB,KACzBC,GAAyB,KACzBpU,IAAc,EACdqU,GAAkB,KAClBC,IAAyB,EACzBC,GAA6B9/B,MAAM8b,EAAuB,MAC5D,SAASikB,GAAyB7e,GAGhC,MADA8e,GAAoBxB,GADRx+B,MAAM8b,EAAuB,IAAK,KACQoF,IAChD4e,EACR,CACA,SAASG,GAA6B/e,GACpC,IAAIlX,EAAWkX,EAAM8G,UACnB95D,EAAOgzD,EAAMhzD,KACbe,EAAQiyD,EAAMgf,cAGhB,OAFAl2B,EAASgd,IAAuB9F,EAChClX,EAASid,IAAoBh4D,EACrBf,GACN,IAAK,SACHiyE,GAA0B,SAAUn2B,GACpCm2B,GAA0B,QAASn2B,GACnC,MACF,IAAK,SACL,IAAK,SACL,IAAK,QACHm2B,GAA0B,OAAQn2B,GAClC,MACF,IAAK,QACL,IAAK,QACH,IAAK97C,EAAO,EAAGA,EAAOkyE,GAAgB3xE,OAAQP,IAC5CiyE,GAA0BC,GAAgBlyE,GAAO87C,GACnD,MACF,IAAK,SACHm2B,GAA0B,QAASn2B,GACnC,MACF,IAAK,MACL,IAAK,QACL,IAAK,OACHm2B,GAA0B,QAASn2B,GACnCm2B,GAA0B,OAAQn2B,GAClC,MACF,IAAK,UACHm2B,GAA0B,SAAUn2B,GACpC,MACF,IAAK,QACHm2B,GAA0B,UAAWn2B,GACrCshB,GACEthB,EACA/6C,EAAMH,MACNG,EAAMw1C,aACNx1C,EAAM47D,QACN57D,EAAMm8D,eACNn8D,EAAMf,KACNe,EAAMyF,MACN,GAEFs1D,GAAMhgB,GACN,MACF,IAAK,SACHm2B,GAA0B,UAAWn2B,GACrC,MACF,IAAK,WACHm2B,GAA0B,UAAWn2B,GACnCiiB,GAAajiB,EAAU/6C,EAAMH,MAAOG,EAAMw1C,aAAcx1C,EAAMC,UAC9D86D,GAAMhgB,GAGX,kBADD97C,EAAOe,EAAMC,WAEX,kBAAoBhB,GACpB,kBAAoBA,GACtB87C,EAASqE,cAAgB,GAAKngD,IAC9B,IAAOe,EAAMoxE,0BACbC,GAAsBt2B,EAASqE,YAAangD,IACvC,MAAQe,EAAMsxE,UACZJ,GAA0B,eAAgBn2B,GAC3Cm2B,GAA0B,SAAUn2B,IACtC,MAAQ/6C,EAAMuxE,UAAYL,GAA0B,SAAUn2B,GAC9D,MAAQ/6C,EAAMwxE,aACZN,GAA0B,YAAan2B,GACzC,MAAQ/6C,EAAMyxE,UAAY12B,EAAS22B,QAAU1/B,IAC5C+I,GAAW,GACXA,GAAW,EAChBA,GAAY+1B,GAAyB7e,EACvC,CACA,SAAS0f,GAAoB1f,GAC3B,IAAKwe,GAAuBxe,EAAM9xD,OAAQswE,IACxC,OAAQA,GAAqBpyB,KAC3B,KAAK,EACL,KAAK,GAEH,YADAuyB,IAAyB,GAE3B,KAAK,EACL,KAAK,GAEH,YADAA,IAAyB,GAE3B,QACEH,GAAuBA,GAAqBtwE,OAEpD,CACA,SAASyxE,GAAkB3f,GACzB,GAAIA,IAAUwe,GAAsB,OAAO,EAC3C,IAAKnU,GAAa,OAAOqV,GAAoB1f,GAASqK,IAAc,GAAK,EACzE,IACEuV,EADEC,GAAc,EAalB,IAXKD,EAAkB,IAAM5f,EAAM5T,KAAO,KAAO4T,EAAM5T,QAChDwzB,EAAkB,IAAM5f,EAAM5T,OAE9BwzB,IACG,UAFLA,EAAkB5f,EAAMhzD,OAEW,WAAa4yE,IAC7CE,GAAqB9f,EAAMhzD,KAAMgzD,EAAMgf,gBAC7CY,GAAmBA,GAErBA,IAAoBC,GAAc,GAClCA,GAAepB,IAA0BI,GAAyB7e,GAClE0f,GAAoB1f,GAChB,KAAOA,EAAM5T,IAAK,CAGpB,KADA4T,EAAQ,QADRA,EAAQA,EAAMU,eACWV,EAAMW,WAAa,MAChC,MAAM7hB,MAAM8b,EAAuB,MAC/Cl0C,EAAG,CAED,IADAs5C,EAAQA,EAAMuY,YACTsH,EAAc,EAAG7f,GAAS,CAC7B,GAAI,IAAMA,EAAMzE,SACd,GAAqC,QAA/BqkB,EAAkB5f,EAAMtrD,MAAkC,CAC9D,GAAI,IAAMmrE,EAAa,CACrBpB,GAAyBsB,GAAkB/f,EAAMuY,aACjD,MAAM7xD,CACR,CACAm5D,GACF,KACG,MAAQD,GACP,OAASA,GACT,OAASA,GACTC,IACN7f,EAAQA,EAAMuY,WAChB,CACAkG,GAAyB,IAC3B,CACF,MACEA,GAAyBD,GACrBuB,GAAkB/f,EAAM8G,UAAUyR,aAClC,KACN,OAAO,CACT,CACA,SAASyH,KACPvB,GAAyBD,GAAuB,KAChDnU,IAAc,CAChB,CACA,SAASyU,GAAoB79B,GAC3B,OAASy9B,GACJA,GAAkB,CAACz9B,GACpBy9B,GAAgBhyE,KAAKu0C,EAC3B,CACA,IAAIg/B,GAAoBnhC,MAAM8b,EAAuB,MACnDslB,GAA2BphC,MAAM8b,EAAuB,MACxDulB,GAA8B,CAAEv/B,KAAM,WAAa,GACrD,SAASw/B,GAAmBv/B,GAE1B,MAAO,eADPA,EAAWA,EAASC,SACe,aAAeD,CACpD,CACA,SAASw/B,KAAU,CACnB,SAASC,GAAkBC,EAAe1/B,EAAUxxC,GAKlD,YAHA,KADAA,EAAQkxE,EAAclxE,IAElBkxE,EAAc7zE,KAAKm0C,GACnBxxC,IAAUwxC,IAAaA,EAASD,KAAKy/B,GAAQA,IAAUx/B,EAAWxxC,GAC9DwxC,EAASC,QACf,IAAK,YACH,OAAOD,EAASjzC,MAClB,IAAK,WAEH,IADA2yE,EAAgB1/B,EAASE,UACHk/B,GACpB,MAAMnhC,MAAM8b,EAAuB,MACrC,MAAM2lB,EACR,QACE,GAAI,kBAAoB1/B,EAASC,OAAQD,EAASD,KAAKy/B,GAAQA,QAC1D,CAEH,GAAI,QADJE,EAAgBC,KACc,IAAMD,EAAcE,oBAChD,MAAM3hC,MAAM8b,EAAuB,OACrC2lB,EAAgB1/B,GACFC,OAAS,UACvBy/B,EAAc3/B,MACZ,SAAUI,GACR,GAAI,YAAcH,EAASC,OAAQ,CACjC,IAAI4/B,EAAoB7/B,EACxB6/B,EAAkB5/B,OAAS,YAC3B4/B,EAAkB9yE,MAAQozC,CAC5B,CACF,IACA,SAAUC,GACR,GAAI,YAAcJ,EAASC,OAAQ,CACjC,IAAI6/B,EAAmB9/B,EACvB8/B,EAAiB7/B,OAAS,WAC1B6/B,EAAiB5/B,OAASE,CAC5B,CACF,GAEJ,CACA,OAAQJ,EAASC,QACf,IAAK,YACH,OAAOD,EAASjzC,MAClB,IAAK,WAEH,IADA2yE,EAAgB1/B,EAASE,UACHk/B,GACpB,MAAMnhC,MAAM8b,EAAuB,MACrC,MAAM2lB,EAGV,MADAK,GAAoB//B,EACdo/B,GAEZ,CACA,IAAIW,GAAoB,KACxB,SAASC,KACP,GAAI,OAASD,GAAmB,MAAM9hC,MAAM8b,EAAuB,MACnE,IAAI/Z,EAAW+/B,GAEf,OADAA,GAAoB,KACb//B,CACT,CACA,IAAIigC,GAAkB,KACpBC,GAAyB,EAC3B,SAASC,GAAengC,GACtB,IAAIxxC,EAAQ0xE,GAGZ,OAFAA,IAA0B,EAC1B,OAASD,KAAoBA,GAAkB,IACxCR,GAAkBQ,GAAiBjgC,EAAUxxC,EACtD,CACA,SAAS4xE,GAAU/gB,EAAgBrtD,GACjCA,EAAUA,EAAQ9E,MAAM03B,IACxBy6B,EAAez6B,SAAM,IAAW5yB,EAAUA,EAAU,IACtD,CACA,SAASquE,GAAyBC,EAAaC,GAC7C,GAAIA,EAASx6D,WAAa+2C,EACxB,MAAM7e,MAAM8b,EAAuB,MAErC,MADAumB,EAAc9tE,OAAOuzB,UAAUzF,SAAS1oB,KAAK2oE,GACvCtiC,MACJ8b,EACE,GACA,oBAAsBumB,EAClB,qBAAuB9tE,OAAO0xB,KAAKq8C,GAAUz9C,KAAK,MAAQ,IAC1Dw9C,GAGV,CACA,SAASE,GAAYC,GAEnB,OAAOz1D,EADIy1D,EAAS/gC,OACR+gC,EAAS9gC,SACvB,CACA,SAAS+gC,GAAsBC,GAC7B,SAASC,EAAYN,EAAaO,GAChC,GAAIF,EAAwB,CAC1B,IAAIG,EAAYR,EAAYQ,UAC5B,OAASA,GACHR,EAAYQ,UAAY,CAACD,GAAkBP,EAAY5gB,OAAS,IAClEohB,EAAUj1E,KAAKg1E,EACrB,CACF,CACA,SAASE,EAAwBT,EAAaU,GAC5C,IAAKL,EAAwB,OAAO,KACpC,KAAO,OAASK,GACdJ,EAAYN,EAAaU,GACtBA,EAAoBA,EAAkB/gB,QAC3C,OAAO,IACT,CACA,SAASghB,EAAqBD,GAC5B,IAAK,IAAIE,EAAmB,IAAI7a,IAAO,OAAS2a,GAC9C,OAASA,EAAkBhjD,IACvBkjD,EAAiB/iB,IAAI6iB,EAAkBhjD,IAAKgjD,GAC5CE,EAAiB/iB,IAAI6iB,EAAkBxyE,MAAOwyE,GAC/CA,EAAoBA,EAAkB/gB,QAC3C,OAAOihB,CACT,CACA,SAASC,EAAShiB,EAAOiiB,GAIvB,OAHAjiB,EAAQkiB,GAAqBliB,EAAOiiB,IAC9B5yE,MAAQ,EACd2wD,EAAMc,QAAU,KACTd,CACT,CACA,SAASmiB,EAAWC,EAAUC,EAAiBC,GAE7C,OADAF,EAAS/yE,MAAQizE,EACZd,EAGD,QADJc,EAAWF,EAAS9hB,YAGfgiB,EAAWA,EAASjzE,OACVgzE,GACLD,EAAS7hB,OAAS,SAAW8hB,GAC/BC,GAERF,EAAS7hB,OAAS,SACX8hB,IAVGD,EAAS7hB,OAAS,QAAU8hB,EAWxC,CACA,SAASE,EAAiBH,GAIxB,OAHAZ,GACE,OAASY,EAAS9hB,YACjB8hB,EAAS7hB,OAAS,UACd6hB,CACT,CACA,SAASI,EAAerB,EAAa/mE,EAAS+yC,EAAayW,GACzD,OAAI,OAASxpD,GAAW,IAAMA,EAAQgyC,MAEjChyC,EAAUqoE,GAAoBt1B,EAAag0B,EAAY58D,KAAMq/C,IACrD11D,OAASizE,EAClB/mE,KAEJA,EAAU4nE,EAAS5nE,EAAS+yC,IACpBj/C,OAASizE,EACV/mE,EACT,CACA,SAASsoE,EAAcvB,EAAa/mE,EAASvH,EAAS+wD,GACpD,IAAI+e,EAAc9vE,EAAQ7F,KAC1B,OAAI21E,IAAgBv9C,EACXw9C,EACLzB,EACA/mE,EACAvH,EAAQ9E,MAAMC,SACd41D,EACA/wD,EAAQgsB,KAGV,OAASzkB,IACRA,EAAQuoE,cAAgBA,GACtB,kBAAoBA,GACnB,OAASA,GACTA,EAAY/7D,WAAa+2B,GACzB0jC,GAAYsB,KAAiBvoE,EAAQpN,OAIvCi0E,GADC7mE,EAAU4nE,EAAS5nE,EAASvH,EAAQ9E,OAClB8E,GAClBuH,EAAQlM,OAASizE,EAClB/mE,IAUJ6mE,GARA7mE,EAAUyoE,GACRhwE,EAAQ7F,KACR6F,EAAQgsB,IACRhsB,EAAQ9E,MACR,KACAozE,EAAY58D,KACZq/C,GAEiB/wD,GACnBuH,EAAQlM,OAASizE,EACV/mE,EACT,CACA,SAAS0oE,EAAa3B,EAAa/mE,EAAS2oE,EAAQnf,GAClD,OACE,OAASxpD,GACT,IAAMA,EAAQgyC,KACdhyC,EAAQ0sD,UAAUtL,gBAAkBunB,EAAOvnB,eAC3CphD,EAAQ0sD,UAAUrL,iBAAmBsnB,EAAOtnB,iBAGzCrhD,EAAU4oE,GAAsBD,EAAQ5B,EAAY58D,KAAMq/C,IAClD11D,OAASizE,EAClB/mE,KAEJA,EAAU4nE,EAAS5nE,EAAS2oE,EAAO/0E,UAAY,KACvCE,OAASizE,EACV/mE,EACT,CACA,SAASwoE,EAAezB,EAAa/mE,EAASw8B,EAAUgtB,EAAO/kC,GAC7D,OAAI,OAASzkB,GAAW,IAAMA,EAAQgyC,MAEjChyC,EAAU6oE,GACTrsC,EACAuqC,EAAY58D,KACZq/C,EACA/kC,IAEO3wB,OAASizE,EAClB/mE,KAEJA,EAAU4nE,EAAS5nE,EAASw8B,IACpB1oC,OAASizE,EACV/mE,EACT,CACA,SAAS8oE,EAAY/B,EAAaC,EAAUxd,GAC1C,GACG,kBAAoBwd,GAAY,KAAOA,GACxC,kBAAoBA,GACpB,kBAAoBA,EAEpB,OACGA,EAAWqB,GACV,GAAKrB,EACLD,EAAY58D,KACZq/C,IAEQ11D,OAASizE,EACnBC,EAEJ,GAAI,kBAAoBA,GAAY,OAASA,EAAU,CACrD,OAAQA,EAASx6D,UACf,KAAKue,EACH,OASE87C,GARCrd,EAAQif,GACPzB,EAASp0E,KACTo0E,EAASviD,IACTuiD,EAASrzE,MACT,KACAozE,EAAY58D,KACZq/C,GAEewd,GAChBxd,EAAM11D,OAASizE,EAChBvd,EAEJ,KAAKzmB,EACH,OACGikC,EAAW4B,GACV5B,EACAD,EAAY58D,KACZq/C,IAEQ11D,OAASizE,EACnBC,EAEJ,KAAKzjC,EAGH,OAAOulC,EAAY/B,EADnBC,GAAWv1D,EADAu1D,EAAS7gC,OACJ6gC,EAAS5gC,UACiBojB,GAE9C,GAAI1kB,EAAYkiC,IAAapjB,EAAcojB,GACzC,OACGA,EAAW6B,GACV7B,EACAD,EAAY58D,KACZq/C,EACA,OAEQ11D,OAASizE,EACnBC,EAEJ,GAAI,oBAAsBA,EAASxgC,KACjC,OAAOsiC,EAAY/B,EAAaH,GAAeI,GAAWxd,GAC5D,GAAIwd,EAASx6D,WAAa22B,EACxB,OAAO2lC,EACL/B,EACAgC,GAAgChC,EAAaC,GAC7Cxd,GAEJsd,GAAyBC,EAAaC,EACxC,CACA,OAAO,IACT,CACA,SAASgC,EAAWjC,EAAakC,EAAUjC,EAAUxd,GACnD,IAAI/kC,EAAM,OAASwkD,EAAWA,EAASxkD,IAAM,KAC7C,GACG,kBAAoBuiD,GAAY,KAAOA,GACxC,kBAAoBA,GACpB,kBAAoBA,EAEpB,OAAO,OAASviD,EACZ,KACA2jD,EAAerB,EAAakC,EAAU,GAAKjC,EAAUxd,GAC3D,GAAI,kBAAoBwd,GAAY,OAASA,EAAU,CACrD,OAAQA,EAASx6D,UACf,KAAKue,EACH,OAAOi8C,EAASviD,MAAQA,EACpB6jD,EAAcvB,EAAakC,EAAUjC,EAAUxd,GAC/C,KACN,KAAKzmB,EACH,OAAOikC,EAASviD,MAAQA,EACpBikD,EAAa3B,EAAakC,EAAUjC,EAAUxd,GAC9C,KACN,KAAKjmB,EACH,OAGEylC,EAAWjC,EAAakC,EADvBjC,GADAviD,EAAMuiD,EAAS7gC,OACA6gC,EAAS5gC,UACmBojB,GAGlD,GAAI1kB,EAAYkiC,IAAapjB,EAAcojB,GACzC,OAAO,OAASviD,EACZ,KACA+jD,EAAezB,EAAakC,EAAUjC,EAAUxd,EAAO,MAC7D,GAAI,oBAAsBwd,EAASxgC,KACjC,OAAOwiC,EACLjC,EACAkC,EACArC,GAAeI,GACfxd,GAEJ,GAAIwd,EAASx6D,WAAa22B,EACxB,OAAO6lC,EACLjC,EACAkC,EACAF,GAAgChC,EAAaC,GAC7Cxd,GAEJsd,GAAyBC,EAAaC,EACxC,CACA,OAAO,IACT,CACA,SAASkC,EACPvB,EACAZ,EACAoC,EACAnC,EACAxd,GAEA,GACG,kBAAoBwd,GAAY,KAAOA,GACxC,kBAAoBA,GACpB,kBAAoBA,EAEpB,OAEEoB,EAAerB,EADdY,EAAmBA,EAAiB5Y,IAAIoa,IAAW,KACN,GAAKnC,EAAUxd,GAEjE,GAAI,kBAAoBwd,GAAY,OAASA,EAAU,CACrD,OAAQA,EAASx6D,UACf,KAAKue,EACH,OAKEu9C,EAAcvB,EAJbY,EACCA,EAAiB5Y,IACf,OAASiY,EAASviD,IAAM0kD,EAASnC,EAASviD,MACvC,KACsCuiD,EAAUxd,GAE3D,KAAKzmB,EACH,OAKE2lC,EAAa3B,EAJZY,EACCA,EAAiB5Y,IACf,OAASiY,EAASviD,IAAM0kD,EAASnC,EAASviD,MACvC,KACqCuiD,EAAUxd,GAE1D,KAAKjmB,EAGH,OAAO2lC,EACLvB,EACAZ,EACAoC,EAJFnC,GAAWv1D,EADAu1D,EAAS7gC,OACJ6gC,EAAS5gC,UAMvBojB,GAGN,GAAI1kB,EAAYkiC,IAAapjB,EAAcojB,GACzC,OAEEwB,EAAezB,EADdY,EAAmBA,EAAiB5Y,IAAIoa,IAAW,KACNnC,EAAUxd,EAAO,MAEnE,GAAI,oBAAsBwd,EAASxgC,KACjC,OAAO0iC,EACLvB,EACAZ,EACAoC,EACAvC,GAAeI,GACfxd,GAEJ,GAAIwd,EAASx6D,WAAa22B,EACxB,OAAO+lC,EACLvB,EACAZ,EACAoC,EACAJ,GAAgChC,EAAaC,GAC7Cxd,GAEJsd,GAAyBC,EAAaC,EACxC,CACA,OAAO,IACT,CA4KA,SAASoC,EACPrC,EACAU,EACAT,EACAxd,GAOA,GALA,kBAAoBwd,GAClB,OAASA,GACTA,EAASp0E,OAASo4B,GAClB,OAASg8C,EAASviD,MACjBuiD,EAAWA,EAASrzE,MAAMC,UACzB,kBAAoBozE,GAAY,OAASA,EAAU,CACrD,OAAQA,EAASx6D,UACf,KAAKue,EACHze,EAAG,CACD,IAAK,IAAImY,EAAMuiD,EAASviD,IAAK,OAASgjD,GAAqB,CACzD,GAAIA,EAAkBhjD,MAAQA,EAAK,CAEjC,IADAA,EAAMuiD,EAASp0E,QACHo4B,GACV,GAAI,IAAMy8C,EAAkBz1B,IAAK,CAC/Bw1B,EACET,EACAU,EAAkB/gB,UAEpB8C,EAAQoe,EACNH,EACAT,EAASrzE,MAAMC,WAEXE,OAASizE,EACfA,EAAcvd,EACd,MAAMl9C,CACR,OACK,GACLm7D,EAAkBc,cAAgB9jD,GACjC,kBAAoBA,GACnB,OAASA,GACTA,EAAIjY,WAAa+2B,GACjB0jC,GAAYxiD,KAASgjD,EAAkB70E,KACzC,CACA40E,EACET,EACAU,EAAkB/gB,SAGpBmgB,GADArd,EAAQoe,EAASH,EAAmBT,EAASrzE,OAC5BqzE,GACjBxd,EAAM11D,OAASizE,EACfA,EAAcvd,EACd,MAAMl9C,CACR,CACAk7D,EAAwBT,EAAaU,GACrC,KACF,CAAOJ,EAAYN,EAAaU,GAChCA,EAAoBA,EAAkB/gB,OACxC,CACAsgB,EAASp0E,OAASo4B,IACZw+B,EAAQqf,GACR7B,EAASrzE,MAAMC,SACfmzE,EAAY58D,KACZq/C,EACAwd,EAASviD,MAEJ3wB,OAASizE,EACfA,EAAcvd,IASfqd,GARErd,EAAQif,GACRzB,EAASp0E,KACTo0E,EAASviD,IACTuiD,EAASrzE,MACT,KACAozE,EAAY58D,KACZq/C,GAEewd,GAChBxd,EAAM11D,OAASizE,EACfA,EAAcvd,EACrB,CACA,OAAO2e,EAAiBpB,GAC1B,KAAKhkC,EACHz2B,EAAG,CACD,IAAKmY,EAAMuiD,EAASviD,IAAK,OAASgjD,GAAqB,CACrD,GAAIA,EAAkBhjD,MAAQA,EAAG,CAC/B,GACE,IAAMgjD,EAAkBz1B,KACxBy1B,EAAkB/a,UAAUtL,gBAC1B4lB,EAAS5lB,eACXqmB,EAAkB/a,UAAUrL,iBAC1B2lB,EAAS3lB,eACX,CACAmmB,EACET,EACAU,EAAkB/gB,UAEpB8C,EAAQoe,EAASH,EAAmBT,EAASpzE,UAAY,KACnDE,OAASizE,EACfA,EAAcvd,EACd,MAAMl9C,CACR,CACEk7D,EAAwBT,EAAaU,GACrC,KACD,CACEJ,EAAYN,EAAaU,GAC9BA,EAAoBA,EAAkB/gB,OACxC,EACA8C,EAAQof,GAAsB5B,EAAUD,EAAY58D,KAAMq/C,IACpD11D,OAASizE,EACfA,EAAcvd,CAChB,CACA,OAAO2e,EAAiBpB,GAC1B,KAAKxjC,EACH,OAGE6lC,EACErC,EACAU,EAHDT,GADAviD,EAAMuiD,EAAS7gC,OACA6gC,EAAS5gC,UAKvBojB,GAIR,GAAI1kB,EAAYkiC,GACd,OAnSN,SACED,EACAU,EACA4B,EAC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AAkBtlV,EACnB,IAIMpE,CACR,CCxJD0oV,GAAMI,gBAAgB,CAACtpV,OAAAA,WCFVmqV,GAAgB,CAC3BC,MAAO,CAAC,UACRC,cAAe,gBACfC,QAAS,CAAC,OAAQ,MAClBC,UAAW,CACTC,MAAO,CAAC,SACRC,MAAO,CAAC,SACRC,MAAO,CAAC,SACRC,GAAI,CAAC,SACLhhD,GAAI,CAAC,SACLihD,GAAI,CAAC,UAEPC,UAAW,CACThzU,KAAM,CAAC,OAAQ,QAAS,SAAU,OAAQ,MAAO,QACjDizU,KAAM,CAAC,OAAQ,SACf/mW,IAAK,CAAC,OAAQ,SACdgnW,SAAU,CAAC,OAAQ,UAErBC,SAAU,CACR,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,SACA,KACA,IACA,MACA,OACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,IACA,KACA,KACA,QACA,QACA,QACA,QACA,aACA,KACA,KACA,KACA,MACA,IACA,OACA,MACA,KACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,SACA,UACA,UACA,UACA,SACA,aACA,OACA,MACA,OACA,MACA,OACA,QACA,OACA,OACA,MACA,SAEFnvS,WAAY,CACVr5E,EAAG,CAAC,QACJo7Q,IAAK,CAAC,MAAO,YACbh2O,MAAO,CACL,CAAC,OAAQ,YACT,CAAC,YAAY,IAEf6jL,GAAI,CAAC,CAAC,YAAa,mBACnB/iF,IAAK,CAAC,YAAa,YACnBojF,WAAY,CAAC,QACb2L,IAAK,CAAC,QACNwzJ,IAAK,CAAC,QACN5oX,EAAG,CAAC,QACJ,IAAK,CACH,OACA,SACA,gBACA,YACA,SACA,QACA,MACA,kBACA,aACA,YACA,iBACA,OACA,SACA,cACA,cACA,OACA,UACA,UACA,UACA,QACA,OACA,UACA,QACA,UACA,SACA,WACA,MACA,WACA,UACA,UACA,QACA,UACA,SACA,WACA,SACA,QACA,KACA,QACA,OACA,YACA,QACA,SACA,WACA,OACA,SACA,UACA,SACA,OACA,SACA,WACA,MACA,MACA,OACA,UACA,QACA,QACA,W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rBagrX,CAAuBH,GAChCD,GAAmBvvV,IAAIwvV,EAAQC,IAGjC,OAAOA,CACT,CAjEQG,CAA6BjnX,EAAQ6mX,QACrCL,GACJ19C,GAGE9oU,EAAQ6mX,QAAU7mX,EAAQknX,WACrBjhZ,EAIPA,EAEG+C,QAAQy9Y,IAWb,SAAmB/rP,EAAMhzJ,EAAOm5B,GAC9B,OAAOb,EAAQpG,OACmB,MAA/B8gI,EAAKp/H,WAAW,GAAK,OACpBo/H,EAAKp/H,WAAW,GAChB,MACA,MACFuF,EAAIvF,WAAW5zB,EAAQ,GACvBs4B,EAEJ,IAjBKh3B,QAAQ09Y,GAAwB59C,GAwBrC,SAASA,EAAMhjW,EAAW4B,EAAOm5B,GAC/B,OAAOb,EAAQpG,OACb9zB,EAAUw1B,WAAW,GACrBuF,EAAIvF,WAAW5zB,EAAQ,GACvBs4B,EAEJ,CACF,CCjFA,MAAMmnX,GAAmB,aCAzB,MAAMC,GAAe,KCKd,MAAMC,GAA0B,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,GAAyB,CACpCC,KAAM,OACNC,MAAO,OACPC,KAAM,OACNC,MAAO,OACPC,OAAQ,OACRC,IAAK,OACLC,OAAQ,OACRC,KAAM,OACNC,IAAK,OACLxnX,KAAM,OACNynX,KAAM,OACNC,MAA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","sources":["../node_modules/toggle-selection/index.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/parse5/lib/parser/formatting-element-list.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/react/jsx-runtime.js","../node_modules/lodash-es/_trimmedEndIndex.js","../node_modules/lodash-es/_baseTrim.js","../node_modules/lodash-es/toNumber.js","../node_modules/parse5/lib/extensions/location-info/parser-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","../node_modules/parse5/lib/tokenizer/named-entity-data.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/parse5/lib/common/html.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/parse5/lib/common/error-codes.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/parse5/lib/tokenizer/index.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/cipher-core.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../node_modules/micromark-util-character/index.js","../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","../node_modules/lodash-es/isSymbol.js","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/parse5/lib/tokenizer/preprocessor.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/extend/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/parse5/lib/parser/index.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/crypto-js/pbkdf2.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/hmac.js","../node_modules/react/cjs/react.production.js","../node_modules/lodash-es/_root.js","../node_modules/react-router/node_modules/cookie/src/index.ts","../node_modules/react-dom/client.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/crypto-js/format-hex.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/parse5/lib/common/unicode.js","../node_modules/react/index.js","../node_modules/copy-to-clipboard/index.js","../node_modules/lodash-es/_Symbol.js","../node_modules/stylis/src/Utility.js","../node_modules/is-buffer/index.js","../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","../node_modules/scheduler/cjs/scheduler.production.js","../node_modules/word-count/index.js","../node_modules/crypto-js/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/parse5/lib/common/doctype.js","../node_modules/crypto-js/blowfish.js","../node_modules/crypto-js/sha3.js","../node_modules/react-dom/cjs/react-dom.production.js","../node_modules/rc-util/node_modules/react-is/index.js","../node_modules/stylis/src/Enum.js","../node_modules/react-dom/cjs/react-dom-client.production.js","../node_modules/crypto-js/sha512.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/crypto-js/ripemd160.js","../node_modules/lodash-es/isObject.js","../node_modules/crypto-js/aes.js","../node_modules/parse5/lib/parser/open-element-stack.js","../node_modules/react-dom/index.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/classnames/index.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/crypto-js/evpkdf.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/parse5/lib/utils/mixin.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/crypto-js/enc-base64.js","../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","../node_modules/parse5/lib/utils/merge-options.js","../node_modules/scheduler/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.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/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-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-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/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/crypto-js/rabbit.js","../node_modules/micromark-factory-space/index.js","../node_modules/parse5/lib/common/foreign-content.js","../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/stylis/src/Serializer.js","../node_modules/lodash-es/now.js","../node_modules/crypto-js/tripledes.js","../node_modules/parse5/lib/tree-adapters/default.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/x64-core.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/rc-util/es/omit.js","../node_modules/antd/es/config-provider/context.js","../node_modules/antd/es/layout/context.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/rc-util/es/React/isFragment.js","../node_modules/rc-util/es/Children/toArray.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@ant-design/icons-svg/es/asn/BarsOutlined.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@ant-design/fast-color/es/FastColor.js","../node_modules/@ant-design/colors/es/generate.js","../node_modules/@ant-design/colors/es/presets.js","../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/Dom/contains.js","../node_modules/rc-util/es/Dom/dynamicCSS.js","../node_modules/rc-util/es/Dom/shadow.js","../node_modules/rc-util/es/warning.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons/es/icons/BarsOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","../node_modules/@ant-design/icons/es/icons/LeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/RightOutlined.js","../node_modules/@ant-design/icons/es/icons/RightOutlined.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/rc-util/es/hooks/useMemo.js","../node_modules/rc-util/es/isEqual.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@ant-design/cssinjs/es/Cache.js","../node_modules/@ant-design/cssinjs/es/StyleContext.js","../node_modules/@ant-design/cssinjs/es/theme/calc/CSSCalculator.js","../node_modules/@ant-design/cssinjs/es/theme/ThemeCache.js","../node_modules/@ant-design/cssinjs/es/theme/Theme.js","../node_modules/@ant-design/cssinjs/es/theme/createTheme.js","../node_modules/@ant-design/cssinjs/es/util/index.js","../node_modules/@ant-design/cssinjs/es/util/css-variables.js","../node_modules/rc-util/es/hooks/useLayoutEffect.js","../node_modules/@ant-design/cssinjs/es/hooks/useCompatibleInsertionEffect.js","../node_modules/@ant-design/cssinjs/es/hooks/useEffectCleanupRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useHMR.js","../node_modules/@ant-design/cssinjs/es/hooks/useGlobalCache.js","../node_modules/@ant-design/cssinjs/es/hooks/useCacheToken.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@ant-design/cssinjs/es/util/cacheMapUtil.js","../node_modules/@ant-design/cssinjs/es/hooks/useStyleRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useCSSVarRegister.js","../node_modules/@ant-design/cssinjs/es/extractStyle.js","../node_modules/@ant-design/cssinjs/es/Keyframes.js","../node_modules/@ant-design/cssinjs/es/transformers/legacyLogicalProperties.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/calculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/CSSCalculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/NumCalculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/index.js","../node_modules/@ant-design/cssinjs-utils/es/util/getCompVarPrefix.js","../node_modules/rc-util/es/hooks/useEvent.js","../node_modules/rc-util/es/hooks/useState.js","../node_modules/rc-util/es/hooks/useMergedState.js","../node_modules/rc-util/es/ref.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/rc-util/es/utils/get.js","../node_modules/rc-util/es/utils/set.js","../node_modules/@ant-design/cssinjs-utils/es/util/getComponentToken.js","../node_modules/@ant-design/cssinjs-utils/es/util/statistic.js","../node_modules/@ant-design/cssinjs-utils/es/util/getDefaultComponentToken.js","../node_modules/@ant-design/cssinjs-utils/es/util/maxmin.js","../node_modules/@ant-design/cssinjs-utils/es/_util/hooks/useUniqueMemo.js","../node_modules/@ant-design/cssinjs-utils/es/hooks/useCSP.js","../node_modules/@ant-design/cssinjs-utils/es/util/genStyleUtils.js","../node_modules/antd/es/style/index.js","../node_modules/antd/es/theme/themes/seed.js","../node_modules/antd/es/theme/context.js","../node_modules/antd/es/theme/themes/shared/genRadius.js","../node_modules/antd/es/theme/themes/shared/genControlHeight.js","../node_modules/antd/es/theme/themes/shared/genFontSizes.js","../node_modules/antd/es/theme/themes/shared/genFontMapToken.js","../node_modules/antd/es/theme/themes/default/colorAlgorithm.js","../node_modules/antd/es/theme/themes/default/colors.js","../node_modules/antd/es/theme/themes/default/theme.js","../node_modules/antd/es/theme/themes/default/index.js","../node_modules/antd/es/theme/themes/shared/genColorMapToken.js","../node_modules/antd/es/theme/themes/shared/genSizeMapToken.js","../node_modules/antd/es/theme/themes/shared/genCommonMapToken.js","../node_modules/antd/es/theme/util/getAlphaColor.js","../node_modules/antd/es/theme/util/alias.js","../node_modules/antd/es/theme/useToken.js","../node_modules/antd/es/theme/util/genStyleUtils.js","../node_modules/antd/es/layout/style/index.js","../node_modules/antd/es/layout/style/sider.js","../node_modules/antd/es/layout/Sider.js","../node_modules/antd/es/layout/layout.js","../node_modules/antd/es/layout/hooks/useHasSider.js","../node_modules/antd/es/layout/index.js","../node_modules/@ant-design/icons-svg/es/asn/EditOutlined.js","../node_modules/@ant-design/icons/es/icons/EditOutlined.js","../node_modules/rc-util/es/Dom/findDOMNode.js","../node_modules/rc-resize-observer/es/Collection.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/rc-resize-observer/es/utils/observerUtil.js","../node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","../node_modules/rc-resize-observer/es/SingleObserver/index.js","../node_modules/rc-resize-observer/es/index.js","../node_modules/rc-util/es/Dom/styleChecker.js","../node_modules/antd/es/locale/context.js","../node_modules/rc-pagination/es/locale/en_US.js","../node_modules/rc-picker/es/locale/en_US.js","../node_modules/rc-picker/es/locale/common.js","../node_modules/antd/es/time-picker/locale/en_US.js","../node_modules/antd/es/date-picker/locale/en_US.js","../node_modules/antd/es/locale/en_US.js","../node_modules/antd/es/locale/useLocale.js","../node_modules/rc-tooltip/es/Popup.js","../node_modules/@rc-component/portal/es/Context.js","../node_modules/@rc-component/portal/es/useDom.js","../node_modules/rc-util/es/getScrollBarSize.js","../node_modules/@rc-component/portal/es/useScrollLocker.js","../node_modules/@rc-component/portal/es/util.js","../node_modules/@rc-component/portal/es/mock.js","../node_modules/@rc-component/portal/es/Portal.js","../node_modules/@rc-component/portal/es/index.js","../node_modules/rc-util/es/hooks/useId.js","../node_modules/rc-util/es/isMobile.js","../node_modules/rc-motion/es/context.js","../node_modules/rc-motion/es/DomWrapper.js","../node_modules/rc-motion/es/interface.js","../node_modules/rc-motion/es/util/motion.js","../node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","../node_modules/rc-util/es/raf.js","../node_modules/rc-motion/es/hooks/useStepQueue.js","../node_modules/rc-motion/es/hooks/useNextFrame.js","../node_modules/rc-motion/es/hooks/useStatus.js","../node_modules/rc-util/es/hooks/useSyncState.js","../node_modules/rc-motion/es/hooks/useDomMotionEvents.js","../node_modules/rc-motion/es/CSSMotion.js","../node_modules/rc-motion/es/util/diff.js","../node_modules/rc-motion/es/CSSMotionList.js","../node_modules/rc-motion/es/index.js","../node_modules/@rc-component/trigger/es/Popup/Arrow.js","../node_modules/@rc-component/trigger/es/Popup/Mask.js","../node_modules/@rc-component/trigger/es/Popup/PopupContent.js","../node_modules/@rc-component/trigger/es/Popup/index.js","../node_modules/@rc-component/trigger/es/TriggerWrapper.js","../node_modules/@rc-component/trigger/es/context.js","../node_modules/@rc-component/trigger/es/hooks/useAction.js","../node_modules/rc-util/es/Dom/isVisible.js","../node_modules/@rc-component/trigger/es/util.js","../node_modules/@rc-component/trigger/es/hooks/useAlign.js","../node_modules/@rc-component/trigger/es/index.js","../node_modules/@rc-component/trigger/es/hooks/useWatch.js","../node_modules/@rc-component/trigger/es/hooks/useWinClick.js","../node_modules/rc-tooltip/es/placements.js","../node_modules/rc-tooltip/es/Tooltip.js","../node_modules/rc-tooltip/es/index.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/rc-field-form/es/FieldContext.js","../node_modules/rc-field-form/es/ListContext.js","../node_modules/rc-field-form/es/utils/typeUtil.js","../node_modules/@rc-component/async-validator/es/messages.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@rc-component/async-validator/es/util.js","../node_modules/@rc-component/async-validator/es/rule/enum.js","../node_modules/@rc-component/async-validator/es/rule/required.js","../node_modules/@rc-component/async-validator/es/rule/url.js","../node_modules/@rc-component/async-validator/es/rule/type.js","../node_modules/@rc-component/async-validator/es/rule/whitespace.js","../node_modules/@rc-component/async-validator/es/rule/index.js","../node_modules/@rc-component/async-validator/es/rule/range.js","../node_modules/@rc-component/async-validator/es/rule/pattern.js","../node_modules/@rc-component/async-validator/es/validator/type.js","../node_modules/@rc-component/async-validator/es/validator/index.js","../node_modules/@rc-component/async-validator/es/validator/string.js","../node_modules/@rc-component/async-validator/es/validator/method.js","../node_modules/@rc-component/async-validator/es/validator/number.js","../node_modules/@rc-component/async-validator/es/validator/boolean.js","../node_modules/@rc-component/async-validator/es/validator/regexp.js","../node_modules/@rc-component/async-validator/es/validator/integer.js","../node_modules/@rc-component/async-validator/es/validator/float.js","../node_modules/@rc-component/async-validator/es/validator/array.js","../node_modules/@rc-component/async-validator/es/validator/object.js","../node_modules/@rc-component/async-validator/es/validator/enum.js","../node_modules/@rc-component/async-validator/es/validator/pattern.js","../node_modules/@rc-component/async-validator/es/validator/date.js","../node_modules/@rc-component/async-validator/es/validator/required.js","../node_modules/@rc-component/async-validator/es/validator/any.js","../node_modules/@rc-component/async-validator/es/index.js","../node_modules/rc-field-form/es/utils/messages.js","../node_modules/rc-field-form/es/utils/validateUtil.js","../node_modules/rc-field-form/es/utils/valueUtil.js","../node_modules/rc-field-form/es/Field.js","../node_modules/rc-field-form/es/List.js","../node_modules/rc-field-form/es/utils/NameMap.js","../node_modules/rc-field-form/es/useForm.js","../node_modules/rc-field-form/es/utils/asyncUtil.js","../node_modules/rc-field-form/es/FormContext.js","../node_modules/rc-field-form/es/Form.js","../node_modules/rc-field-form/es/useWatch.js","../node_modules/rc-field-form/es/index.js","../node_modules/antd/es/form/context.js","../node_modules/antd/es/config-provider/SizeContext.js","../node_modules/antd/es/config-provider/hooks/useSize.js","../node_modules/antd/es/space/style/compact.js","../node_modules/antd/es/space/style/index.js","../node_modules/antd/es/space/Compact.js","../node_modules/antd/es/_util/ContextIsolator.js","../node_modules/antd/es/_util/zindexContext.js","../node_modules/antd/es/_util/hooks/useZIndex.js","../node_modules/antd/es/_util/motion.js","../node_modules/antd/es/style/roundedArrow.js","../node_modules/antd/es/style/placementArrow.js","../node_modules/antd/es/_util/placements.js","../node_modules/antd/es/_util/reactNode.js","../node_modules/antd/es/_util/warning.js","../node_modules/antd/es/style/motion/motion.js","../node_modules/antd/es/style/motion/zoom.js","../node_modules/antd/es/theme/interface/presetColors.js","../node_modules/antd/es/theme/util/genPresetColor.js","../node_modules/antd/es/tooltip/style/index.js","../node_modules/antd/es/_util/colors.js","../node_modules/antd/es/tooltip/util.js","../node_modules/antd/es/tooltip/PurePanel.js","../node_modules/antd/es/tooltip/index.js","../node_modules/@ant-design/icons-svg/es/asn/EnterOutlined.js","../node_modules/@ant-design/icons/es/icons/EnterOutlined.js","../node_modules/rc-util/es/KeyCode.js","../node_modules/rc-input/es/utils/commonUtils.js","../node_modules/rc-input/es/BaseInput.js","../node_modules/rc-input/es/hooks/useCount.js","../node_modules/rc-input/es/Input.js","../node_modules/rc-input/es/index.js","../node_modules/rc-textarea/es/calculateNodeHeight.js","../node_modules/rc-textarea/es/ResizableTextArea.js","../node_modules/rc-textarea/es/TextArea.js","../node_modules/rc-textarea/es/index.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","../node_modules/antd/es/_util/getAllowClear.js","../node_modules/antd/es/_util/statusUtils.js","../node_modules/antd/es/config-provider/DisabledContext.js","../node_modules/antd/es/config-provider/hooks/useCSSVarCls.js","../node_modules/antd/es/form/hooks/useVariants.js","../node_modules/antd/es/style/compact-item.js","../node_modules/antd/es/input/style/token.js","../node_modules/antd/es/input/style/variants.js","../node_modules/antd/es/input/style/index.js","../node_modules/antd/es/input/style/textarea.js","../node_modules/antd/es/input/TextArea.js","../node_modules/antd/es/typography/style/mixins.js","../node_modules/antd/es/typography/style/index.js","../node_modules/antd/es/typography/Editable.js","../node_modules/antd/es/typography/hooks/useCopyClick.js","../node_modules/antd/es/_util/toList.js","../node_modules/antd/es/typography/hooks/useMergedConfig.js","../node_modules/antd/es/typography/hooks/usePrevious.js","../node_modules/antd/es/typography/hooks/useTooltipProps.js","../node_modules/antd/es/typography/Typography.js","../node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.js","../node_modules/@ant-design/icons/es/icons/CheckOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.js","../node_modules/@ant-design/icons/es/icons/CopyOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","../node_modules/antd/es/typography/Base/util.js","../node_modules/antd/es/typography/Base/CopyBtn.js","../node_modules/antd/es/typography/Base/Ellipsis.js","../node_modules/antd/es/typography/Base/EllipsisTooltip.js","../node_modules/antd/es/typography/Base/index.js","../node_modules/antd/es/typography/Link.js","../node_modules/antd/es/typography/Paragraph.js","../node_modules/antd/es/typography/Text.js","../node_modules/antd/es/typography/Title.js","../node_modules/antd/es/typography/index.js","../node_modules/antd/es/input/Group.js","../node_modules/antd/es/input/hooks/useRemovePasswordTimeout.js","../node_modules/antd/es/input/Input.js","../node_modules/antd/es/input/utils.js","../node_modules/rc-util/es/pickAttrs.js","../node_modules/antd/es/input/style/otp.js","../node_modules/antd/es/input/OTP/OTPInput.js","../node_modules/antd/es/input/OTP/index.js","../node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleOutlined.js","../node_modules/@ant-design/icons/es/icons/EyeInvisibleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EyeOutlined.js","../node_modules/@ant-design/icons/es/icons/EyeOutlined.js","../node_modules/antd/es/input/Password.js","../node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js","../node_modules/@ant-design/icons/es/icons/SearchOutlined.js","../node_modules/antd/es/_util/wave/style.js","../node_modules/antd/es/_util/wave/interface.js","../node_modules/rc-util/es/React/render.js","../node_modules/antd/es/config-provider/UnstableContext.js","../node_modules/antd/es/_util/wave/util.js","../node_modules/antd/es/_util/wave/WaveEffect.js","../node_modules/antd/es/_util/wave/useWave.js","../node_modules/antd/es/_util/wave/index.js","../node_modules/antd/es/button/button-group.js","../node_modules/antd/es/button/buttonHelpers.js","../node_modules/antd/es/button/IconWrapper.js","../node_modules/antd/es/button/DefaultLoadingIcon.js","../node_modules/antd/es/button/style/group.js","../node_modules/@rc-component/color-picker/es/color.js","../node_modules/@rc-component/color-picker/es/util.js","../node_modules/antd/es/color-picker/color.js","../node_modules/antd/es/color-picker/components/ColorPresets.js","../node_modules/antd/es/button/style/token.js","../node_modules/antd/es/button/style/index.js","../node_modules/antd/es/style/compact-item-vertical.js","../node_modules/antd/es/button/style/compact.js","../node_modules/antd/es/button/button.js","../node_modules/antd/es/button/index.js","../node_modules/antd/es/input/Search.js","../node_modules/antd/es/input/index.js","../node_modules/js-cookie/dist/js.cookie.mjs","../node_modules/antd/es/app/context.js","../node_modules/antd/es/form/validateMessagesContext.js","../node_modules/antd/es/modal/locale.js","../node_modules/antd/es/locale/index.js","../node_modules/antd/es/config-provider/cssVariables.js","../node_modules/antd/es/config-provider/hooks/useConfig.js","../node_modules/antd/es/config-provider/hooks/useThemeKey.js","../node_modules/antd/es/config-provider/MotionWrapper.js","../node_modules/antd/es/config-provider/PropWarning.js","../node_modules/antd/es/theme/util/useResetIconStyle.js","../node_modules/antd/es/config-provider/index.js","../node_modules/antd/es/config-provider/hooks/useTheme.js","../node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js","../node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.js","../node_modules/@ant-design/icons/es/icons/InfoCircleFilled.js","../node_modules/rc-notification/es/Notice.js","../node_modules/rc-notification/es/NotificationProvider.js","../node_modules/rc-notification/es/hooks/useStack.js","../node_modules/rc-notification/es/NoticeList.js","../node_modules/rc-notification/es/Notifications.js","../node_modules/rc-notification/es/hooks/useNotification.js","../node_modules/antd/es/message/style/index.js","../node_modules/antd/es/message/PurePanel.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons/es/icons/CloseOutlined.js","../node_modules/antd/es/message/util.js","../node_modules/antd/es/message/useMessage.js","../node_modules/antd/es/message/index.js","../node_modules/antd/es/_util/ActionButton.js","../node_modules/antd/es/modal/context.js","../node_modules/antd/es/modal/components/ConfirmCancelBtn.js","../node_modules/antd/es/modal/components/ConfirmOkBtn.js","../node_modules/rc-dialog/es/context.js","../node_modules/rc-dialog/es/util.js","../node_modules/rc-dialog/es/Dialog/Content/MemoChildren.js","../node_modules/rc-dialog/es/Dialog/Content/Panel.js","../node_modules/rc-dialog/es/Dialog/Content/index.js","../node_modules/rc-dialog/es/Dialog/Mask.js","../node_modules/rc-dialog/es/Dialog/index.js","../node_modules/rc-dialog/es/DialogWrap.js","../node_modules/rc-dialog/es/index.js","../node_modules/antd/es/_util/hooks/useClosable.js","../node_modules/antd/es/_util/styleChecker.js","../node_modules/antd/es/skeleton/Element.js","../node_modules/antd/es/skeleton/style/index.js","../node_modules/antd/es/skeleton/Avatar.js","../node_modules/antd/es/skeleton/Image.js","../node_modules/antd/es/skeleton/Input.js","../node_modules/antd/es/skeleton/Node.js","../node_modules/antd/es/skeleton/Paragraph.js","../node_modules/antd/es/skeleton/Title.js","../node_modules/antd/es/skeleton/Skeleton.js","../node_modules/antd/es/skeleton/Button.js","../node_modules/antd/es/skeleton/index.js","../node_modules/antd/es/watermark/context.js","../node_modules/antd/es/modal/components/NormalCancelBtn.js","../node_modules/antd/es/modal/components/NormalOkBtn.js","../node_modules/antd/es/modal/shared.js","../node_modules/antd/es/grid/style/index.js","../node_modules/antd/es/style/motion/fade.js","../node_modules/antd/es/modal/style/index.js","../node_modules/antd/es/modal/Modal.js","../node_modules/antd/es/modal/style/confirm.js","../node_modules/antd/es/modal/ConfirmDialog.js","../node_modules/antd/es/modal/destroyFns.js","../node_modules/antd/es/modal/confirm.js","../node_modules/antd/es/_util/PurePanel.js","../node_modules/antd/es/modal/PurePanel.js","../node_modules/antd/es/modal/useModal/HookModal.js","../node_modules/antd/es/modal/useModal/index.js","../node_modules/antd/es/_util/hooks/usePatchElement.js","../node_modules/antd/es/modal/index.js","../node_modules/antd/es/_util/gapSize.js","../node_modules/antd/es/space/context.js","../node_modules/antd/es/space/Item.js","../node_modules/antd/es/space/index.js","../node_modules/antd/es/flex/utils.js","../node_modules/antd/es/flex/style/index.js","../node_modules/antd/es/flex/index.js","../node_modules/@ant-design/icons-svg/es/asn/AppstoreAddOutlined.js","../node_modules/@ant-design/icons/es/icons/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ExportOutlined.js","../node_modules/@ant-design/icons/es/icons/ExportOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/UserAddOutlined.js","../node_modules/@ant-design/icons/es/icons/UserAddOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.js","../node_modules/@ant-design/icons/es/icons/SettingOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LogoutOutlined.js","../node_modules/@ant-design/icons/es/icons/LogoutOutlined.js","../node_modules/react-router/dist/development/chunk-HA7DTUK3.mjs","UserMain.js","../node_modules/antd/es/_util/getRenderPropValue.js","../node_modules/antd/es/popover/style/index.js","../node_modules/antd/es/popover/PurePanel.js","../node_modules/antd/es/popover/index.js","../node_modules/antd/es/popconfirm/style/index.js","../node_modules/antd/es/popconfirm/PurePanel.js","../node_modules/antd/es/popconfirm/index.js","../node_modules/antd/es/splitter/Panel.js","../node_modules/antd/es/splitter/hooks/useItems.js","../node_modules/antd/es/splitter/hooks/useSizes.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/UpOutlined.js","../node_modules/@ant-design/icons/es/icons/UpOutlined.js","../node_modules/antd/es/splitter/SplitBar.js","../node_modules/antd/es/splitter/style/index.js","../node_modules/antd/es/splitter/Splitter.js","../node_modules/antd/es/splitter/index.js","../node_modules/antd/es/splitter/hooks/useResizable.js","../node_modules/antd/es/splitter/hooks/useResize.js","../node_modules/antd/es/_util/extendsObject.js","../node_modules/antd/es/_util/responsiveObserver.js","../node_modules/antd/es/empty/empty.js","../node_modules/antd/es/empty/simple.js","../node_modules/antd/es/empty/style/index.js","../node_modules/antd/es/empty/index.js","../node_modules/antd/es/config-provider/defaultRenderEmpty.js","../node_modules/antd/es/grid/RowContext.js","../node_modules/antd/es/grid/row.js","../node_modules/antd/es/grid/hooks/useBreakpoint.js","../node_modules/antd/es/_util/hooks/useForceUpdate.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","../node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","../node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","../node_modules/rc-pagination/es/locale/zh_CN.js","../node_modules/rc-pagination/es/Options.js","../node_modules/rc-pagination/es/Pager.js","../node_modules/rc-pagination/es/Pagination.js","../node_modules/rc-select/es/TransBtn.js","../node_modules/rc-select/es/hooks/useAllowClear.js","../node_modules/rc-select/es/hooks/useBaseProps.js","../node_modules/rc-select/es/hooks/useLock.js","../node_modules/rc-overflow/es/Item.js","../node_modules/rc-overflow/es/hooks/useEffectState.js","../node_modules/rc-overflow/es/hooks/channelUpdate.js","../node_modules/rc-overflow/es/context.js","../node_modules/rc-overflow/es/RawItem.js","../node_modules/rc-overflow/es/Overflow.js","../node_modules/rc-overflow/es/index.js","../node_modules/rc-select/es/Selector/Input.js","../node_modules/rc-select/es/utils/commonUtil.js","../node_modules/rc-select/es/Selector/MultipleSelector.js","../node_modules/rc-select/es/hooks/useLayoutEffect.js","../node_modules/rc-select/es/Selector/SingleSelector.js","../node_modules/rc-select/es/Selector/index.js","../node_modules/rc-select/es/utils/keyUtil.js","../node_modules/rc-select/es/SelectTrigger.js","../node_modules/rc-select/es/utils/valueUtil.js","../node_modules/rc-select/es/SelectContext.js","../node_modules/rc-select/es/BaseSelect/Polite.js","../node_modules/rc-select/es/BaseSelect/index.js","../node_modules/rc-select/es/hooks/useDelayReset.js","../node_modules/rc-select/es/hooks/useSelectTriggerControl.js","../node_modules/rc-select/es/OptGroup.js","../node_modules/rc-select/es/Option.js","../node_modules/rc-virtual-list/es/Filler.js","../node_modules/rc-virtual-list/es/Item.js","../node_modules/rc-virtual-list/es/hooks/useDiffItem.js","../node_modules/rc-virtual-list/es/utils/algorithmUtil.js","../node_modules/rc-virtual-list/es/utils/isFirefox.js","../node_modules/rc-virtual-list/es/hooks/useOriginScroll.js","../node_modules/rc-virtual-list/es/hooks/useFrameWheel.js","../node_modules/rc-virtual-list/es/utils/CacheMap.js","../node_modules/rc-virtual-list/es/hooks/useHeights.js","../node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js","../node_modules/rc-virtual-list/es/hooks/useScrollDrag.js","../node_modules/rc-virtual-list/es/ScrollBar.js","../node_modules/rc-virtual-list/es/utils/scrollbarUtil.js","../node_modules/rc-virtual-list/es/List.js","../node_modules/rc-virtual-list/es/hooks/useScrollTo.js","../node_modules/rc-virtual-list/es/hooks/useGetSize.js","../node_modules/rc-virtual-list/es/hooks/useChildren.js","../node_modules/rc-virtual-list/es/index.js","../node_modules/rc-select/es/OptionList.js","../node_modules/rc-select/es/utils/platformUtil.js","../node_modules/rc-select/es/hooks/useFilterOptions.js","../node_modules/rc-select/es/hooks/useId.js","../node_modules/rc-select/es/utils/legacyUtil.js","../node_modules/rc-select/es/hooks/useOptions.js","../node_modules/rc-select/es/hooks/useRefFunc.js","../node_modules/rc-select/es/Select.js","../node_modules/rc-select/es/hooks/useCache.js","../node_modules/rc-select/es/index.js","../node_modules/antd/es/select/mergedBuiltinPlacements.js","../node_modules/antd/es/style/motion/slide.js","../node_modules/antd/es/style/motion/move.js","../node_modules/antd/es/select/style/dropdown.js","../node_modules/antd/es/select/style/multiple.js","../node_modules/antd/es/select/style/single.js","../node_modules/antd/es/select/style/token.js","../node_modules/antd/es/select/style/variants.js","../node_modules/antd/es/select/style/index.js","../node_modules/antd/es/select/index.js","../node_modules/antd/es/select/useShowArrow.js","../node_modules/antd/es/select/useIcons.js","../node_modules/antd/es/pagination/style/index.js","../node_modules/antd/es/pagination/style/bordered.js","../node_modules/antd/es/pagination/useShowSizeChanger.js","../node_modules/antd/es/pagination/Pagination.js","../node_modules/antd/es/pagination/index.js","../node_modules/throttle-debounce/debounce.js","../node_modules/throttle-debounce/throttle.js","../node_modules/antd/es/spin/Indicator/Progress.js","../node_modules/antd/es/spin/Indicator/Looper.js","../node_modules/antd/es/spin/Indicator/index.js","../node_modules/antd/es/spin/style/index.js","../node_modules/antd/es/spin/usePercent.js","../node_modules/antd/es/spin/index.js","../node_modules/antd/es/list/context.js","../node_modules/antd/es/grid/col.js","../node_modules/antd/es/list/Item.js","../node_modules/antd/es/list/style/index.js","../node_modules/antd/es/list/index.js","../node_modules/@ant-design/icons-svg/es/asn/HomeOutlined.js","../node_modules/@ant-design/icons/es/icons/HomeOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","../node_modules/@ant-design/icons/es/icons/DeleteOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SaveOutlined.js","../node_modules/@ant-design/icons/es/icons/SaveOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FileZipOutlined.js","../node_modules/@ant-design/icons/es/icons/FileZipOutlined.js","../node_modules/micromark-extension-math/lib/math-flow.js","../node_modules/micromark-extension-math/lib/math-text.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-math/lib/index.js","../node_modules/longest-streak/index.js","../node_modules/remark-math/index.js","../node_modules/micromark-extension-math/lib/syntax.js","../node_modules/@bytemd/plugin-math/dist/index.mjs","../node_modules/@bytemd/plugin-mermaid/dist/index.mjs","../node_modules/codemirror-ssr/lib/codemirror.js","../node_modules/codemirror-ssr/addon/display/placeholder.js","../node_modules/codemirror-ssr/mode/markdown/markdown.js","../node_modules/codemirror-ssr/mode/xml/xml.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/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/tippy.js/src/constants.ts","../node_modules/tippy.js/src/utils.ts","../node_modules/tippy.js/src/dom-utils.ts","../node_modules/tippy.js/src/bindGlobalEventListeners.ts","../node_modules/tippy.js/src/browser.ts","../node_modules/tippy.js/src/props.ts","../node_modules/tippy.js/src/template.ts","../node_modules/tippy.js/src/createTippy.ts","../node_modules/tippy.js/src/index.ts","../node_modules/tippy.js/src/addons/createSingleton.ts","../node_modules/tippy.js/src/addons/delegate.ts","../node_modules/tippy.js/build/base.js","../node_modules/hast-util-sanitize/lib/schema.js","../node_modules/unist-util-position/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/property-information/lib/find.js","../node_modules/hast-util-parse-selector/lib/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/hastscript/lib/core.js","../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../node_modules/hastscript/lib/svg.js","../node_modules/hastscript/lib/html.js","../node_modules/web-namespaces/index.js","../node_modules/hast-util-from-parse5/lib/index.js","../node_modules/vfile-location/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/hast-util-sanitize/lib/index.js","../node_modules/rehype-sanitize/index.js","../node_modules/stringify-entities/lib/core.js","../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../node_modules/stringify-entities/lib/util/to-decimal.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-entities-html4/index.js","../node_modules/stringify-entities/lib/constant/dangerous.js","../node_modules/stringify-entities/lib/util/to-named.js","../node_modules/stringify-entities/lib/util/format-smart.js","../node_modules/stringify-entities/lib/index.js","../node_modules/ccount/index.js","../node_modules/hast-util-whitespace/index.js","../node_modules/hast-util-to-html/lib/omission/util/siblings.js","../node_modules/hast-util-to-html/lib/omission/omission.js","../node_modules/hast-util-to-html/lib/omission/closing.js","../node_modules/hast-util-to-html/lib/omission/opening.js","../node_modules/hast-util-to-html/lib/handle/element.js","../node_modules/hast-util-to-html/lib/handle/text.js","../node_modules/hast-util-to-html/lib/handle/index.js","../node_modules/hast-util-to-html/lib/handle/comment.js","../node_modules/hast-util-to-html/lib/handle/doctype.js","../node_modules/hast-util-to-html/lib/handle/raw.js","../node_modules/hast-util-to-html/lib/handle/root.js","../node_modules/hast-util-to-html/lib/index.js","../node_modules/rehype-stringify/lib/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/micromark-util-sanitize-uri/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/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/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/unified/lib/index.js","../node_modules/lodash-es/debounce.js","../node_modules/lodash-es/throttle.js","../node_modules/bytemd/dist/index.mjs","../node_modules/codemirror-ssr/addon/mode/overlay.js","../node_modules/codemirror-ssr/mode/gfm/gfm.js","../node_modules/codemirror-ssr/mode/yaml/yaml.js","../node_modules/codemirror-ssr/mode/yaml-frontmatter/yaml-frontmatter.js","../node_modules/codemirror-ssr/addon/edit/continuelist.js","../node_modules/@bytemd/react/dist/index.mjs","../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/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-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/@bytemd/plugin-gfm/dist/index.mjs","GroupMain.js","../node_modules/@bytemd/plugin-highlight/dist/index.mjs","App.js","index.js"],"sourcesContent":["\nmodule.exports = function () {\n  var selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  var active = document.activeElement;\n\n  var ranges = [];\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' &&\n    selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function(range) {\n        selection.addRange(range);\n      });\n    }\n\n    active &&\n    active.focus();\n  };\n};\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, token, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tif ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters) && substr(characters, -1, void 0) !== ' ') characters += ' '\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length || (variable === 0 && previous === 47)))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// c(ontainer)\n\t\t\t\t\t\t\t\t\tcase 99:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 3) === 110) break\n\t\t\t\t\t\t\t\t\t// l(ayer)\n\t\t\t\t\t\t\t\t\tcase 108:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 2) === 97) break\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\toffset = 0\n\t\t\t\t\t\t\t\t\t// d(ocument) m(edia) s(upports)\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset) parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\telse parse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","'use strict';\n\n//Const\nconst NOAH_ARK_CAPACITY = 3;\n\n//List of formatting elements\nclass FormattingElementList {\n    constructor(treeAdapter) {\n        this.length = 0;\n        this.entries = [];\n        this.treeAdapter = treeAdapter;\n        this.bookmark = null;\n    }\n\n    //Noah Ark's condition\n    //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n    //lightweight heuristics without thorough attributes check.\n    _getNoahArkConditionCandidates(newElement) {\n        const candidates = [];\n\n        if (this.length >= NOAH_ARK_CAPACITY) {\n            const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n            const neTagName = this.treeAdapter.getTagName(newElement);\n            const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n\n            for (let i = this.length - 1; i >= 0; i--) {\n                const entry = this.entries[i];\n\n                if (entry.type === FormattingElementList.MARKER_ENTRY) {\n                    break;\n                }\n\n                const element = entry.element;\n                const elementAttrs = this.treeAdapter.getAttrList(element);\n\n                const isCandidate =\n                    this.treeAdapter.getTagName(element) === neTagName &&\n                    this.treeAdapter.getNamespaceURI(element) === neNamespaceURI &&\n                    elementAttrs.length === neAttrsLength;\n\n                if (isCandidate) {\n                    candidates.push({ idx: i, attrs: elementAttrs });\n                }\n            }\n        }\n\n        return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n    }\n\n    _ensureNoahArkCondition(newElement) {\n        const candidates = this._getNoahArkConditionCandidates(newElement);\n        let cLength = candidates.length;\n\n        if (cLength) {\n            const neAttrs = this.treeAdapter.getAttrList(newElement);\n            const neAttrsLength = neAttrs.length;\n            const neAttrsMap = Object.create(null);\n\n            //NOTE: build attrs map for the new element so we can perform fast lookups\n            for (let i = 0; i < neAttrsLength; i++) {\n                const neAttr = neAttrs[i];\n\n                neAttrsMap[neAttr.name] = neAttr.value;\n            }\n\n            for (let i = 0; i < neAttrsLength; i++) {\n                for (let j = 0; j < cLength; j++) {\n                    const cAttr = candidates[j].attrs[i];\n\n                    if (neAttrsMap[cAttr.name] !== cAttr.value) {\n                        candidates.splice(j, 1);\n                        cLength--;\n                    }\n\n                    if (candidates.length < NOAH_ARK_CAPACITY) {\n                        return;\n                    }\n                }\n            }\n\n            //NOTE: remove bottommost candidates until Noah's Ark condition will not be met\n            for (let i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\n                this.entries.splice(candidates[i].idx, 1);\n                this.length--;\n            }\n        }\n    }\n\n    //Mutations\n    insertMarker() {\n        this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n        this.length++;\n    }\n\n    pushElement(element, token) {\n        this._ensureNoahArkCondition(element);\n\n        this.entries.push({\n            type: FormattingElementList.ELEMENT_ENTRY,\n            element: element,\n            token: token\n        });\n\n        this.length++;\n    }\n\n    insertElementAfterBookmark(element, token) {\n        let bookmarkIdx = this.length - 1;\n\n        for (; bookmarkIdx >= 0; bookmarkIdx--) {\n            if (this.entries[bookmarkIdx] === this.bookmark) {\n                break;\n            }\n        }\n\n        this.entries.splice(bookmarkIdx + 1, 0, {\n            type: FormattingElementList.ELEMENT_ENTRY,\n            element: element,\n            token: token\n        });\n\n        this.length++;\n    }\n\n    removeEntry(entry) {\n        for (let i = this.length - 1; i >= 0; i--) {\n            if (this.entries[i] === entry) {\n                this.entries.splice(i, 1);\n                this.length--;\n                break;\n            }\n        }\n    }\n\n    clearToLastMarker() {\n        while (this.length) {\n            const entry = this.entries.pop();\n\n            this.length--;\n\n            if (entry.type === FormattingElementList.MARKER_ENTRY) {\n                break;\n            }\n        }\n    }\n\n    //Search\n    getElementEntryInScopeWithTagName(tagName) {\n        for (let i = this.length - 1; i >= 0; i--) {\n            const entry = this.entries[i];\n\n            if (entry.type === FormattingElementList.MARKER_ENTRY) {\n                return null;\n            }\n\n            if (this.treeAdapter.getTagName(entry.element) === tagName) {\n                return entry;\n            }\n        }\n\n        return null;\n    }\n\n    getElementEntry(element) {\n        for (let i = this.length - 1; i >= 0; i--) {\n            const entry = this.entries[i];\n\n            if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element) {\n                return entry;\n            }\n        }\n\n        return null;\n    }\n}\n\n//Entry types\nFormattingElementList.MARKER_ENTRY = 'MARKER_ENTRY';\nFormattingElementList.ELEMENT_ENTRY = 'ELEMENT_ENTRY';\n\nmodule.exports = FormattingElementList;\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcut\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Pad\n\t        data.clamp();\n\t        data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t    },\n\n\t    unpad: function (data) {\n\t        // Shortcut\n\t        var dataWords = data.words;\n\n\t        // Unpad\n\t        var i = data.sigBytes - 1;\n\t        for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t            if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t                data.sigBytes = i + 1;\n\t                break;\n\t            }\n\t        }\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst LocationInfoTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoOpenElementStackMixin = require('./open-element-stack-mixin');\nconst HTML = require('../../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\n\nclass LocationInfoParserMixin extends Mixin {\n    constructor(parser) {\n        super(parser);\n\n        this.parser = parser;\n        this.treeAdapter = this.parser.treeAdapter;\n        this.posTracker = null;\n        this.lastStartTagToken = null;\n        this.lastFosterParentingLocation = null;\n        this.currentToken = null;\n    }\n\n    _setStartLocation(element) {\n        let loc = null;\n\n        if (this.lastStartTagToken) {\n            loc = Object.assign({}, this.lastStartTagToken.location);\n            loc.startTag = this.lastStartTagToken.location;\n        }\n\n        this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n    }\n\n    _setEndLocation(element, closingToken) {\n        const loc = this.treeAdapter.getNodeSourceCodeLocation(element);\n\n        if (loc) {\n            if (closingToken.location) {\n                const ctLoc = closingToken.location;\n                const tn = this.treeAdapter.getTagName(element);\n\n                // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n                // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n                const isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN && tn === closingToken.tagName;\n                const endLoc = {};\n                if (isClosingEndTag) {\n                    endLoc.endTag = Object.assign({}, ctLoc);\n                    endLoc.endLine = ctLoc.endLine;\n                    endLoc.endCol = ctLoc.endCol;\n                    endLoc.endOffset = ctLoc.endOffset;\n                } else {\n                    endLoc.endLine = ctLoc.startLine;\n                    endLoc.endCol = ctLoc.startCol;\n                    endLoc.endOffset = ctLoc.startOffset;\n                }\n\n                this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n            }\n        }\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        return {\n            _bootstrap(document, fragmentContext) {\n                orig._bootstrap.call(this, document, fragmentContext);\n\n                mxn.lastStartTagToken = null;\n                mxn.lastFosterParentingLocation = null;\n                mxn.currentToken = null;\n\n                const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n\n                mxn.posTracker = tokenizerMixin.posTracker;\n\n                Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {\n                    onItemPop: function(element) {\n                        mxn._setEndLocation(element, mxn.currentToken);\n                    }\n                });\n            },\n\n            _runParsingLoop(scriptHandler) {\n                orig._runParsingLoop.call(this, scriptHandler);\n\n                // NOTE: generate location info for elements\n                // that remains on open element stack\n                for (let i = this.openElements.stackTop; i >= 0; i--) {\n                    mxn._setEndLocation(this.openElements.items[i], mxn.currentToken);\n                }\n            },\n\n            //Token processing\n            _processTokenInForeignContent(token) {\n                mxn.currentToken = token;\n                orig._processTokenInForeignContent.call(this, token);\n            },\n\n            _processToken(token) {\n                mxn.currentToken = token;\n                orig._processToken.call(this, token);\n\n                //NOTE: <body> and <html> are never popped from the stack, so we need to updated\n                //their end location explicitly.\n                const requireExplicitUpdate =\n                    token.type === Tokenizer.END_TAG_TOKEN &&\n                    (token.tagName === $.HTML || (token.tagName === $.BODY && this.openElements.hasInScope($.BODY)));\n\n                if (requireExplicitUpdate) {\n                    for (let i = this.openElements.stackTop; i >= 0; i--) {\n                        const element = this.openElements.items[i];\n\n                        if (this.treeAdapter.getTagName(element) === token.tagName) {\n                            mxn._setEndLocation(element, token);\n                            break;\n                        }\n                    }\n                }\n            },\n\n            //Doctype\n            _setDocumentType(token) {\n                orig._setDocumentType.call(this, token);\n\n                const documentChildren = this.treeAdapter.getChildNodes(this.document);\n                const cnLength = documentChildren.length;\n\n                for (let i = 0; i < cnLength; i++) {\n                    const node = documentChildren[i];\n\n                    if (this.treeAdapter.isDocumentTypeNode(node)) {\n                        this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n                        break;\n                    }\n                }\n            },\n\n            //Elements\n            _attachElementToTree(element) {\n                //NOTE: _attachElementToTree is called from _appendElement, _insertElement and _insertTemplate methods.\n                //So we will use token location stored in this methods for the element.\n                mxn._setStartLocation(element);\n                mxn.lastStartTagToken = null;\n                orig._attachElementToTree.call(this, element);\n            },\n\n            _appendElement(token, namespaceURI) {\n                mxn.lastStartTagToken = token;\n                orig._appendElement.call(this, token, namespaceURI);\n            },\n\n            _insertElement(token, namespaceURI) {\n                mxn.lastStartTagToken = token;\n                orig._insertElement.call(this, token, namespaceURI);\n            },\n\n            _insertTemplate(token) {\n                mxn.lastStartTagToken = token;\n                orig._insertTemplate.call(this, token);\n\n                const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n\n                this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n            },\n\n            _insertFakeRootElement() {\n                orig._insertFakeRootElement.call(this);\n                this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n            },\n\n            //Comments\n            _appendCommentNode(token, parent) {\n                orig._appendCommentNode.call(this, token, parent);\n\n                const children = this.treeAdapter.getChildNodes(parent);\n                const commentNode = children[children.length - 1];\n\n                this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n            },\n\n            //Text\n            _findFosterParentingLocation() {\n                //NOTE: store last foster parenting location, so we will be able to find inserted text\n                //in case of foster parenting\n                mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n\n                return mxn.lastFosterParentingLocation;\n            },\n\n            _insertCharacters(token) {\n                orig._insertCharacters.call(this, token);\n\n                const hasFosterParent = this._shouldFosterParentOnInsertion();\n\n                const parent =\n                    (hasFosterParent && mxn.lastFosterParentingLocation.parent) ||\n                    this.openElements.currentTmplContent ||\n                    this.openElements.current;\n\n                const siblings = this.treeAdapter.getChildNodes(parent);\n\n                const textNodeIdx =\n                    hasFosterParent && mxn.lastFosterParentingLocation.beforeElement\n                        ? siblings.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1\n                        : siblings.length - 1;\n\n                const textNode = siblings[textNodeIdx];\n\n                //NOTE: if we have location assigned by another token, then just update end position\n                const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n\n                if (tnLoc) {\n                    const { endLine, endCol, endOffset } = token.location;\n                    this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n                } else {\n                    this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n                }\n            }\n        };\n    }\n}\n\nmodule.exports = LocationInfoParserMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase {\n    constructor(preprocessor, opts) {\n        super(preprocessor, opts);\n\n        this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);\n        this.lastErrOffset = -1;\n    }\n\n    _reportError(code) {\n        //NOTE: avoid reporting error twice on advance/retreat\n        if (this.lastErrOffset !== this.posTracker.offset) {\n            this.lastErrOffset = this.posTracker.offset;\n            super._reportError(code);\n        }\n    }\n}\n\nmodule.exports = ErrorReportingPreprocessorMixin;\n","'use strict';\n\n//NOTE: this file contains auto-generated array mapped radix tree that is used for the named entity references consumption\n//(details: https://github.com/inikulin/parse5/tree/master/scripts/generate-named-entity-data/README.md)\nmodule.exports = new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4000,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,10000,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13000,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);","/**\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","'use strict';\n\nconst NS = (exports.NAMESPACES = {\n    HTML: 'http://www.w3.org/1999/xhtml',\n    MATHML: 'http://www.w3.org/1998/Math/MathML',\n    SVG: 'http://www.w3.org/2000/svg',\n    XLINK: 'http://www.w3.org/1999/xlink',\n    XML: 'http://www.w3.org/XML/1998/namespace',\n    XMLNS: 'http://www.w3.org/2000/xmlns/'\n});\n\nexports.ATTRS = {\n    TYPE: 'type',\n    ACTION: 'action',\n    ENCODING: 'encoding',\n    PROMPT: 'prompt',\n    NAME: 'name',\n    COLOR: 'color',\n    FACE: 'face',\n    SIZE: 'size'\n};\n\nexports.DOCUMENT_MODE = {\n    NO_QUIRKS: 'no-quirks',\n    QUIRKS: 'quirks',\n    LIMITED_QUIRKS: 'limited-quirks'\n};\n\nconst $ = (exports.TAG_NAMES = {\n    A: 'a',\n    ADDRESS: 'address',\n    ANNOTATION_XML: 'annotation-xml',\n    APPLET: 'applet',\n    AREA: 'area',\n    ARTICLE: 'article',\n    ASIDE: 'aside',\n\n    B: 'b',\n    BASE: 'base',\n    BASEFONT: 'basefont',\n    BGSOUND: 'bgsound',\n    BIG: 'big',\n    BLOCKQUOTE: 'blockquote',\n    BODY: 'body',\n    BR: 'br',\n    BUTTON: 'button',\n\n    CAPTION: 'caption',\n    CENTER: 'center',\n    CODE: 'code',\n    COL: 'col',\n    COLGROUP: 'colgroup',\n\n    DD: 'dd',\n    DESC: 'desc',\n    DETAILS: 'details',\n    DIALOG: 'dialog',\n    DIR: 'dir',\n    DIV: 'div',\n    DL: 'dl',\n    DT: 'dt',\n\n    EM: 'em',\n    EMBED: 'embed',\n\n    FIELDSET: 'fieldset',\n    FIGCAPTION: 'figcaption',\n    FIGURE: 'figure',\n    FONT: 'font',\n    FOOTER: 'footer',\n    FOREIGN_OBJECT: 'foreignObject',\n    FORM: 'form',\n    FRAME: 'frame',\n    FRAMESET: 'frameset',\n\n    H1: 'h1',\n    H2: 'h2',\n    H3: 'h3',\n    H4: 'h4',\n    H5: 'h5',\n    H6: 'h6',\n    HEAD: 'head',\n    HEADER: 'header',\n    HGROUP: 'hgroup',\n    HR: 'hr',\n    HTML: 'html',\n\n    I: 'i',\n    IMG: 'img',\n    IMAGE: 'image',\n    INPUT: 'input',\n    IFRAME: 'iframe',\n\n    KEYGEN: 'keygen',\n\n    LABEL: 'label',\n    LI: 'li',\n    LINK: 'link',\n    LISTING: 'listing',\n\n    MAIN: 'main',\n    MALIGNMARK: 'malignmark',\n    MARQUEE: 'marquee',\n    MATH: 'math',\n    MENU: 'menu',\n    META: 'meta',\n    MGLYPH: 'mglyph',\n    MI: 'mi',\n    MO: 'mo',\n    MN: 'mn',\n    MS: 'ms',\n    MTEXT: 'mtext',\n\n    NAV: 'nav',\n    NOBR: 'nobr',\n    NOFRAMES: 'noframes',\n    NOEMBED: 'noembed',\n    NOSCRIPT: 'noscript',\n\n    OBJECT: 'object',\n    OL: 'ol',\n    OPTGROUP: 'optgroup',\n    OPTION: 'option',\n\n    P: 'p',\n    PARAM: 'param',\n    PLAINTEXT: 'plaintext',\n    PRE: 'pre',\n\n    RB: 'rb',\n    RP: 'rp',\n    RT: 'rt',\n    RTC: 'rtc',\n    RUBY: 'ruby',\n\n    S: 's',\n    SCRIPT: 'script',\n    SECTION: 'section',\n    SELECT: 'select',\n    SOURCE: 'source',\n    SMALL: 'small',\n    SPAN: 'span',\n    STRIKE: 'strike',\n    STRONG: 'strong',\n    STYLE: 'style',\n    SUB: 'sub',\n    SUMMARY: 'summary',\n    SUP: 'sup',\n\n    TABLE: 'table',\n    TBODY: 'tbody',\n    TEMPLATE: 'template',\n    TEXTAREA: 'textarea',\n    TFOOT: 'tfoot',\n    TD: 'td',\n    TH: 'th',\n    THEAD: 'thead',\n    TITLE: 'title',\n    TR: 'tr',\n    TRACK: 'track',\n    TT: 'tt',\n\n    U: 'u',\n    UL: 'ul',\n\n    SVG: 'svg',\n\n    VAR: 'var',\n\n    WBR: 'wbr',\n\n    XMP: 'xmp'\n});\n\nexports.SPECIAL_ELEMENTS = {\n    [NS.HTML]: {\n        [$.ADDRESS]: true,\n        [$.APPLET]: true,\n        [$.AREA]: true,\n        [$.ARTICLE]: true,\n        [$.ASIDE]: true,\n        [$.BASE]: true,\n        [$.BASEFONT]: true,\n        [$.BGSOUND]: true,\n        [$.BLOCKQUOTE]: true,\n        [$.BODY]: true,\n        [$.BR]: true,\n        [$.BUTTON]: true,\n        [$.CAPTION]: true,\n        [$.CENTER]: true,\n        [$.COL]: true,\n        [$.COLGROUP]: true,\n        [$.DD]: true,\n        [$.DETAILS]: true,\n        [$.DIR]: true,\n        [$.DIV]: true,\n        [$.DL]: true,\n        [$.DT]: true,\n        [$.EMBED]: true,\n        [$.FIELDSET]: true,\n        [$.FIGCAPTION]: true,\n        [$.FIGURE]: true,\n        [$.FOOTER]: true,\n        [$.FORM]: true,\n        [$.FRAME]: true,\n        [$.FRAMESET]: true,\n        [$.H1]: true,\n        [$.H2]: true,\n        [$.H3]: true,\n        [$.H4]: true,\n        [$.H5]: true,\n        [$.H6]: true,\n        [$.HEAD]: true,\n        [$.HEADER]: true,\n        [$.HGROUP]: true,\n        [$.HR]: true,\n        [$.HTML]: true,\n        [$.IFRAME]: true,\n        [$.IMG]: true,\n        [$.INPUT]: true,\n        [$.LI]: true,\n        [$.LINK]: true,\n        [$.LISTING]: true,\n        [$.MAIN]: true,\n        [$.MARQUEE]: true,\n        [$.MENU]: true,\n        [$.META]: true,\n        [$.NAV]: true,\n        [$.NOEMBED]: true,\n        [$.NOFRAMES]: true,\n        [$.NOSCRIPT]: true,\n        [$.OBJECT]: true,\n        [$.OL]: true,\n        [$.P]: true,\n        [$.PARAM]: true,\n        [$.PLAINTEXT]: true,\n        [$.PRE]: true,\n        [$.SCRIPT]: true,\n        [$.SECTION]: true,\n        [$.SELECT]: true,\n        [$.SOURCE]: true,\n        [$.STYLE]: true,\n        [$.SUMMARY]: true,\n        [$.TABLE]: true,\n        [$.TBODY]: true,\n        [$.TD]: true,\n        [$.TEMPLATE]: true,\n        [$.TEXTAREA]: true,\n        [$.TFOOT]: true,\n        [$.TH]: true,\n        [$.THEAD]: true,\n        [$.TITLE]: true,\n        [$.TR]: true,\n        [$.TRACK]: true,\n        [$.UL]: true,\n        [$.WBR]: true,\n        [$.XMP]: true\n    },\n    [NS.MATHML]: {\n        [$.MI]: true,\n        [$.MO]: true,\n        [$.MN]: true,\n        [$.MS]: true,\n        [$.MTEXT]: true,\n        [$.ANNOTATION_XML]: true\n    },\n    [NS.SVG]: {\n        [$.TITLE]: true,\n        [$.FOREIGN_OBJECT]: true,\n        [$.DESC]: true\n    }\n};\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t    var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    CFB.Encryptor = CFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher;\n\t            var blockSize = cipher.blockSize;\n\n\t            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t            // Remember this block to use with next block\n\t            this._prevBlock = words.slice(offset, offset + blockSize);\n\t        }\n\t    });\n\n\t    CFB.Decryptor = CFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher;\n\t            var blockSize = cipher.blockSize;\n\n\t            // Remember this block to use with next block\n\t            var thisBlock = words.slice(offset, offset + blockSize);\n\n\t            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t            // This block becomes the previous block\n\t            this._prevBlock = thisBlock;\n\t        }\n\t    });\n\n\t    function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t        var keystream;\n\n\t        // Shortcut\n\t        var iv = this._iv;\n\n\t        // Generate keystream\n\t        if (iv) {\n\t            keystream = iv.slice(0);\n\n\t            // Remove IV for subsequent blocks\n\t            this._iv = undefined;\n\t        } else {\n\t            keystream = this._prevBlock;\n\t        }\n\t        cipher.encryptBlock(keystream, 0);\n\n\t        // Encrypt\n\t        for (var i = 0; i < blockSize; i++) {\n\t            words[offset + i] ^= keystream[i];\n\t        }\n\t    }\n\n\t    return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nmodule.exports = {\n    controlCharacterInInputStream: 'control-character-in-input-stream',\n    noncharacterInInputStream: 'noncharacter-in-input-stream',\n    surrogateInInputStream: 'surrogate-in-input-stream',\n    nonVoidHtmlElementStartTagWithTrailingSolidus: 'non-void-html-element-start-tag-with-trailing-solidus',\n    endTagWithAttributes: 'end-tag-with-attributes',\n    endTagWithTrailingSolidus: 'end-tag-with-trailing-solidus',\n    unexpectedSolidusInTag: 'unexpected-solidus-in-tag',\n    unexpectedNullCharacter: 'unexpected-null-character',\n    unexpectedQuestionMarkInsteadOfTagName: 'unexpected-question-mark-instead-of-tag-name',\n    invalidFirstCharacterOfTagName: 'invalid-first-character-of-tag-name',\n    unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',\n    missingEndTagName: 'missing-end-tag-name',\n    unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',\n    unknownNamedCharacterReference: 'unknown-named-character-reference',\n    missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',\n    unexpectedCharacterAfterDoctypeSystemIdentifier: 'unexpected-character-after-doctype-system-identifier',\n    unexpectedCharacterInUnquotedAttributeValue: 'unexpected-character-in-unquoted-attribute-value',\n    eofBeforeTagName: 'eof-before-tag-name',\n    eofInTag: 'eof-in-tag',\n    missingAttributeValue: 'missing-attribute-value',\n    missingWhitespaceBetweenAttributes: 'missing-whitespace-between-attributes',\n    missingWhitespaceAfterDoctypePublicKeyword: 'missing-whitespace-after-doctype-public-keyword',\n    missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:\n        'missing-whitespace-between-doctype-public-and-system-identifiers',\n    missingWhitespaceAfterDoctypeSystemKeyword: 'missing-whitespace-after-doctype-system-keyword',\n    missingQuoteBeforeDoctypePublicIdentifier: 'missing-quote-before-doctype-public-identifier',\n    missingQuoteBeforeDoctypeSystemIdentifier: 'missing-quote-before-doctype-system-identifier',\n    missingDoctypePublicIdentifier: 'missing-doctype-public-identifier',\n    missingDoctypeSystemIdentifier: 'missing-doctype-system-identifier',\n    abruptDoctypePublicIdentifier: 'abrupt-doctype-public-identifier',\n    abruptDoctypeSystemIdentifier: 'abrupt-doctype-system-identifier',\n    cdataInHtmlContent: 'cdata-in-html-content',\n    incorrectlyOpenedComment: 'incorrectly-opened-comment',\n    eofInScriptHtmlCommentLikeText: 'eof-in-script-html-comment-like-text',\n    eofInDoctype: 'eof-in-doctype',\n    nestedComment: 'nested-comment',\n    abruptClosingOfEmptyComment: 'abrupt-closing-of-empty-comment',\n    eofInComment: 'eof-in-comment',\n    incorrectlyClosedComment: 'incorrectly-closed-comment',\n    eofInCdata: 'eof-in-cdata',\n    absenceOfDigitsInNumericCharacterReference: 'absence-of-digits-in-numeric-character-reference',\n    nullCharacterReference: 'null-character-reference',\n    surrogateCharacterReference: 'surrogate-character-reference',\n    characterReferenceOutsideUnicodeRange: 'character-reference-outside-unicode-range',\n    controlCharacterReference: 'control-character-reference',\n    noncharacterCharacterReference: 'noncharacter-character-reference',\n    missingWhitespaceBeforeDoctypeName: 'missing-whitespace-before-doctype-name',\n    missingDoctypeName: 'missing-doctype-name',\n    invalidCharacterSequenceAfterDoctypeName: 'invalid-character-sequence-after-doctype-name',\n    duplicateAttribute: 'duplicate-attribute',\n    nonConformingDoctype: 'non-conforming-doctype',\n    missingDoctype: 'missing-doctype',\n    misplacedDoctype: 'misplaced-doctype',\n    endTagWithoutMatchingOpenElement: 'end-tag-without-matching-open-element',\n    closingOfElementWithOpenChildElements: 'closing-of-element-with-open-child-elements',\n    disallowedContentInNoscriptInHead: 'disallowed-content-in-noscript-in-head',\n    openElementsLeftAfterEof: 'open-elements-left-after-eof',\n    abandonedHeadElementChild: 'abandoned-head-element-child',\n    misplacedStartTagForHeadElement: 'misplaced-start-tag-for-head-element',\n    nestedNoscriptInHead: 'nested-noscript-in-head',\n    eofInElementThatCanContainOnlyText: 'eof-in-element-that-can-contain-only-text'\n};\n","/**\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",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA256 = C_algo.SHA256;\n\n\t    /**\n\t     * SHA-224 hash algorithm.\n\t     */\n\t    var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t                0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t            ]);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var hash = SHA256._doFinalize.call(this);\n\n\t            hash.sigBytes -= 4;\n\n\t            return hash;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA224('message');\n\t     *     var hash = CryptoJS.SHA224(wordArray);\n\t     */\n\t    C.SHA224 = SHA256._createHelper(SHA224);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA224(message, key);\n\t     */\n\t    C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable objects\n\t    var S  = [];\n\t    var C_ = [];\n\t    var G  = [];\n\n\t    /**\n\t     * Rabbit stream cipher algorithm.\n\t     *\n\t     * This is a legacy version that neglected to convert the key to little-endian.\n\t     * This error doesn't affect the cipher's security,\n\t     * but it does affect its compatibility with other implementations.\n\t     */\n\t    var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var K = this._key.words;\n\t            var iv = this.cfg.iv;\n\n\t            // Generate initial state values\n\t            var X = this._X = [\n\t                K[0], (K[3] << 16) | (K[2] >>> 16),\n\t                K[1], (K[0] << 16) | (K[3] >>> 16),\n\t                K[2], (K[1] << 16) | (K[0] >>> 16),\n\t                K[3], (K[2] << 16) | (K[1] >>> 16)\n\t            ];\n\n\t            // Generate initial counter values\n\t            var C = this._C = [\n\t                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t            ];\n\n\t            // Carry bit\n\t            this._b = 0;\n\n\t            // Iterate the system four times\n\t            for (var i = 0; i < 4; i++) {\n\t                nextState.call(this);\n\t            }\n\n\t            // Modify the counters\n\t            for (var i = 0; i < 8; i++) {\n\t                C[i] ^= X[(i + 4) & 7];\n\t            }\n\n\t            // IV setup\n\t            if (iv) {\n\t                // Shortcuts\n\t                var IV = iv.words;\n\t                var IV_0 = IV[0];\n\t                var IV_1 = IV[1];\n\n\t                // Generate four subvectors\n\t                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n\t                // Modify counter values\n\t                C[0] ^= i0;\n\t                C[1] ^= i1;\n\t                C[2] ^= i2;\n\t                C[3] ^= i3;\n\t                C[4] ^= i0;\n\t                C[5] ^= i1;\n\t                C[6] ^= i2;\n\t                C[7] ^= i3;\n\n\t                // Iterate the system four times\n\t                for (var i = 0; i < 4; i++) {\n\t                    nextState.call(this);\n\t                }\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var X = this._X;\n\n\t            // Iterate the system\n\t            nextState.call(this);\n\n\t            // Generate four keystream words\n\t            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t            for (var i = 0; i < 4; i++) {\n\t                // Swap endian\n\t                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n\t                // Encrypt\n\t                M[offset + i] ^= S[i];\n\t            }\n\t        },\n\n\t        blockSize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    function nextState() {\n\t        // Shortcuts\n\t        var X = this._X;\n\t        var C = this._C;\n\n\t        // Save old counter values\n\t        for (var i = 0; i < 8; i++) {\n\t            C_[i] = C[i];\n\t        }\n\n\t        // Calculate new counter values\n\t        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t        // Calculate the g-values\n\t        for (var i = 0; i < 8; i++) {\n\t            var gx = X[i] + C[i];\n\n\t            // Construct high and low argument for squaring\n\t            var ga = gx & 0xffff;\n\t            var gb = gx >>> 16;\n\n\t            // Calculate high and low result of squaring\n\t            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t            // High XOR low\n\t            G[i] = gh ^ gl;\n\t        }\n\n\t        // Calculate new state values\n\t        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n\t        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n\t        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n\t        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));","'use strict';\n\nconst Preprocessor = require('./preprocessor');\nconst unicode = require('../common/unicode');\nconst neTree = require('./named-entity-data');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\nconst $$ = unicode.CODE_POINT_SEQUENCES;\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n    0x80: 0x20ac,\n    0x82: 0x201a,\n    0x83: 0x0192,\n    0x84: 0x201e,\n    0x85: 0x2026,\n    0x86: 0x2020,\n    0x87: 0x2021,\n    0x88: 0x02c6,\n    0x89: 0x2030,\n    0x8a: 0x0160,\n    0x8b: 0x2039,\n    0x8c: 0x0152,\n    0x8e: 0x017d,\n    0x91: 0x2018,\n    0x92: 0x2019,\n    0x93: 0x201c,\n    0x94: 0x201d,\n    0x95: 0x2022,\n    0x96: 0x2013,\n    0x97: 0x2014,\n    0x98: 0x02dc,\n    0x99: 0x2122,\n    0x9a: 0x0161,\n    0x9b: 0x203a,\n    0x9c: 0x0153,\n    0x9e: 0x017e,\n    0x9f: 0x0178\n};\n\n// Named entity tree flags\nconst HAS_DATA_FLAG = 1 << 0;\nconst DATA_DUPLET_FLAG = 1 << 1;\nconst HAS_BRANCHES_FLAG = 1 << 2;\nconst MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\n\n//States\nconst DATA_STATE = 'DATA_STATE';\nconst RCDATA_STATE = 'RCDATA_STATE';\nconst RAWTEXT_STATE = 'RAWTEXT_STATE';\nconst SCRIPT_DATA_STATE = 'SCRIPT_DATA_STATE';\nconst PLAINTEXT_STATE = 'PLAINTEXT_STATE';\nconst TAG_OPEN_STATE = 'TAG_OPEN_STATE';\nconst END_TAG_OPEN_STATE = 'END_TAG_OPEN_STATE';\nconst TAG_NAME_STATE = 'TAG_NAME_STATE';\nconst RCDATA_LESS_THAN_SIGN_STATE = 'RCDATA_LESS_THAN_SIGN_STATE';\nconst RCDATA_END_TAG_OPEN_STATE = 'RCDATA_END_TAG_OPEN_STATE';\nconst RCDATA_END_TAG_NAME_STATE = 'RCDATA_END_TAG_NAME_STATE';\nconst RAWTEXT_LESS_THAN_SIGN_STATE = 'RAWTEXT_LESS_THAN_SIGN_STATE';\nconst RAWTEXT_END_TAG_OPEN_STATE = 'RAWTEXT_END_TAG_OPEN_STATE';\nconst RAWTEXT_END_TAG_NAME_STATE = 'RAWTEXT_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_END_TAG_OPEN_STATE = 'SCRIPT_DATA_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_END_TAG_NAME_STATE = 'SCRIPT_DATA_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_ESCAPE_START_STATE = 'SCRIPT_DATA_ESCAPE_START_STATE';\nconst SCRIPT_DATA_ESCAPE_START_DASH_STATE = 'SCRIPT_DATA_ESCAPE_START_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_STATE = 'SCRIPT_DATA_ESCAPED_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE';\nconst BEFORE_ATTRIBUTE_NAME_STATE = 'BEFORE_ATTRIBUTE_NAME_STATE';\nconst ATTRIBUTE_NAME_STATE = 'ATTRIBUTE_NAME_STATE';\nconst AFTER_ATTRIBUTE_NAME_STATE = 'AFTER_ATTRIBUTE_NAME_STATE';\nconst BEFORE_ATTRIBUTE_VALUE_STATE = 'BEFORE_ATTRIBUTE_VALUE_STATE';\nconst ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_UNQUOTED_STATE = 'ATTRIBUTE_VALUE_UNQUOTED_STATE';\nconst AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE';\nconst SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE';\nconst BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE';\nconst MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE';\nconst COMMENT_START_STATE = 'COMMENT_START_STATE';\nconst COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE';\nconst COMMENT_STATE = 'COMMENT_STATE';\nconst COMMENT_LESS_THAN_SIGN_STATE = 'COMMENT_LESS_THAN_SIGN_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE';\nconst COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE';\nconst COMMENT_END_STATE = 'COMMENT_END_STATE';\nconst COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE';\nconst DOCTYPE_STATE = 'DOCTYPE_STATE';\nconst BEFORE_DOCTYPE_NAME_STATE = 'BEFORE_DOCTYPE_NAME_STATE';\nconst DOCTYPE_NAME_STATE = 'DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_NAME_STATE = 'AFTER_DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = 'AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = 'BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE';\nconst AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = 'AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst BOGUS_DOCTYPE_STATE = 'BOGUS_DOCTYPE_STATE';\nconst CDATA_SECTION_STATE = 'CDATA_SECTION_STATE';\nconst CDATA_SECTION_BRACKET_STATE = 'CDATA_SECTION_BRACKET_STATE';\nconst CDATA_SECTION_END_STATE = 'CDATA_SECTION_END_STATE';\nconst CHARACTER_REFERENCE_STATE = 'CHARACTER_REFERENCE_STATE';\nconst NAMED_CHARACTER_REFERENCE_STATE = 'NAMED_CHARACTER_REFERENCE_STATE';\nconst AMBIGUOUS_AMPERSAND_STATE = 'AMBIGUOS_AMPERSAND_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_STATE = 'NUMERIC_CHARACTER_REFERENCE_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_START_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_START_STATE = 'DECIMAL_CHARACTER_REFERENCE_START_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_STATE = 'DECIMAL_CHARACTER_REFERENCE_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_END_STATE = 'NUMERIC_CHARACTER_REFERENCE_END_STATE';\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isWhitespace(cp) {\n    return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\n\nfunction isAsciiDigit(cp) {\n    return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\n\nfunction isAsciiUpper(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\n\nfunction isAsciiLower(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\n\nfunction isAsciiLetter(cp) {\n    return isAsciiLower(cp) || isAsciiUpper(cp);\n}\n\nfunction isAsciiAlphaNumeric(cp) {\n    return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\n\nfunction isAsciiUpperHexDigit(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\n\nfunction isAsciiLowerHexDigit(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\n\nfunction isAsciiHexDigit(cp) {\n    return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\n\nfunction toAsciiLowerCodePoint(cp) {\n    return cp + 0x0020;\n}\n\n//NOTE: String.fromCharCode() function can handle only characters from BMP subset.\n//So, we need to workaround this manually.\n//(see: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode#Getting_it_to_work_with_higher_values)\nfunction toChar(cp) {\n    if (cp <= 0xffff) {\n        return String.fromCharCode(cp);\n    }\n\n    cp -= 0x10000;\n    return String.fromCharCode(((cp >>> 10) & 0x3ff) | 0xd800) + String.fromCharCode(0xdc00 | (cp & 0x3ff));\n}\n\nfunction toAsciiLowerChar(cp) {\n    return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\n\nfunction findNamedEntityTreeBranch(nodeIx, cp) {\n    const branchCount = neTree[++nodeIx];\n    let lo = ++nodeIx;\n    let hi = lo + branchCount - 1;\n\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midCp = neTree[mid];\n\n        if (midCp < cp) {\n            lo = mid + 1;\n        } else if (midCp > cp) {\n            hi = mid - 1;\n        } else {\n            return neTree[mid + branchCount];\n        }\n    }\n\n    return -1;\n}\n\n//Tokenizer\nclass Tokenizer {\n    constructor() {\n        this.preprocessor = new Preprocessor();\n\n        this.tokenQueue = [];\n\n        this.allowCDATA = false;\n\n        this.state = DATA_STATE;\n        this.returnState = '';\n\n        this.charRefCode = -1;\n        this.tempBuff = [];\n        this.lastStartTagName = '';\n\n        this.consumedAfterSnapshot = -1;\n        this.active = false;\n\n        this.currentCharacterToken = null;\n        this.currentToken = null;\n        this.currentAttr = null;\n    }\n\n    //Errors\n    _err() {\n        // NOTE: err reporting is noop by default. Enabled by mixin.\n    }\n\n    _errOnNextCodePoint(err) {\n        this._consume();\n        this._err(err);\n        this._unconsume();\n    }\n\n    //API\n    getNextToken() {\n        while (!this.tokenQueue.length && this.active) {\n            this.consumedAfterSnapshot = 0;\n\n            const cp = this._consume();\n\n            if (!this._ensureHibernation()) {\n                this[this.state](cp);\n            }\n        }\n\n        return this.tokenQueue.shift();\n    }\n\n    write(chunk, isLastChunk) {\n        this.active = true;\n        this.preprocessor.write(chunk, isLastChunk);\n    }\n\n    insertHtmlAtCurrentPos(chunk) {\n        this.active = true;\n        this.preprocessor.insertHtmlAtCurrentPos(chunk);\n    }\n\n    //Hibernation\n    _ensureHibernation() {\n        if (this.preprocessor.endOfChunkHit) {\n            for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n                this.preprocessor.retreat();\n            }\n\n            this.active = false;\n            this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n\n            return true;\n        }\n\n        return false;\n    }\n\n    //Consumption\n    _consume() {\n        this.consumedAfterSnapshot++;\n        return this.preprocessor.advance();\n    }\n\n    _unconsume() {\n        this.consumedAfterSnapshot--;\n        this.preprocessor.retreat();\n    }\n\n    _reconsumeInState(state) {\n        this.state = state;\n        this._unconsume();\n    }\n\n    _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n        let consumedCount = 0;\n        let isMatch = true;\n        const patternLength = pattern.length;\n        let patternPos = 0;\n        let cp = startCp;\n        let patternCp = void 0;\n\n        for (; patternPos < patternLength; patternPos++) {\n            if (patternPos > 0) {\n                cp = this._consume();\n                consumedCount++;\n            }\n\n            if (cp === $.EOF) {\n                isMatch = false;\n                break;\n            }\n\n            patternCp = pattern[patternPos];\n\n            if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n                isMatch = false;\n                break;\n            }\n        }\n\n        if (!isMatch) {\n            while (consumedCount--) {\n                this._unconsume();\n            }\n        }\n\n        return isMatch;\n    }\n\n    //Temp buffer\n    _isTempBufferEqualToScriptString() {\n        if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n            return false;\n        }\n\n        for (let i = 0; i < this.tempBuff.length; i++) {\n            if (this.tempBuff[i] !== $$.SCRIPT_STRING[i]) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    //Token creation\n    _createStartTagToken() {\n        this.currentToken = {\n            type: Tokenizer.START_TAG_TOKEN,\n            tagName: '',\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: []\n        };\n    }\n\n    _createEndTagToken() {\n        this.currentToken = {\n            type: Tokenizer.END_TAG_TOKEN,\n            tagName: '',\n            selfClosing: false,\n            attrs: []\n        };\n    }\n\n    _createCommentToken() {\n        this.currentToken = {\n            type: Tokenizer.COMMENT_TOKEN,\n            data: ''\n        };\n    }\n\n    _createDoctypeToken(initialName) {\n        this.currentToken = {\n            type: Tokenizer.DOCTYPE_TOKEN,\n            name: initialName,\n            forceQuirks: false,\n            publicId: null,\n            systemId: null\n        };\n    }\n\n    _createCharacterToken(type, ch) {\n        this.currentCharacterToken = {\n            type: type,\n            chars: ch\n        };\n    }\n\n    _createEOFToken() {\n        this.currentToken = { type: Tokenizer.EOF_TOKEN };\n    }\n\n    //Tag attributes\n    _createAttr(attrNameFirstCh) {\n        this.currentAttr = {\n            name: attrNameFirstCh,\n            value: ''\n        };\n    }\n\n    _leaveAttrName(toState) {\n        if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n            this.currentToken.attrs.push(this.currentAttr);\n        } else {\n            this._err(ERR.duplicateAttribute);\n        }\n\n        this.state = toState;\n    }\n\n    _leaveAttrValue(toState) {\n        this.state = toState;\n    }\n\n    //Token emission\n    _emitCurrentToken() {\n        this._emitCurrentCharacterToken();\n\n        const ct = this.currentToken;\n\n        this.currentToken = null;\n\n        //NOTE: store emited start tag's tagName to determine is the following end tag token is appropriate.\n        if (ct.type === Tokenizer.START_TAG_TOKEN) {\n            this.lastStartTagName = ct.tagName;\n        } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n            if (ct.attrs.length > 0) {\n                this._err(ERR.endTagWithAttributes);\n            }\n\n            if (ct.selfClosing) {\n                this._err(ERR.endTagWithTrailingSolidus);\n            }\n        }\n\n        this.tokenQueue.push(ct);\n    }\n\n    _emitCurrentCharacterToken() {\n        if (this.currentCharacterToken) {\n            this.tokenQueue.push(this.currentCharacterToken);\n            this.currentCharacterToken = null;\n        }\n    }\n\n    _emitEOFToken() {\n        this._createEOFToken();\n        this._emitCurrentToken();\n    }\n\n    //Characters emission\n\n    //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n    //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n    //If we have a sequence of characters that belong to the same group, parser can process it\n    //as a single solid character token.\n    //So, there are 3 types of character tokens in parse5:\n    //1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n    //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n  \\r\\t   \\f')\n    //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n    _appendCharToCurrentCharacterToken(type, ch) {\n        if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n            this._emitCurrentCharacterToken();\n        }\n\n        if (this.currentCharacterToken) {\n            this.currentCharacterToken.chars += ch;\n        } else {\n            this._createCharacterToken(type, ch);\n        }\n    }\n\n    _emitCodePoint(cp) {\n        let type = Tokenizer.CHARACTER_TOKEN;\n\n        if (isWhitespace(cp)) {\n            type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n        } else if (cp === $.NULL) {\n            type = Tokenizer.NULL_CHARACTER_TOKEN;\n        }\n\n        this._appendCharToCurrentCharacterToken(type, toChar(cp));\n    }\n\n    _emitSeveralCodePoints(codePoints) {\n        for (let i = 0; i < codePoints.length; i++) {\n            this._emitCodePoint(codePoints[i]);\n        }\n    }\n\n    //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n    //So we can avoid additional checks here.\n    _emitChars(ch) {\n        this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n    }\n\n    // Character reference helpers\n    _matchNamedCharacterReference(startCp) {\n        let result = null;\n        let excess = 1;\n        let i = findNamedEntityTreeBranch(0, startCp);\n\n        this.tempBuff.push(startCp);\n\n        while (i > -1) {\n            const current = neTree[i];\n            const inNode = current < MAX_BRANCH_MARKER_VALUE;\n            const nodeWithData = inNode && current & HAS_DATA_FLAG;\n\n            if (nodeWithData) {\n                //NOTE: we use greedy search, so we continue lookup at this point\n                result = current & DATA_DUPLET_FLAG ? [neTree[++i], neTree[++i]] : [neTree[++i]];\n                excess = 0;\n            }\n\n            const cp = this._consume();\n\n            this.tempBuff.push(cp);\n            excess++;\n\n            if (cp === $.EOF) {\n                break;\n            }\n\n            if (inNode) {\n                i = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i, cp) : -1;\n            } else {\n                i = cp === current ? ++i : -1;\n            }\n        }\n\n        while (excess--) {\n            this.tempBuff.pop();\n            this._unconsume();\n        }\n\n        return result;\n    }\n\n    _isCharacterReferenceInAttribute() {\n        return (\n            this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE ||\n            this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE ||\n            this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE\n        );\n    }\n\n    _isCharacterReferenceAttributeQuirk(withSemicolon) {\n        if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n            const nextCp = this._consume();\n\n            this._unconsume();\n\n            return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n        }\n\n        return false;\n    }\n\n    _flushCodePointsConsumedAsCharacterReference() {\n        if (this._isCharacterReferenceInAttribute()) {\n            for (let i = 0; i < this.tempBuff.length; i++) {\n                this.currentAttr.value += toChar(this.tempBuff[i]);\n            }\n        } else {\n            this._emitSeveralCodePoints(this.tempBuff);\n        }\n\n        this.tempBuff = [];\n    }\n\n    // State machine\n\n    // Data state\n    //------------------------------------------------------------------\n    [DATA_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.LESS_THAN_SIGN) {\n            this.state = TAG_OPEN_STATE;\n        } else if (cp === $.AMPERSAND) {\n            this.returnState = DATA_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitCodePoint(cp);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    //  RCDATA state\n    //------------------------------------------------------------------\n    [RCDATA_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.AMPERSAND) {\n            this.returnState = RCDATA_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = RCDATA_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // RAWTEXT state\n    //------------------------------------------------------------------\n    [RAWTEXT_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.LESS_THAN_SIGN) {\n            this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // PLAINTEXT state\n    //------------------------------------------------------------------\n    [PLAINTEXT_STATE](cp) {\n        this.preprocessor.dropParsedChunk();\n\n        if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Tag open state\n    //------------------------------------------------------------------\n    [TAG_OPEN_STATE](cp) {\n        if (cp === $.EXCLAMATION_MARK) {\n            this.state = MARKUP_DECLARATION_OPEN_STATE;\n        } else if (cp === $.SOLIDUS) {\n            this.state = END_TAG_OPEN_STATE;\n        } else if (isAsciiLetter(cp)) {\n            this._createStartTagToken();\n            this._reconsumeInState(TAG_NAME_STATE);\n        } else if (cp === $.QUESTION_MARK) {\n            this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n            this._createCommentToken();\n            this._reconsumeInState(BOGUS_COMMENT_STATE);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofBeforeTagName);\n            this._emitChars('<');\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.invalidFirstCharacterOfTagName);\n            this._emitChars('<');\n            this._reconsumeInState(DATA_STATE);\n        }\n    }\n\n    // End tag open state\n    //------------------------------------------------------------------\n    [END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(TAG_NAME_STATE);\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingEndTagName);\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofBeforeTagName);\n            this._emitChars('</');\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.invalidFirstCharacterOfTagName);\n            this._createCommentToken();\n            this._reconsumeInState(BOGUS_COMMENT_STATE);\n        }\n    }\n\n    // Tag name state\n    //------------------------------------------------------------------\n    [TAG_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n        } else if (cp === $.SOLIDUS) {\n            this.state = SELF_CLOSING_START_TAG_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.tagName += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this.currentToken.tagName += toChar(cp);\n        }\n    }\n\n    // RCDATA less-than sign state\n    //------------------------------------------------------------------\n    [RCDATA_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = RCDATA_END_TAG_OPEN_STATE;\n        } else {\n            this._emitChars('<');\n            this._reconsumeInState(RCDATA_STATE);\n        }\n    }\n\n    // RCDATA end tag open state\n    //------------------------------------------------------------------\n    [RCDATA_END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n        } else {\n            this._emitChars('</');\n            this._reconsumeInState(RCDATA_STATE);\n        }\n    }\n\n    // RCDATA end tag name state\n    //------------------------------------------------------------------\n    [RCDATA_END_TAG_NAME_STATE](cp) {\n        if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n            this.tempBuff.push(cp);\n        } else if (isAsciiLower(cp)) {\n            this.currentToken.tagName += toChar(cp);\n            this.tempBuff.push(cp);\n        } else {\n            if (this.lastStartTagName === this.currentToken.tagName) {\n                if (isWhitespace(cp)) {\n                    this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                    return;\n                }\n\n                if (cp === $.SOLIDUS) {\n                    this.state = SELF_CLOSING_START_TAG_STATE;\n                    return;\n                }\n\n                if (cp === $.GREATER_THAN_SIGN) {\n                    this.state = DATA_STATE;\n                    this._emitCurrentToken();\n                    return;\n                }\n            }\n\n            this._emitChars('</');\n            this._emitSeveralCodePoints(this.tempBuff);\n            this._reconsumeInState(RCDATA_STATE);\n        }\n    }\n\n    // RAWTEXT less-than sign state\n    //------------------------------------------------------------------\n    [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = RAWTEXT_END_TAG_OPEN_STATE;\n        } else {\n            this._emitChars('<');\n            this._reconsumeInState(RAWTEXT_STATE);\n        }\n    }\n\n    // RAWTEXT end tag open state\n    //------------------------------------------------------------------\n    [RAWTEXT_END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n        } else {\n            this._emitChars('</');\n            this._reconsumeInState(RAWTEXT_STATE);\n        }\n    }\n\n    // RAWTEXT end tag name state\n    //------------------------------------------------------------------\n    [RAWTEXT_END_TAG_NAME_STATE](cp) {\n        if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n            this.tempBuff.push(cp);\n        } else if (isAsciiLower(cp)) {\n            this.currentToken.tagName += toChar(cp);\n            this.tempBuff.push(cp);\n        } else {\n            if (this.lastStartTagName === this.currentToken.tagName) {\n                if (isWhitespace(cp)) {\n                    this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                    return;\n                }\n\n                if (cp === $.SOLIDUS) {\n                    this.state = SELF_CLOSING_START_TAG_STATE;\n                    return;\n                }\n\n                if (cp === $.GREATER_THAN_SIGN) {\n                    this._emitCurrentToken();\n                    this.state = DATA_STATE;\n                    return;\n                }\n            }\n\n            this._emitChars('</');\n            this._emitSeveralCodePoints(this.tempBuff);\n            this._reconsumeInState(RAWTEXT_STATE);\n        }\n    }\n\n    // Script data less-than sign state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n        } else if (cp === $.EXCLAMATION_MARK) {\n            this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n            this._emitChars('<!');\n        } else {\n            this._emitChars('<');\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data end tag open state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);\n        } else {\n            this._emitChars('</');\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data end tag name state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_END_TAG_NAME_STATE](cp) {\n        if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n            this.tempBuff.push(cp);\n        } else if (isAsciiLower(cp)) {\n            this.currentToken.tagName += toChar(cp);\n            this.tempBuff.push(cp);\n        } else {\n            if (this.lastStartTagName === this.currentToken.tagName) {\n                if (isWhitespace(cp)) {\n                    this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                    return;\n                } else if (cp === $.SOLIDUS) {\n                    this.state = SELF_CLOSING_START_TAG_STATE;\n                    return;\n                } else if (cp === $.GREATER_THAN_SIGN) {\n                    this._emitCurrentToken();\n                    this.state = DATA_STATE;\n                    return;\n                }\n            }\n\n            this._emitChars('</');\n            this._emitSeveralCodePoints(this.tempBuff);\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data escape start state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPE_START_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;\n            this._emitChars('-');\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data escape start dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPE_START_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n            this._emitChars('-');\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_STATE);\n        }\n    }\n\n    // Script data escaped state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data escaped dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.state = SCRIPT_DATA_ESCAPED_STATE;\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this.state = SCRIPT_DATA_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data escaped dash dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_DASH_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = SCRIPT_DATA_STATE;\n            this._emitChars('>');\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.state = SCRIPT_DATA_ESCAPED_STATE;\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this.state = SCRIPT_DATA_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data escaped less-than sign state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n        } else if (isAsciiLetter(cp)) {\n            this.tempBuff = [];\n            this._emitChars('<');\n            this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n        } else {\n            this._emitChars('<');\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n        }\n    }\n\n    // Script data escaped end tag open state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n        } else {\n            this._emitChars('</');\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n        }\n    }\n\n    // Script data escaped end tag name state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {\n        if (isAsciiUpper(cp)) {\n            this.currentToken.tagName += toAsciiLowerChar(cp);\n            this.tempBuff.push(cp);\n        } else if (isAsciiLower(cp)) {\n            this.currentToken.tagName += toChar(cp);\n            this.tempBuff.push(cp);\n        } else {\n            if (this.lastStartTagName === this.currentToken.tagName) {\n                if (isWhitespace(cp)) {\n                    this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n                    return;\n                }\n\n                if (cp === $.SOLIDUS) {\n                    this.state = SELF_CLOSING_START_TAG_STATE;\n                    return;\n                }\n\n                if (cp === $.GREATER_THAN_SIGN) {\n                    this._emitCurrentToken();\n                    this.state = DATA_STATE;\n                    return;\n                }\n            }\n\n            this._emitChars('</');\n            this._emitSeveralCodePoints(this.tempBuff);\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n        }\n    }\n\n    // Script data double escape start state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {\n        if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n            this.state = this._isTempBufferEqualToScriptString()\n                ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE\n                : SCRIPT_DATA_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        } else if (isAsciiUpper(cp)) {\n            this.tempBuff.push(toAsciiLowerCodePoint(cp));\n            this._emitCodePoint(cp);\n        } else if (isAsciiLower(cp)) {\n            this.tempBuff.push(cp);\n            this._emitCodePoint(cp);\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n        }\n    }\n\n    // Script data double escaped state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n            this._emitChars('<');\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data double escaped dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n            this._emitChars('<');\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data double escaped dash dash state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this._emitChars('-');\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n            this._emitChars('<');\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = SCRIPT_DATA_STATE;\n            this._emitChars('>');\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n            this._emitChars(unicode.REPLACEMENT_CHARACTER);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInScriptHtmlCommentLikeText);\n            this._emitEOFToken();\n        } else {\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // Script data double escaped less-than sign state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.SOLIDUS) {\n            this.tempBuff = [];\n            this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n            this._emitChars('/');\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n        }\n    }\n\n    // Script data double escape end state\n    //------------------------------------------------------------------\n    [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n        if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n            this.state = this._isTempBufferEqualToScriptString()\n                ? SCRIPT_DATA_ESCAPED_STATE\n                : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n\n            this._emitCodePoint(cp);\n        } else if (isAsciiUpper(cp)) {\n            this.tempBuff.push(toAsciiLowerCodePoint(cp));\n            this._emitCodePoint(cp);\n        } else if (isAsciiLower(cp)) {\n            this.tempBuff.push(cp);\n            this._emitCodePoint(cp);\n        } else {\n            this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n        }\n    }\n\n    // Before attribute name state\n    //------------------------------------------------------------------\n    [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n            this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n        } else if (cp === $.EQUALS_SIGN) {\n            this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n            this._createAttr('=');\n            this.state = ATTRIBUTE_NAME_STATE;\n        } else {\n            this._createAttr('');\n            this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n        }\n    }\n\n    // Attribute name state\n    //------------------------------------------------------------------\n    [ATTRIBUTE_NAME_STATE](cp) {\n        if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n            this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n            this._unconsume();\n        } else if (cp === $.EQUALS_SIGN) {\n            this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n        } else if (isAsciiUpper(cp)) {\n            this.currentAttr.name += toAsciiLowerChar(cp);\n        } else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN) {\n            this._err(ERR.unexpectedCharacterInAttributeName);\n            this.currentAttr.name += toChar(cp);\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;\n        } else {\n            this.currentAttr.name += toChar(cp);\n        }\n    }\n\n    // After attribute name state\n    //------------------------------------------------------------------\n    [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.SOLIDUS) {\n            this.state = SELF_CLOSING_START_TAG_STATE;\n        } else if (cp === $.EQUALS_SIGN) {\n            this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this._createAttr('');\n            this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n        }\n    }\n\n    // Before attribute value state\n    //------------------------------------------------------------------\n    [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.QUOTATION_MARK) {\n            this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingAttributeValue);\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else {\n            this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n        }\n    }\n\n    // Attribute value (double-quoted) state\n    //------------------------------------------------------------------\n    [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n        if (cp === $.QUOTATION_MARK) {\n            this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n        } else if (cp === $.AMPERSAND) {\n            this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this.currentAttr.value += toChar(cp);\n        }\n    }\n\n    // Attribute value (single-quoted) state\n    //------------------------------------------------------------------\n    [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n        if (cp === $.APOSTROPHE) {\n            this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n        } else if (cp === $.AMPERSAND) {\n            this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this.currentAttr.value += toChar(cp);\n        }\n    }\n\n    // Attribute value (unquoted) state\n    //------------------------------------------------------------------\n    [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n        } else if (cp === $.AMPERSAND) {\n            this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n            this.state = CHARACTER_REFERENCE_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._leaveAttrValue(DATA_STATE);\n            this._emitCurrentToken();\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n        } else if (\n            cp === $.QUOTATION_MARK ||\n            cp === $.APOSTROPHE ||\n            cp === $.LESS_THAN_SIGN ||\n            cp === $.EQUALS_SIGN ||\n            cp === $.GRAVE_ACCENT\n        ) {\n            this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n            this.currentAttr.value += toChar(cp);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this.currentAttr.value += toChar(cp);\n        }\n    }\n\n    // After attribute value (quoted) state\n    //------------------------------------------------------------------\n    [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n        } else if (cp === $.SOLIDUS) {\n            this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._leaveAttrValue(DATA_STATE);\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingWhitespaceBetweenAttributes);\n            this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n        }\n    }\n\n    // Self-closing start tag state\n    //------------------------------------------------------------------\n    [SELF_CLOSING_START_TAG_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.currentToken.selfClosing = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInTag);\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.unexpectedSolidusInTag);\n            this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n        }\n    }\n\n    // Bogus comment state\n    //------------------------------------------------------------------\n    [BOGUS_COMMENT_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n        } else {\n            this.currentToken.data += toChar(cp);\n        }\n    }\n\n    // Markup declaration open state\n    //------------------------------------------------------------------\n    [MARKUP_DECLARATION_OPEN_STATE](cp) {\n        if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n            this._createCommentToken();\n            this.state = COMMENT_START_STATE;\n        } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n            this.state = DOCTYPE_STATE;\n        } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n            if (this.allowCDATA) {\n                this.state = CDATA_SECTION_STATE;\n            } else {\n                this._err(ERR.cdataInHtmlContent);\n                this._createCommentToken();\n                this.currentToken.data = '[CDATA[';\n                this.state = BOGUS_COMMENT_STATE;\n            }\n        }\n\n        //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.incorrectlyOpenedComment);\n            this._createCommentToken();\n            this._reconsumeInState(BOGUS_COMMENT_STATE);\n        }\n    }\n\n    // Comment start state\n    //------------------------------------------------------------------\n    [COMMENT_START_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_START_DASH_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptClosingOfEmptyComment);\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else {\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment start dash state\n    //------------------------------------------------------------------\n    [COMMENT_START_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_END_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptClosingOfEmptyComment);\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += '-';\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment state\n    //------------------------------------------------------------------\n    [COMMENT_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_END_DASH_STATE;\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.currentToken.data += '<';\n            this.state = COMMENT_LESS_THAN_SIGN_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += toChar(cp);\n        }\n    }\n\n    // Comment less-than sign state\n    //------------------------------------------------------------------\n    [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n        if (cp === $.EXCLAMATION_MARK) {\n            this.currentToken.data += '!';\n            this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n        } else if (cp === $.LESS_THAN_SIGN) {\n            this.currentToken.data += '!';\n        } else {\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment less-than sign bang state\n    //------------------------------------------------------------------\n    [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n        } else {\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment less-than sign bang dash state\n    //------------------------------------------------------------------\n    [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n        } else {\n            this._reconsumeInState(COMMENT_END_DASH_STATE);\n        }\n    }\n\n    // Comment less-than sign bang dash dash state\n    //------------------------------------------------------------------\n    [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n        if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n            this._err(ERR.nestedComment);\n        }\n\n        this._reconsumeInState(COMMENT_END_STATE);\n    }\n\n    // Comment end dash state\n    //------------------------------------------------------------------\n    [COMMENT_END_DASH_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = COMMENT_END_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += '-';\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment end state\n    //------------------------------------------------------------------\n    [COMMENT_END_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EXCLAMATION_MARK) {\n            this.state = COMMENT_END_BANG_STATE;\n        } else if (cp === $.HYPHEN_MINUS) {\n            this.currentToken.data += '-';\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += '--';\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // Comment end bang state\n    //------------------------------------------------------------------\n    [COMMENT_END_BANG_STATE](cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.currentToken.data += '--!';\n            this.state = COMMENT_END_DASH_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.incorrectlyClosedComment);\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInComment);\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.data += '--!';\n            this._reconsumeInState(COMMENT_STATE);\n        }\n    }\n\n    // DOCTYPE state\n    //------------------------------------------------------------------\n    [DOCTYPE_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BEFORE_DOCTYPE_NAME_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this._createDoctypeToken(null);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingWhitespaceBeforeDoctypeName);\n            this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n        }\n    }\n\n    // Before DOCTYPE name state\n    //------------------------------------------------------------------\n    [BEFORE_DOCTYPE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (isAsciiUpper(cp)) {\n            this._createDoctypeToken(toAsciiLowerChar(cp));\n            this.state = DOCTYPE_NAME_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);\n            this.state = DOCTYPE_NAME_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypeName);\n            this._createDoctypeToken(null);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this._createDoctypeToken(null);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._createDoctypeToken(toChar(cp));\n            this.state = DOCTYPE_NAME_STATE;\n        }\n    }\n\n    // DOCTYPE name state\n    //------------------------------------------------------------------\n    [DOCTYPE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = AFTER_DOCTYPE_NAME_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (isAsciiUpper(cp)) {\n            this.currentToken.name += toAsciiLowerChar(cp);\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.name += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.name += toChar(cp);\n        }\n    }\n\n    // After DOCTYPE name state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_NAME_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n            this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n        } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n            this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n        }\n        //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // After DOCTYPE public keyword state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n        } else if (cp === $.QUOTATION_MARK) {\n            this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n            this.currentToken.publicId = '';\n            this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n            this.currentToken.publicId = '';\n            this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // Before DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.QUOTATION_MARK) {\n            this.currentToken.publicId = '';\n            this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this.currentToken.publicId = '';\n            this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // DOCTYPE public identifier (double-quoted) state\n    //------------------------------------------------------------------\n    [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n        if (cp === $.QUOTATION_MARK) {\n            this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.publicId += toChar(cp);\n        }\n    }\n\n    // DOCTYPE public identifier (single-quoted) state\n    //------------------------------------------------------------------\n    [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n        if (cp === $.APOSTROPHE) {\n            this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptDoctypePublicIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.publicId += toChar(cp);\n        }\n    }\n\n    // After DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.QUOTATION_MARK) {\n            this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // Between DOCTYPE public and system identifiers state\n    //------------------------------------------------------------------\n    [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.GREATER_THAN_SIGN) {\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.QUOTATION_MARK) {\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // After DOCTYPE system keyword state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n        if (isWhitespace(cp)) {\n            this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n        } else if (cp === $.QUOTATION_MARK) {\n            this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // Before DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.QUOTATION_MARK) {\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n        } else if (cp === $.APOSTROPHE) {\n            this.currentToken.systemId = '';\n            this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.missingDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this.state = DATA_STATE;\n            this._emitCurrentToken();\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // DOCTYPE system identifier (double-quoted) state\n    //------------------------------------------------------------------\n    [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n        if (cp === $.QUOTATION_MARK) {\n            this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.systemId += toChar(cp);\n        }\n    }\n\n    // DOCTYPE system identifier (single-quoted) state\n    //------------------------------------------------------------------\n    [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n        if (cp === $.APOSTROPHE) {\n            this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n            this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n        } else if (cp === $.GREATER_THAN_SIGN) {\n            this._err(ERR.abruptDoctypeSystemIdentifier);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this.currentToken.systemId += toChar(cp);\n        }\n    }\n\n    // After DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n        if (isWhitespace(cp)) {\n            return;\n        }\n\n        if (cp === $.GREATER_THAN_SIGN) {\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInDoctype);\n            this.currentToken.forceQuirks = true;\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        } else {\n            this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n            this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n        }\n    }\n\n    // Bogus DOCTYPE state\n    //------------------------------------------------------------------\n    [BOGUS_DOCTYPE_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this._emitCurrentToken();\n            this.state = DATA_STATE;\n        } else if (cp === $.NULL) {\n            this._err(ERR.unexpectedNullCharacter);\n        } else if (cp === $.EOF) {\n            this._emitCurrentToken();\n            this._emitEOFToken();\n        }\n    }\n\n    // CDATA section state\n    //------------------------------------------------------------------\n    [CDATA_SECTION_STATE](cp) {\n        if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this.state = CDATA_SECTION_BRACKET_STATE;\n        } else if (cp === $.EOF) {\n            this._err(ERR.eofInCdata);\n            this._emitEOFToken();\n        } else {\n            this._emitCodePoint(cp);\n        }\n    }\n\n    // CDATA section bracket state\n    //------------------------------------------------------------------\n    [CDATA_SECTION_BRACKET_STATE](cp) {\n        if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this.state = CDATA_SECTION_END_STATE;\n        } else {\n            this._emitChars(']');\n            this._reconsumeInState(CDATA_SECTION_STATE);\n        }\n    }\n\n    // CDATA section end state\n    //------------------------------------------------------------------\n    [CDATA_SECTION_END_STATE](cp) {\n        if (cp === $.GREATER_THAN_SIGN) {\n            this.state = DATA_STATE;\n        } else if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this._emitChars(']');\n        } else {\n            this._emitChars(']]');\n            this._reconsumeInState(CDATA_SECTION_STATE);\n        }\n    }\n\n    // Character reference state\n    //------------------------------------------------------------------\n    [CHARACTER_REFERENCE_STATE](cp) {\n        this.tempBuff = [$.AMPERSAND];\n\n        if (cp === $.NUMBER_SIGN) {\n            this.tempBuff.push(cp);\n            this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n        } else if (isAsciiAlphaNumeric(cp)) {\n            this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n        } else {\n            this._flushCodePointsConsumedAsCharacterReference();\n            this._reconsumeInState(this.returnState);\n        }\n    }\n\n    // Named character reference state\n    //------------------------------------------------------------------\n    [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n        const matchResult = this._matchNamedCharacterReference(cp);\n\n        //NOTE: matching can be abrupted by hibernation. In that case match\n        //results are no longer valid and we will need to start over.\n        if (this._ensureHibernation()) {\n            this.tempBuff = [$.AMPERSAND];\n        } else if (matchResult) {\n            const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $.SEMICOLON;\n\n            if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n                if (!withSemicolon) {\n                    this._errOnNextCodePoint(ERR.missingSemicolonAfterCharacterReference);\n                }\n\n                this.tempBuff = matchResult;\n            }\n\n            this._flushCodePointsConsumedAsCharacterReference();\n            this.state = this.returnState;\n        } else {\n            this._flushCodePointsConsumedAsCharacterReference();\n            this.state = AMBIGUOUS_AMPERSAND_STATE;\n        }\n    }\n\n    // Ambiguos ampersand state\n    //------------------------------------------------------------------\n    [AMBIGUOUS_AMPERSAND_STATE](cp) {\n        if (isAsciiAlphaNumeric(cp)) {\n            if (this._isCharacterReferenceInAttribute()) {\n                this.currentAttr.value += toChar(cp);\n            } else {\n                this._emitCodePoint(cp);\n            }\n        } else {\n            if (cp === $.SEMICOLON) {\n                this._err(ERR.unknownNamedCharacterReference);\n            }\n\n            this._reconsumeInState(this.returnState);\n        }\n    }\n\n    // Numeric character reference state\n    //------------------------------------------------------------------\n    [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n        this.charRefCode = 0;\n\n        if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n            this.tempBuff.push(cp);\n            this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n        } else {\n            this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n        }\n    }\n\n    // Hexademical character reference start state\n    //------------------------------------------------------------------\n    [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n        if (isAsciiHexDigit(cp)) {\n            this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n        } else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointsConsumedAsCharacterReference();\n            this._reconsumeInState(this.returnState);\n        }\n    }\n\n    // Decimal character reference start state\n    //------------------------------------------------------------------\n    [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n        if (isAsciiDigit(cp)) {\n            this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n        } else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointsConsumedAsCharacterReference();\n            this._reconsumeInState(this.returnState);\n        }\n    }\n\n    // Hexademical character reference state\n    //------------------------------------------------------------------\n    [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n        if (isAsciiUpperHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n        } else if (isAsciiLowerHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n        } else if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n        } else if (cp === $.SEMICOLON) {\n            this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n        } else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n        }\n    }\n\n    // Decimal character reference state\n    //------------------------------------------------------------------\n    [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n        if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n        } else if (cp === $.SEMICOLON) {\n            this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n        } else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n        }\n    }\n\n    // Numeric character reference end state\n    //------------------------------------------------------------------\n    [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n        if (this.charRefCode === $.NULL) {\n            this._err(ERR.nullCharacterReference);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        } else if (this.charRefCode > 0x10ffff) {\n            this._err(ERR.characterReferenceOutsideUnicodeRange);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        } else if (unicode.isSurrogate(this.charRefCode)) {\n            this._err(ERR.surrogateCharacterReference);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {\n            this._err(ERR.noncharacterCharacterReference);\n        } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n            this._err(ERR.controlCharacterReference);\n\n            const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n\n            if (replacement) {\n                this.charRefCode = replacement;\n            }\n        }\n\n        this.tempBuff = [this.charRefCode];\n\n        this._flushCodePointsConsumedAsCharacterReference();\n        this._reconsumeInState(this.returnState);\n    }\n}\n\n//Token types\nTokenizer.CHARACTER_TOKEN = 'CHARACTER_TOKEN';\nTokenizer.NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN';\nTokenizer.WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN';\nTokenizer.START_TAG_TOKEN = 'START_TAG_TOKEN';\nTokenizer.END_TAG_TOKEN = 'END_TAG_TOKEN';\nTokenizer.COMMENT_TOKEN = 'COMMENT_TOKEN';\nTokenizer.DOCTYPE_TOKEN = 'DOCTYPE_TOKEN';\nTokenizer.EOF_TOKEN = 'EOF_TOKEN';\nTokenizer.HIBERNATION_TOKEN = 'HIBERNATION_TOKEN';\n\n//Tokenizer initial states for different modes\nTokenizer.MODE = {\n    DATA: DATA_STATE,\n    RCDATA: RCDATA_STATE,\n    RAWTEXT: RAWTEXT_STATE,\n    SCRIPT_DATA: SCRIPT_DATA_STATE,\n    PLAINTEXT: PLAINTEXT_STATE\n};\n\n//Static\nTokenizer.getTokenAttr = function(token, attrName) {\n    for (let i = token.attrs.length - 1; i >= 0; i--) {\n        if (token.attrs[i].name === attrName) {\n            return token.attrs[i].value;\n        }\n    }\n\n    return null;\n};\n\nmodule.exports = Tokenizer;\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcuts\n\t        var dataSigBytes = data.sigBytes;\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Count padding bytes\n\t        var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t        // Compute last byte position\n\t        var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t        // Pad\n\t        data.clamp();\n\t        data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t        data.sigBytes += nPaddingBytes;\n\t    },\n\n\t    unpad: function (data) {\n\t        // Get number of padding bytes from last byte\n\t        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t        // Remove padding\n\t        data.sigBytes -= nPaddingBytes;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-1 hash algorithm.\n\t     */\n\t    var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476,\n\t                0xc3d2e1f0\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\n\t            // Computation\n\t            for (var i = 0; i < 80; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t                    W[i] = (n << 1) | (n >>> 31);\n\t                }\n\n\t                var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t                if (i < 20) {\n\t                    t += ((b & c) | (~b & d)) + 0x5a827999;\n\t                } else if (i < 40) {\n\t                    t += (b ^ c ^ d) + 0x6ed9eba1;\n\t                } else if (i < 60) {\n\t                    t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t                } else /* if (i < 80) */ {\n\t                    t += (b ^ c ^ d) - 0x359d3e2a;\n\t                }\n\n\t                e = d;\n\t                d = c;\n\t                c = (b << 30) | (b >>> 2);\n\t                b = a;\n\t                a = t;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA1('message');\n\t     *     var hash = CryptoJS.SHA1(wordArray);\n\t     */\n\t    C.SHA1 = Hasher._createHelper(SHA1);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA1(message, key);\n\t     */\n\t    C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var Base64 = C_enc.Base64;\n\t    var C_algo = C.algo;\n\t    var EvpKDF = C_algo.EvpKDF;\n\n\t    /**\n\t     * Abstract base cipher template.\n\t     *\n\t     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t     */\n\t    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {WordArray} iv The IV to use for this operation.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Creates this cipher in encryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createEncryptor: function (key, cfg) {\n\t            return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Creates this cipher in decryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createDecryptor: function (key, cfg) {\n\t            return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created cipher.\n\t         *\n\t         * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t         */\n\t        init: function (xformMode, key, cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Store transform mode and key\n\t            this._xformMode = xformMode;\n\t            this._key = key;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this cipher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     cipher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-cipher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Adds data to be encrypted or decrypted.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.process('data');\n\t         *     var encrypted = cipher.process(wordArray);\n\t         */\n\t        process: function (dataUpdate) {\n\t            // Append\n\t            this._append(dataUpdate);\n\n\t            // Process available blocks\n\t            return this._process();\n\t        },\n\n\t        /**\n\t         * Finalizes the encryption or decryption process.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after final processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.finalize();\n\t         *     var encrypted = cipher.finalize('data');\n\t         *     var encrypted = cipher.finalize(wordArray);\n\t         */\n\t        finalize: function (dataUpdate) {\n\t            // Final data update\n\t            if (dataUpdate) {\n\t                this._append(dataUpdate);\n\t            }\n\n\t            // Perform concrete-cipher logic\n\t            var finalProcessedData = this._doFinalize();\n\n\t            return finalProcessedData;\n\t        },\n\n\t        keySize: 128/32,\n\n\t        ivSize: 128/32,\n\n\t        _ENC_XFORM_MODE: 1,\n\n\t        _DEC_XFORM_MODE: 2,\n\n\t        /**\n\t         * Creates shortcut functions to a cipher's object interface.\n\t         *\n\t         * @param {Cipher} cipher The cipher to create a helper for.\n\t         *\n\t         * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t         */\n\t        _createHelper: (function () {\n\t            function selectCipherStrategy(key) {\n\t                if (typeof key == 'string') {\n\t                    return PasswordBasedCipher;\n\t                } else {\n\t                    return SerializableCipher;\n\t                }\n\t            }\n\n\t            return function (cipher) {\n\t                return {\n\t                    encrypt: function (message, key, cfg) {\n\t                        return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t                    },\n\n\t                    decrypt: function (ciphertext, key, cfg) {\n\t                        return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t                    }\n\t                };\n\t            };\n\t        }())\n\t    });\n\n\t    /**\n\t     * Abstract base stream cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t     */\n\t    var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t        _doFinalize: function () {\n\t            // Process partial blocks\n\t            var finalProcessedBlocks = this._process(!!'flush');\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 1\n\t    });\n\n\t    /**\n\t     * Mode namespace.\n\t     */\n\t    var C_mode = C.mode = {};\n\n\t    /**\n\t     * Abstract base block cipher mode template.\n\t     */\n\t    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t        /**\n\t         * Creates this mode for encryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t         */\n\t        createEncryptor: function (cipher, iv) {\n\t            return this.Encryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Creates this mode for decryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t         */\n\t        createDecryptor: function (cipher, iv) {\n\t            return this.Decryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created mode.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t         */\n\t        init: function (cipher, iv) {\n\t            this._cipher = cipher;\n\t            this._iv = iv;\n\t        }\n\t    });\n\n\t    /**\n\t     * Cipher Block Chaining mode.\n\t     */\n\t    var CBC = C_mode.CBC = (function () {\n\t        /**\n\t         * Abstract base CBC mode.\n\t         */\n\t        var CBC = BlockCipherMode.extend();\n\n\t        /**\n\t         * CBC encryptor.\n\t         */\n\t        CBC.Encryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // XOR and encrypt\n\t                xorBlock.call(this, words, offset, blockSize);\n\t                cipher.encryptBlock(words, offset);\n\n\t                // Remember this block to use with next block\n\t                this._prevBlock = words.slice(offset, offset + blockSize);\n\t            }\n\t        });\n\n\t        /**\n\t         * CBC decryptor.\n\t         */\n\t        CBC.Decryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // Remember this block to use with next block\n\t                var thisBlock = words.slice(offset, offset + blockSize);\n\n\t                // Decrypt and XOR\n\t                cipher.decryptBlock(words, offset);\n\t                xorBlock.call(this, words, offset, blockSize);\n\n\t                // This block becomes the previous block\n\t                this._prevBlock = thisBlock;\n\t            }\n\t        });\n\n\t        function xorBlock(words, offset, blockSize) {\n\t            var block;\n\n\t            // Shortcut\n\t            var iv = this._iv;\n\n\t            // Choose mixing block\n\t            if (iv) {\n\t                block = iv;\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            } else {\n\t                block = this._prevBlock;\n\t            }\n\n\t            // XOR blocks\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= block[i];\n\t            }\n\t        }\n\n\t        return CBC;\n\t    }());\n\n\t    /**\n\t     * Padding namespace.\n\t     */\n\t    var C_pad = C.pad = {};\n\n\t    /**\n\t     * PKCS #5/7 padding strategy.\n\t     */\n\t    var Pkcs7 = C_pad.Pkcs7 = {\n\t        /**\n\t         * Pads data using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to pad.\n\t         * @param {number} blockSize The multiple that the data should be padded to.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t         */\n\t        pad: function (data, blockSize) {\n\t            // Shortcut\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count padding bytes\n\t            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t            // Create padding word\n\t            var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t            // Create padding\n\t            var paddingWords = [];\n\t            for (var i = 0; i < nPaddingBytes; i += 4) {\n\t                paddingWords.push(paddingWord);\n\t            }\n\t            var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t            // Add padding\n\t            data.concat(padding);\n\t        },\n\n\t        /**\n\t         * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to unpad.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t         */\n\t        unpad: function (data) {\n\t            // Get number of padding bytes from last byte\n\t            var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t            // Remove padding\n\t            data.sigBytes -= nPaddingBytes;\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract base block cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t     */\n\t    var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Mode} mode The block mode to use. Default: CBC\n\t         * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t         */\n\t        cfg: Cipher.cfg.extend({\n\t            mode: CBC,\n\t            padding: Pkcs7\n\t        }),\n\n\t        reset: function () {\n\t            var modeCreator;\n\n\t            // Reset cipher\n\t            Cipher.reset.call(this);\n\n\t            // Shortcuts\n\t            var cfg = this.cfg;\n\t            var iv = cfg.iv;\n\t            var mode = cfg.mode;\n\n\t            // Reset block mode\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                modeCreator = mode.createEncryptor;\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                modeCreator = mode.createDecryptor;\n\t                // Keep at least one block in the buffer for unpadding\n\t                this._minBufferSize = 1;\n\t            }\n\n\t            if (this._mode && this._mode.__creator == modeCreator) {\n\t                this._mode.init(this, iv && iv.words);\n\t            } else {\n\t                this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t                this._mode.__creator = modeCreator;\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (words, offset) {\n\t            this._mode.processBlock(words, offset);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var finalProcessedBlocks;\n\n\t            // Shortcut\n\t            var padding = this.cfg.padding;\n\n\t            // Finalize\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                // Pad data\n\t                padding.pad(this._data, this.blockSize);\n\n\t                // Process final blocks\n\t                finalProcessedBlocks = this._process(!!'flush');\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                // Process final blocks\n\t                finalProcessedBlocks = this._process(!!'flush');\n\n\t                // Unpad data\n\t                padding.unpad(finalProcessedBlocks);\n\t            }\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 128/32\n\t    });\n\n\t    /**\n\t     * A collection of cipher parameters.\n\t     *\n\t     * @property {WordArray} ciphertext The raw ciphertext.\n\t     * @property {WordArray} key The key to this ciphertext.\n\t     * @property {WordArray} iv The IV used in the ciphering operation.\n\t     * @property {WordArray} salt The salt used with a key derivation function.\n\t     * @property {Cipher} algorithm The cipher algorithm.\n\t     * @property {Mode} mode The block mode used in the ciphering operation.\n\t     * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t     * @property {number} blockSize The block size of the cipher.\n\t     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t     */\n\t    var CipherParams = C_lib.CipherParams = Base.extend({\n\t        /**\n\t         * Initializes a newly created cipher params object.\n\t         *\n\t         * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.lib.CipherParams.create({\n\t         *         ciphertext: ciphertextWordArray,\n\t         *         key: keyWordArray,\n\t         *         iv: ivWordArray,\n\t         *         salt: saltWordArray,\n\t         *         algorithm: CryptoJS.algo.AES,\n\t         *         mode: CryptoJS.mode.CBC,\n\t         *         padding: CryptoJS.pad.PKCS7,\n\t         *         blockSize: 4,\n\t         *         formatter: CryptoJS.format.OpenSSL\n\t         *     });\n\t         */\n\t        init: function (cipherParams) {\n\t            this.mixIn(cipherParams);\n\t        },\n\n\t        /**\n\t         * Converts this cipher params object to a string.\n\t         *\n\t         * @param {Format} formatter (Optional) The formatting strategy to use.\n\t         *\n\t         * @return {string} The stringified cipher params.\n\t         *\n\t         * @throws Error If neither the formatter nor the default formatter is set.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = cipherParams + '';\n\t         *     var string = cipherParams.toString();\n\t         *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t         */\n\t        toString: function (formatter) {\n\t            return (formatter || this.formatter).stringify(this);\n\t        }\n\t    });\n\n\t    /**\n\t     * Format namespace.\n\t     */\n\t    var C_format = C.format = {};\n\n\t    /**\n\t     * OpenSSL formatting strategy.\n\t     */\n\t    var OpenSSLFormatter = C_format.OpenSSL = {\n\t        /**\n\t         * Converts a cipher params object to an OpenSSL-compatible string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The OpenSSL-compatible string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            var wordArray;\n\n\t            // Shortcuts\n\t            var ciphertext = cipherParams.ciphertext;\n\t            var salt = cipherParams.salt;\n\n\t            // Format\n\t            if (salt) {\n\t                wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t            } else {\n\t                wordArray = ciphertext;\n\t            }\n\n\t            return wordArray.toString(Base64);\n\t        },\n\n\t        /**\n\t         * Converts an OpenSSL-compatible string to a cipher params object.\n\t         *\n\t         * @param {string} openSSLStr The OpenSSL-compatible string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t         */\n\t        parse: function (openSSLStr) {\n\t            var salt;\n\n\t            // Parse base64\n\t            var ciphertext = Base64.parse(openSSLStr);\n\n\t            // Shortcut\n\t            var ciphertextWords = ciphertext.words;\n\n\t            // Test for salt\n\t            if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t                // Extract salt\n\t                salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t                // Remove salt from ciphertext\n\t                ciphertextWords.splice(0, 4);\n\t                ciphertext.sigBytes -= 16;\n\t            }\n\n\t            return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t         */\n\t        cfg: Base.extend({\n\t            format: OpenSSLFormatter\n\t        }),\n\n\t        /**\n\t         * Encrypts a message.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Encrypt\n\t            var encryptor = cipher.createEncryptor(key, cfg);\n\t            var ciphertext = encryptor.finalize(message);\n\n\t            // Shortcut\n\t            var cipherCfg = encryptor.cfg;\n\n\t            // Create and return serializable cipher params\n\t            return CipherParams.create({\n\t                ciphertext: ciphertext,\n\t                key: key,\n\t                iv: cipherCfg.iv,\n\t                algorithm: cipher,\n\t                mode: cipherCfg.mode,\n\t                padding: cipherCfg.padding,\n\t                blockSize: cipher.blockSize,\n\t                formatter: cfg.format\n\t            });\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Decrypt\n\t            var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t            return plaintext;\n\t        },\n\n\t        /**\n\t         * Converts serialized ciphertext to CipherParams,\n\t         * else assumed CipherParams already and returns ciphertext unchanged.\n\t         *\n\t         * @param {CipherParams|string} ciphertext The ciphertext.\n\t         * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t         *\n\t         * @return {CipherParams} The unserialized ciphertext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t         */\n\t        _parse: function (ciphertext, format) {\n\t            if (typeof ciphertext == 'string') {\n\t                return format.parse(ciphertext, this);\n\t            } else {\n\t                return ciphertext;\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Key derivation function namespace.\n\t     */\n\t    var C_kdf = C.kdf = {};\n\n\t    /**\n\t     * OpenSSL key derivation function.\n\t     */\n\t    var OpenSSLKdf = C_kdf.OpenSSL = {\n\t        /**\n\t         * Derives a key and IV from a password.\n\t         *\n\t         * @param {string} password The password to derive from.\n\t         * @param {number} keySize The size in words of the key to generate.\n\t         * @param {number} ivSize The size in words of the IV to generate.\n\t         * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t         *\n\t         * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t         */\n\t        execute: function (password, keySize, ivSize, salt, hasher) {\n\t            // Generate random salt\n\t            if (!salt) {\n\t                salt = WordArray.random(64/8);\n\t            }\n\n\t            // Derive key and IV\n\t            if (!hasher) {\n\t                var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t            } else {\n\t                var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t            }\n\n\n\t            // Separate key and IV\n\t            var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t            key.sigBytes = keySize * 4;\n\n\t            // Return params\n\t            return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A serializable cipher wrapper that derives the key from a password,\n\t     * and returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t         */\n\t        cfg: SerializableCipher.cfg.extend({\n\t            kdf: OpenSSLKdf\n\t        }),\n\n\t        /**\n\t         * Encrypts a message using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Encrypt\n\t            var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t            // Mix in derived params\n\t            ciphertext.mixIn(derivedParams);\n\n\t            return ciphertext;\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Decrypt\n\t            var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t            return plaintext;\n\t        }\n\t    });\n\t}());\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",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64url encoding strategy.\n\t     */\n\t    var Base64url = C_enc.Base64url = {\n\t        /**\n\t         * Converts a word array to a Base64url string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @param {boolean} urlSafe Whether to use url safe\n\t         *\n\t         * @return {string} The Base64url string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray, urlSafe) {\n\t            if (urlSafe === undefined) {\n\t                urlSafe = true\n\t            }\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = urlSafe ? this._safe_map : this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64url string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64url string.\n\t         *\n\t         * @param {boolean} urlSafe Whether to use url safe\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t         */\n\t        parse: function (base64Str, urlSafe) {\n\t            if (urlSafe === undefined) {\n\t                urlSafe = true\n\t            }\n\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = urlSafe ? this._safe_map : this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                reverseMap = this._reverseMap = [];\n\t                for (var j = 0; j < map.length; j++) {\n\t                    reverseMap[map.charCodeAt(j)] = j;\n\t                }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t        _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t        var words = [];\n\t        var nBytes = 0;\n\t        for (var i = 0; i < base64StrLength; i++) {\n\t            if (i % 4) {\n\t                var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t                var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t                var bitsCombined = bits1 | bits2;\n\t                words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t                nBytes++;\n\t            }\n\t        }\n\t        return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\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","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\n\nclass LocationInfoTokenizerMixin extends Mixin {\n    constructor(tokenizer) {\n        super(tokenizer);\n\n        this.tokenizer = tokenizer;\n        this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);\n        this.currentAttrLocation = null;\n        this.ctLoc = null;\n    }\n\n    _getCurrentLocation() {\n        return {\n            startLine: this.posTracker.line,\n            startCol: this.posTracker.col,\n            startOffset: this.posTracker.offset,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1\n        };\n    }\n\n    _attachCurrentAttrLocationInfo() {\n        this.currentAttrLocation.endLine = this.posTracker.line;\n        this.currentAttrLocation.endCol = this.posTracker.col;\n        this.currentAttrLocation.endOffset = this.posTracker.offset;\n\n        const currentToken = this.tokenizer.currentToken;\n        const currentAttr = this.tokenizer.currentAttr;\n\n        if (!currentToken.location.attrs) {\n            currentToken.location.attrs = Object.create(null);\n        }\n\n        currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        const methods = {\n            _createStartTagToken() {\n                orig._createStartTagToken.call(this);\n                this.currentToken.location = mxn.ctLoc;\n            },\n\n            _createEndTagToken() {\n                orig._createEndTagToken.call(this);\n                this.currentToken.location = mxn.ctLoc;\n            },\n\n            _createCommentToken() {\n                orig._createCommentToken.call(this);\n                this.currentToken.location = mxn.ctLoc;\n            },\n\n            _createDoctypeToken(initialName) {\n                orig._createDoctypeToken.call(this, initialName);\n                this.currentToken.location = mxn.ctLoc;\n            },\n\n            _createCharacterToken(type, ch) {\n                orig._createCharacterToken.call(this, type, ch);\n                this.currentCharacterToken.location = mxn.ctLoc;\n            },\n\n            _createEOFToken() {\n                orig._createEOFToken.call(this);\n                this.currentToken.location = mxn._getCurrentLocation();\n            },\n\n            _createAttr(attrNameFirstCh) {\n                orig._createAttr.call(this, attrNameFirstCh);\n                mxn.currentAttrLocation = mxn._getCurrentLocation();\n            },\n\n            _leaveAttrName(toState) {\n                orig._leaveAttrName.call(this, toState);\n                mxn._attachCurrentAttrLocationInfo();\n            },\n\n            _leaveAttrValue(toState) {\n                orig._leaveAttrValue.call(this, toState);\n                mxn._attachCurrentAttrLocationInfo();\n            },\n\n            _emitCurrentToken() {\n                const ctLoc = this.currentToken.location;\n\n                //NOTE: if we have pending character token make it's end location equal to the\n                //current token's start location.\n                if (this.currentCharacterToken) {\n                    this.currentCharacterToken.location.endLine = ctLoc.startLine;\n                    this.currentCharacterToken.location.endCol = ctLoc.startCol;\n                    this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n                }\n\n                if (this.currentToken.type === Tokenizer.EOF_TOKEN) {\n                    ctLoc.endLine = ctLoc.startLine;\n                    ctLoc.endCol = ctLoc.startCol;\n                    ctLoc.endOffset = ctLoc.startOffset;\n                } else {\n                    ctLoc.endLine = mxn.posTracker.line;\n                    ctLoc.endCol = mxn.posTracker.col + 1;\n                    ctLoc.endOffset = mxn.posTracker.offset + 1;\n                }\n\n                orig._emitCurrentToken.call(this);\n            },\n\n            _emitCurrentCharacterToken() {\n                const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n\n                //NOTE: if we have character token and it's location wasn't set in the _emitCurrentToken(),\n                //then set it's location at the current preprocessor position.\n                //We don't need to increment preprocessor position, since character token\n                //emission is always forced by the start of the next character token here.\n                //So, we already have advanced position.\n                if (ctLoc && ctLoc.endOffset === -1) {\n                    ctLoc.endLine = mxn.posTracker.line;\n                    ctLoc.endCol = mxn.posTracker.col;\n                    ctLoc.endOffset = mxn.posTracker.offset;\n                }\n\n                orig._emitCurrentCharacterToken.call(this);\n            }\n        };\n\n        //NOTE: patch initial states for each mode to obtain token start position\n        Object.keys(Tokenizer.MODE).forEach(modeName => {\n            const state = Tokenizer.MODE[modeName];\n\n            methods[state] = function(cp) {\n                mxn.ctLoc = mxn._getCurrentLocation();\n                orig[state].call(this, cp);\n            };\n        });\n\n        return methods;\n    }\n}\n\nmodule.exports = LocationInfoTokenizerMixin;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nconst unicode = require('../common/unicode');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n    constructor() {\n        this.html = null;\n\n        this.pos = -1;\n        this.lastGapPos = -1;\n        this.lastCharPos = -1;\n\n        this.gapStack = [];\n\n        this.skipNextNewLine = false;\n\n        this.lastChunkWritten = false;\n        this.endOfChunkHit = false;\n        this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n    }\n\n    _err() {\n        // NOTE: err reporting is noop by default. Enabled by mixin.\n    }\n\n    _addGap() {\n        this.gapStack.push(this.lastGapPos);\n        this.lastGapPos = this.pos;\n    }\n\n    _processSurrogate(cp) {\n        //NOTE: try to peek a surrogate pair\n        if (this.pos !== this.lastCharPos) {\n            const nextCp = this.html.charCodeAt(this.pos + 1);\n\n            if (unicode.isSurrogatePair(nextCp)) {\n                //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n                this.pos++;\n\n                //NOTE: add gap that should be avoided during retreat\n                this._addGap();\n\n                return unicode.getSurrogatePairCodePoint(cp, nextCp);\n            }\n        }\n\n        //NOTE: we are at the end of a chunk, therefore we can't infer surrogate pair yet.\n        else if (!this.lastChunkWritten) {\n            this.endOfChunkHit = true;\n            return $.EOF;\n        }\n\n        //NOTE: isolated surrogate\n        this._err(ERR.surrogateInInputStream);\n\n        return cp;\n    }\n\n    dropParsedChunk() {\n        if (this.pos > this.bufferWaterline) {\n            this.lastCharPos -= this.pos;\n            this.html = this.html.substring(this.pos);\n            this.pos = 0;\n            this.lastGapPos = -1;\n            this.gapStack = [];\n        }\n    }\n\n    write(chunk, isLastChunk) {\n        if (this.html) {\n            this.html += chunk;\n        } else {\n            this.html = chunk;\n        }\n\n        this.lastCharPos = this.html.length - 1;\n        this.endOfChunkHit = false;\n        this.lastChunkWritten = isLastChunk;\n    }\n\n    insertHtmlAtCurrentPos(chunk) {\n        this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n\n        this.lastCharPos = this.html.length - 1;\n        this.endOfChunkHit = false;\n    }\n\n    advance() {\n        this.pos++;\n\n        if (this.pos > this.lastCharPos) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n\n        let cp = this.html.charCodeAt(this.pos);\n\n        //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n        //must be ignored.\n        if (this.skipNextNewLine && cp === $.LINE_FEED) {\n            this.skipNextNewLine = false;\n            this._addGap();\n            return this.advance();\n        }\n\n        //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n        if (cp === $.CARRIAGE_RETURN) {\n            this.skipNextNewLine = true;\n            return $.LINE_FEED;\n        }\n\n        this.skipNextNewLine = false;\n\n        if (unicode.isSurrogate(cp)) {\n            cp = this._processSurrogate(cp);\n        }\n\n        //OPTIMIZATION: first check if code point is in the common allowed\n        //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n        //before going into detailed performance cost validation.\n        const isCommonValidRange =\n            (cp > 0x1f && cp < 0x7f) || cp === $.LINE_FEED || cp === $.CARRIAGE_RETURN || (cp > 0x9f && cp < 0xfdd0);\n\n        if (!isCommonValidRange) {\n            this._checkForProblematicCharacters(cp);\n        }\n\n        return cp;\n    }\n\n    _checkForProblematicCharacters(cp) {\n        if (unicode.isControlCodePoint(cp)) {\n            this._err(ERR.controlCharacterInInputStream);\n        } else if (unicode.isUndefinedCodePoint(cp)) {\n            this._err(ERR.noncharacterInInputStream);\n        }\n    }\n\n    retreat() {\n        if (this.pos === this.lastGapPos) {\n            this.lastGapPos = this.gapStack.pop();\n            this.pos--;\n        }\n\n        this.pos--;\n    }\n}\n\nmodule.exports = Preprocessor;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","/**\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<Extension>} 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<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | 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<unknown>} existing\n * @param {Array<unknown>} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<unknown>} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array<HtmlExtension>} 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","/**\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<T>} 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<T>} 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<unknown>} */\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<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\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","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst OpenElementStack = require('./open-element-stack');\nconst FormattingElementList = require('./formatting-element-list');\nconst LocationInfoParserMixin = require('../extensions/location-info/parser-mixin');\nconst ErrorReportingParserMixin = require('../extensions/error-reporting/parser-mixin');\nconst Mixin = require('../utils/mixin');\nconst defaultTreeAdapter = require('../tree-adapters/default');\nconst mergeOptions = require('../utils/merge-options');\nconst doctype = require('../common/doctype');\nconst foreignContent = require('../common/foreign-content');\nconst ERR = require('../common/error-codes');\nconst unicode = require('../common/unicode');\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\nconst DEFAULT_OPTIONS = {\n    scriptingEnabled: true,\n    sourceCodeLocationInfo: false,\n    onParseError: null,\n    treeAdapter: defaultTreeAdapter\n};\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n\n//Insertion modes\nconst INITIAL_MODE = 'INITIAL_MODE';\nconst BEFORE_HTML_MODE = 'BEFORE_HTML_MODE';\nconst BEFORE_HEAD_MODE = 'BEFORE_HEAD_MODE';\nconst IN_HEAD_MODE = 'IN_HEAD_MODE';\nconst IN_HEAD_NO_SCRIPT_MODE = 'IN_HEAD_NO_SCRIPT_MODE';\nconst AFTER_HEAD_MODE = 'AFTER_HEAD_MODE';\nconst IN_BODY_MODE = 'IN_BODY_MODE';\nconst TEXT_MODE = 'TEXT_MODE';\nconst IN_TABLE_MODE = 'IN_TABLE_MODE';\nconst IN_TABLE_TEXT_MODE = 'IN_TABLE_TEXT_MODE';\nconst IN_CAPTION_MODE = 'IN_CAPTION_MODE';\nconst IN_COLUMN_GROUP_MODE = 'IN_COLUMN_GROUP_MODE';\nconst IN_TABLE_BODY_MODE = 'IN_TABLE_BODY_MODE';\nconst IN_ROW_MODE = 'IN_ROW_MODE';\nconst IN_CELL_MODE = 'IN_CELL_MODE';\nconst IN_SELECT_MODE = 'IN_SELECT_MODE';\nconst IN_SELECT_IN_TABLE_MODE = 'IN_SELECT_IN_TABLE_MODE';\nconst IN_TEMPLATE_MODE = 'IN_TEMPLATE_MODE';\nconst AFTER_BODY_MODE = 'AFTER_BODY_MODE';\nconst IN_FRAMESET_MODE = 'IN_FRAMESET_MODE';\nconst AFTER_FRAMESET_MODE = 'AFTER_FRAMESET_MODE';\nconst AFTER_AFTER_BODY_MODE = 'AFTER_AFTER_BODY_MODE';\nconst AFTER_AFTER_FRAMESET_MODE = 'AFTER_AFTER_FRAMESET_MODE';\n\n//Insertion mode reset map\nconst INSERTION_MODE_RESET_MAP = {\n    [$.TR]: IN_ROW_MODE,\n    [$.TBODY]: IN_TABLE_BODY_MODE,\n    [$.THEAD]: IN_TABLE_BODY_MODE,\n    [$.TFOOT]: IN_TABLE_BODY_MODE,\n    [$.CAPTION]: IN_CAPTION_MODE,\n    [$.COLGROUP]: IN_COLUMN_GROUP_MODE,\n    [$.TABLE]: IN_TABLE_MODE,\n    [$.BODY]: IN_BODY_MODE,\n    [$.FRAMESET]: IN_FRAMESET_MODE\n};\n\n//Template insertion mode switch map\nconst TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n    [$.CAPTION]: IN_TABLE_MODE,\n    [$.COLGROUP]: IN_TABLE_MODE,\n    [$.TBODY]: IN_TABLE_MODE,\n    [$.TFOOT]: IN_TABLE_MODE,\n    [$.THEAD]: IN_TABLE_MODE,\n    [$.COL]: IN_COLUMN_GROUP_MODE,\n    [$.TR]: IN_TABLE_BODY_MODE,\n    [$.TD]: IN_ROW_MODE,\n    [$.TH]: IN_ROW_MODE\n};\n\n//Token handlers map for insertion modes\nconst TOKEN_HANDLERS = {\n    [INITIAL_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenInInitialMode,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: doctypeInInitialMode,\n        [Tokenizer.START_TAG_TOKEN]: tokenInInitialMode,\n        [Tokenizer.END_TAG_TOKEN]: tokenInInitialMode,\n        [Tokenizer.EOF_TOKEN]: tokenInInitialMode\n    },\n    [BEFORE_HTML_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHtml,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagBeforeHtml,\n        [Tokenizer.END_TAG_TOKEN]: endTagBeforeHtml,\n        [Tokenizer.EOF_TOKEN]: tokenBeforeHtml\n    },\n    [BEFORE_HEAD_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHead,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n        [Tokenizer.START_TAG_TOKEN]: startTagBeforeHead,\n        [Tokenizer.END_TAG_TOKEN]: endTagBeforeHead,\n        [Tokenizer.EOF_TOKEN]: tokenBeforeHead\n    },\n    [IN_HEAD_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenInHead,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHead,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n        [Tokenizer.START_TAG_TOKEN]: startTagInHead,\n        [Tokenizer.END_TAG_TOKEN]: endTagInHead,\n        [Tokenizer.EOF_TOKEN]: tokenInHead\n    },\n    [IN_HEAD_NO_SCRIPT_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenInHeadNoScript,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n        [Tokenizer.START_TAG_TOKEN]: startTagInHeadNoScript,\n        [Tokenizer.END_TAG_TOKEN]: endTagInHeadNoScript,\n        [Tokenizer.EOF_TOKEN]: tokenInHeadNoScript\n    },\n    [AFTER_HEAD_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenAfterHead,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterHead,\n        [Tokenizer.END_TAG_TOKEN]: endTagAfterHead,\n        [Tokenizer.EOF_TOKEN]: tokenAfterHead\n    },\n    [IN_BODY_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInBody,\n        [Tokenizer.END_TAG_TOKEN]: endTagInBody,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [TEXT_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: ignoreToken,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: ignoreToken,\n        [Tokenizer.END_TAG_TOKEN]: endTagInText,\n        [Tokenizer.EOF_TOKEN]: eofInText\n    },\n    [IN_TABLE_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInTable,\n        [Tokenizer.END_TAG_TOKEN]: endTagInTable,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_TABLE_TEXT_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInTableText,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n        [Tokenizer.COMMENT_TOKEN]: tokenInTableText,\n        [Tokenizer.DOCTYPE_TOKEN]: tokenInTableText,\n        [Tokenizer.START_TAG_TOKEN]: tokenInTableText,\n        [Tokenizer.END_TAG_TOKEN]: tokenInTableText,\n        [Tokenizer.EOF_TOKEN]: tokenInTableText\n    },\n    [IN_CAPTION_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInCaption,\n        [Tokenizer.END_TAG_TOKEN]: endTagInCaption,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_COLUMN_GROUP_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenInColumnGroup,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInColumnGroup,\n        [Tokenizer.END_TAG_TOKEN]: endTagInColumnGroup,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_TABLE_BODY_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInTableBody,\n        [Tokenizer.END_TAG_TOKEN]: endTagInTableBody,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_ROW_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInRow,\n        [Tokenizer.END_TAG_TOKEN]: endTagInRow,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_CELL_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInCell,\n        [Tokenizer.END_TAG_TOKEN]: endTagInCell,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_SELECT_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInSelect,\n        [Tokenizer.END_TAG_TOKEN]: endTagInSelect,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_SELECT_IN_TABLE_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInSelectInTable,\n        [Tokenizer.END_TAG_TOKEN]: endTagInSelectInTable,\n        [Tokenizer.EOF_TOKEN]: eofInBody\n    },\n    [IN_TEMPLATE_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInTemplate,\n        [Tokenizer.END_TAG_TOKEN]: endTagInTemplate,\n        [Tokenizer.EOF_TOKEN]: eofInTemplate\n    },\n    [AFTER_BODY_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenAfterBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterBody,\n        [Tokenizer.END_TAG_TOKEN]: endTagAfterBody,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    },\n    [IN_FRAMESET_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagInFrameset,\n        [Tokenizer.END_TAG_TOKEN]: endTagInFrameset,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    },\n    [AFTER_FRAMESET_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n        [Tokenizer.COMMENT_TOKEN]: appendComment,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterFrameset,\n        [Tokenizer.END_TAG_TOKEN]: endTagAfterFrameset,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    },\n    [AFTER_AFTER_BODY_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: tokenAfterAfterBody,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterBody,\n        [Tokenizer.END_TAG_TOKEN]: tokenAfterAfterBody,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    },\n    [AFTER_AFTER_FRAMESET_MODE]: {\n        [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n        [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n        [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n        [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n        [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n        [Tokenizer.END_TAG_TOKEN]: ignoreToken,\n        [Tokenizer.EOF_TOKEN]: stopParsing\n    }\n};\n\n//Parser\nclass Parser {\n    constructor(options) {\n        this.options = mergeOptions(DEFAULT_OPTIONS, options);\n\n        this.treeAdapter = this.options.treeAdapter;\n        this.pendingScript = null;\n\n        if (this.options.sourceCodeLocationInfo) {\n            Mixin.install(this, LocationInfoParserMixin);\n        }\n\n        if (this.options.onParseError) {\n            Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });\n        }\n    }\n\n    // API\n    parse(html) {\n        const document = this.treeAdapter.createDocument();\n\n        this._bootstrap(document, null);\n        this.tokenizer.write(html, true);\n        this._runParsingLoop(null);\n\n        return document;\n    }\n\n    parseFragment(html, fragmentContext) {\n        //NOTE: use <template> element as a fragment context if context element was not provided,\n        //so we will parse in \"forgiving\" manner\n        if (!fragmentContext) {\n            fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\n        }\n\n        //NOTE: create fake element which will be used as 'document' for fragment parsing.\n        //This is important for jsdom there 'document' can't be recreated, therefore\n        //fragment parsing causes messing of the main `document`.\n        const documentMock = this.treeAdapter.createElement('documentmock', NS.HTML, []);\n\n        this._bootstrap(documentMock, fragmentContext);\n\n        if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE) {\n            this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n        }\n\n        this._initTokenizerForFragmentParsing();\n        this._insertFakeRootElement();\n        this._resetInsertionMode();\n        this._findFormInFragmentContext();\n        this.tokenizer.write(html, true);\n        this._runParsingLoop(null);\n\n        const rootElement = this.treeAdapter.getFirstChild(documentMock);\n        const fragment = this.treeAdapter.createDocumentFragment();\n\n        this._adoptNodes(rootElement, fragment);\n\n        return fragment;\n    }\n\n    //Bootstrap parser\n    _bootstrap(document, fragmentContext) {\n        this.tokenizer = new Tokenizer(this.options);\n\n        this.stopped = false;\n\n        this.insertionMode = INITIAL_MODE;\n        this.originalInsertionMode = '';\n\n        this.document = document;\n        this.fragmentContext = fragmentContext;\n\n        this.headElement = null;\n        this.formElement = null;\n\n        this.openElements = new OpenElementStack(this.document, this.treeAdapter);\n        this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n\n        this.tmplInsertionModeStack = [];\n        this.tmplInsertionModeStackTop = -1;\n        this.currentTmplInsertionMode = null;\n\n        this.pendingCharacterTokens = [];\n        this.hasNonWhitespacePendingCharacterToken = false;\n\n        this.framesetOk = true;\n        this.skipNextNewLine = false;\n        this.fosterParentingEnabled = false;\n    }\n\n    //Errors\n    _err() {\n        // NOTE: err reporting is noop by default. Enabled by mixin.\n    }\n\n    //Parsing loop\n    _runParsingLoop(scriptHandler) {\n        while (!this.stopped) {\n            this._setupTokenizerCDATAMode();\n\n            const token = this.tokenizer.getNextToken();\n\n            if (token.type === Tokenizer.HIBERNATION_TOKEN) {\n                break;\n            }\n\n            if (this.skipNextNewLine) {\n                this.skipNextNewLine = false;\n\n                if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === '\\n') {\n                    if (token.chars.length === 1) {\n                        continue;\n                    }\n\n                    token.chars = token.chars.substr(1);\n                }\n            }\n\n            this._processInputToken(token);\n\n            if (scriptHandler && this.pendingScript) {\n                break;\n            }\n        }\n    }\n\n    runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n        this._runParsingLoop(scriptHandler);\n\n        if (scriptHandler && this.pendingScript) {\n            const script = this.pendingScript;\n\n            this.pendingScript = null;\n\n            scriptHandler(script);\n\n            return;\n        }\n\n        if (writeCallback) {\n            writeCallback();\n        }\n    }\n\n    //Text parsing\n    _setupTokenizerCDATAMode() {\n        const current = this._getAdjustedCurrentElement();\n\n        this.tokenizer.allowCDATA =\n            current &&\n            current !== this.document &&\n            this.treeAdapter.getNamespaceURI(current) !== NS.HTML &&\n            !this._isIntegrationPoint(current);\n    }\n\n    _switchToTextParsing(currentToken, nextTokenizerState) {\n        this._insertElement(currentToken, NS.HTML);\n        this.tokenizer.state = nextTokenizerState;\n        this.originalInsertionMode = this.insertionMode;\n        this.insertionMode = TEXT_MODE;\n    }\n\n    switchToPlaintextParsing() {\n        this.insertionMode = TEXT_MODE;\n        this.originalInsertionMode = IN_BODY_MODE;\n        this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n    }\n\n    //Fragment parsing\n    _getAdjustedCurrentElement() {\n        return this.openElements.stackTop === 0 && this.fragmentContext\n            ? this.fragmentContext\n            : this.openElements.current;\n    }\n\n    _findFormInFragmentContext() {\n        let node = this.fragmentContext;\n\n        do {\n            if (this.treeAdapter.getTagName(node) === $.FORM) {\n                this.formElement = node;\n                break;\n            }\n\n            node = this.treeAdapter.getParentNode(node);\n        } while (node);\n    }\n\n    _initTokenizerForFragmentParsing() {\n        if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n            const tn = this.treeAdapter.getTagName(this.fragmentContext);\n\n            if (tn === $.TITLE || tn === $.TEXTAREA) {\n                this.tokenizer.state = Tokenizer.MODE.RCDATA;\n            } else if (\n                tn === $.STYLE ||\n                tn === $.XMP ||\n                tn === $.IFRAME ||\n                tn === $.NOEMBED ||\n                tn === $.NOFRAMES ||\n                tn === $.NOSCRIPT\n            ) {\n                this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\n            } else if (tn === $.SCRIPT) {\n                this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\n            } else if (tn === $.PLAINTEXT) {\n                this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n            }\n        }\n    }\n\n    //Tree mutation\n    _setDocumentType(token) {\n        const name = token.name || '';\n        const publicId = token.publicId || '';\n        const systemId = token.systemId || '';\n\n        this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n    }\n\n    _attachElementToTree(element) {\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentElement(element);\n        } else {\n            const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n            this.treeAdapter.appendChild(parent, element);\n        }\n    }\n\n    _appendElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n        this._attachElementToTree(element);\n    }\n\n    _insertElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n        this._attachElementToTree(element);\n        this.openElements.push(element);\n    }\n\n    _insertFakeElement(tagName) {\n        const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n\n        this._attachElementToTree(element);\n        this.openElements.push(element);\n    }\n\n    _insertTemplate(token) {\n        const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n        const content = this.treeAdapter.createDocumentFragment();\n\n        this.treeAdapter.setTemplateContent(tmpl, content);\n        this._attachElementToTree(tmpl);\n        this.openElements.push(tmpl);\n    }\n\n    _insertFakeRootElement() {\n        const element = this.treeAdapter.createElement($.HTML, NS.HTML, []);\n\n        this.treeAdapter.appendChild(this.openElements.current, element);\n        this.openElements.push(element);\n    }\n\n    _appendCommentNode(token, parent) {\n        const commentNode = this.treeAdapter.createCommentNode(token.data);\n\n        this.treeAdapter.appendChild(parent, commentNode);\n    }\n\n    _insertCharacters(token) {\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentText(token.chars);\n        } else {\n            const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n            this.treeAdapter.insertText(parent, token.chars);\n        }\n    }\n\n    _adoptNodes(donor, recipient) {\n        for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n            this.treeAdapter.detachNode(child);\n            this.treeAdapter.appendChild(recipient, child);\n        }\n    }\n\n    //Token processing\n    _shouldProcessTokenInForeignContent(token) {\n        const current = this._getAdjustedCurrentElement();\n\n        if (!current || current === this.document) {\n            return false;\n        }\n\n        const ns = this.treeAdapter.getNamespaceURI(current);\n\n        if (ns === NS.HTML) {\n            return false;\n        }\n\n        if (\n            this.treeAdapter.getTagName(current) === $.ANNOTATION_XML &&\n            ns === NS.MATHML &&\n            token.type === Tokenizer.START_TAG_TOKEN &&\n            token.tagName === $.SVG\n        ) {\n            return false;\n        }\n\n        const isCharacterToken =\n            token.type === Tokenizer.CHARACTER_TOKEN ||\n            token.type === Tokenizer.NULL_CHARACTER_TOKEN ||\n            token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n\n        const isMathMLTextStartTag =\n            token.type === Tokenizer.START_TAG_TOKEN && token.tagName !== $.MGLYPH && token.tagName !== $.MALIGNMARK;\n\n        if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n            return false;\n        }\n\n        if (\n            (token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) &&\n            this._isIntegrationPoint(current, NS.HTML)\n        ) {\n            return false;\n        }\n\n        return token.type !== Tokenizer.EOF_TOKEN;\n    }\n\n    _processToken(token) {\n        TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n    }\n\n    _processTokenInBodyMode(token) {\n        TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n    }\n\n    _processTokenInForeignContent(token) {\n        if (token.type === Tokenizer.CHARACTER_TOKEN) {\n            characterInForeignContent(this, token);\n        } else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN) {\n            nullCharacterInForeignContent(this, token);\n        } else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN) {\n            insertCharacters(this, token);\n        } else if (token.type === Tokenizer.COMMENT_TOKEN) {\n            appendComment(this, token);\n        } else if (token.type === Tokenizer.START_TAG_TOKEN) {\n            startTagInForeignContent(this, token);\n        } else if (token.type === Tokenizer.END_TAG_TOKEN) {\n            endTagInForeignContent(this, token);\n        }\n    }\n\n    _processInputToken(token) {\n        if (this._shouldProcessTokenInForeignContent(token)) {\n            this._processTokenInForeignContent(token);\n        } else {\n            this._processToken(token);\n        }\n\n        if (token.type === Tokenizer.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n            this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n        }\n    }\n\n    //Integration points\n    _isIntegrationPoint(element, foreignNS) {\n        const tn = this.treeAdapter.getTagName(element);\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        const attrs = this.treeAdapter.getAttrList(element);\n\n        return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);\n    }\n\n    //Active formatting elements reconstruction\n    _reconstructActiveFormattingElements() {\n        const listLength = this.activeFormattingElements.length;\n\n        if (listLength) {\n            let unopenIdx = listLength;\n            let entry = null;\n\n            do {\n                unopenIdx--;\n                entry = this.activeFormattingElements.entries[unopenIdx];\n\n                if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n                    unopenIdx++;\n                    break;\n                }\n            } while (unopenIdx > 0);\n\n            for (let i = unopenIdx; i < listLength; i++) {\n                entry = this.activeFormattingElements.entries[i];\n                this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n                entry.element = this.openElements.current;\n            }\n        }\n    }\n\n    //Close elements\n    _closeTableCell() {\n        this.openElements.generateImpliedEndTags();\n        this.openElements.popUntilTableCellPopped();\n        this.activeFormattingElements.clearToLastMarker();\n        this.insertionMode = IN_ROW_MODE;\n    }\n\n    _closePElement() {\n        this.openElements.generateImpliedEndTagsWithExclusion($.P);\n        this.openElements.popUntilTagNamePopped($.P);\n    }\n\n    //Insertion modes\n    _resetInsertionMode() {\n        for (let i = this.openElements.stackTop, last = false; i >= 0; i--) {\n            let element = this.openElements.items[i];\n\n            if (i === 0) {\n                last = true;\n\n                if (this.fragmentContext) {\n                    element = this.fragmentContext;\n                }\n            }\n\n            const tn = this.treeAdapter.getTagName(element);\n            const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\n\n            if (newInsertionMode) {\n                this.insertionMode = newInsertionMode;\n                break;\n            } else if (!last && (tn === $.TD || tn === $.TH)) {\n                this.insertionMode = IN_CELL_MODE;\n                break;\n            } else if (!last && tn === $.HEAD) {\n                this.insertionMode = IN_HEAD_MODE;\n                break;\n            } else if (tn === $.SELECT) {\n                this._resetInsertionModeForSelect(i);\n                break;\n            } else if (tn === $.TEMPLATE) {\n                this.insertionMode = this.currentTmplInsertionMode;\n                break;\n            } else if (tn === $.HTML) {\n                this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n                break;\n            } else if (last) {\n                this.insertionMode = IN_BODY_MODE;\n                break;\n            }\n        }\n    }\n\n    _resetInsertionModeForSelect(selectIdx) {\n        if (selectIdx > 0) {\n            for (let i = selectIdx - 1; i > 0; i--) {\n                const ancestor = this.openElements.items[i];\n                const tn = this.treeAdapter.getTagName(ancestor);\n\n                if (tn === $.TEMPLATE) {\n                    break;\n                } else if (tn === $.TABLE) {\n                    this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n                    return;\n                }\n            }\n        }\n\n        this.insertionMode = IN_SELECT_MODE;\n    }\n\n    _pushTmplInsertionMode(mode) {\n        this.tmplInsertionModeStack.push(mode);\n        this.tmplInsertionModeStackTop++;\n        this.currentTmplInsertionMode = mode;\n    }\n\n    _popTmplInsertionMode() {\n        this.tmplInsertionModeStack.pop();\n        this.tmplInsertionModeStackTop--;\n        this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n    }\n\n    //Foster parenting\n    _isElementCausesFosterParenting(element) {\n        const tn = this.treeAdapter.getTagName(element);\n\n        return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\n    }\n\n    _shouldFosterParentOnInsertion() {\n        return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n    }\n\n    _findFosterParentingLocation() {\n        const location = {\n            parent: null,\n            beforeElement: null\n        };\n\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            const openElement = this.openElements.items[i];\n            const tn = this.treeAdapter.getTagName(openElement);\n            const ns = this.treeAdapter.getNamespaceURI(openElement);\n\n            if (tn === $.TEMPLATE && ns === NS.HTML) {\n                location.parent = this.treeAdapter.getTemplateContent(openElement);\n                break;\n            } else if (tn === $.TABLE) {\n                location.parent = this.treeAdapter.getParentNode(openElement);\n\n                if (location.parent) {\n                    location.beforeElement = openElement;\n                } else {\n                    location.parent = this.openElements.items[i - 1];\n                }\n\n                break;\n            }\n        }\n\n        if (!location.parent) {\n            location.parent = this.openElements.items[0];\n        }\n\n        return location;\n    }\n\n    _fosterParentElement(element) {\n        const location = this._findFosterParentingLocation();\n\n        if (location.beforeElement) {\n            this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n        } else {\n            this.treeAdapter.appendChild(location.parent, element);\n        }\n    }\n\n    _fosterParentText(chars) {\n        const location = this._findFosterParentingLocation();\n\n        if (location.beforeElement) {\n            this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\n        } else {\n            this.treeAdapter.insertText(location.parent, chars);\n        }\n    }\n\n    //Special elements\n    _isSpecialElement(element) {\n        const tn = this.treeAdapter.getTagName(element);\n        const ns = this.treeAdapter.getNamespaceURI(element);\n\n        return HTML.SPECIAL_ELEMENTS[ns][tn];\n    }\n}\n\nmodule.exports = Parser;\n\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n    let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n\n    if (formattingElementEntry) {\n        if (!p.openElements.contains(formattingElementEntry.element)) {\n            p.activeFormattingElements.removeEntry(formattingElementEntry);\n            formattingElementEntry = null;\n        } else if (!p.openElements.hasInScope(token.tagName)) {\n            formattingElementEntry = null;\n        }\n    } else {\n        genericEndTagInBody(p, token);\n    }\n\n    return formattingElementEntry;\n}\n\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n    let furthestBlock = null;\n\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const element = p.openElements.items[i];\n\n        if (element === formattingElementEntry.element) {\n            break;\n        }\n\n        if (p._isSpecialElement(element)) {\n            furthestBlock = element;\n        }\n    }\n\n    if (!furthestBlock) {\n        p.openElements.popUntilElementPopped(formattingElementEntry.element);\n        p.activeFormattingElements.removeEntry(formattingElementEntry);\n    }\n\n    return furthestBlock;\n}\n\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n    let lastElement = furthestBlock;\n    let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n\n    for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n        //NOTE: store next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n        nextElement = p.openElements.getCommonAncestor(element);\n\n        const elementEntry = p.activeFormattingElements.getElementEntry(element);\n        const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n        const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n\n        if (shouldRemoveFromOpenElements) {\n            if (counterOverflow) {\n                p.activeFormattingElements.removeEntry(elementEntry);\n            }\n\n            p.openElements.remove(element);\n        } else {\n            element = aaRecreateElementFromEntry(p, elementEntry);\n\n            if (lastElement === furthestBlock) {\n                p.activeFormattingElements.bookmark = elementEntry;\n            }\n\n            p.treeAdapter.detachNode(lastElement);\n            p.treeAdapter.appendChild(element, lastElement);\n            lastElement = element;\n        }\n    }\n\n    return lastElement;\n}\n\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n    const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n\n    p.openElements.replace(elementEntry.element, newElement);\n    elementEntry.element = newElement;\n\n    return newElement;\n}\n\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n    if (p._isElementCausesFosterParenting(commonAncestor)) {\n        p._fosterParentElement(lastElement);\n    } else {\n        const tn = p.treeAdapter.getTagName(commonAncestor);\n        const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n\n        if (tn === $.TEMPLATE && ns === NS.HTML) {\n            commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n        }\n\n        p.treeAdapter.appendChild(commonAncestor, lastElement);\n    }\n}\n\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n    const token = formattingElementEntry.token;\n    const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n\n    p._adoptNodes(furthestBlock, newElement);\n    p.treeAdapter.appendChild(furthestBlock, newElement);\n\n    p.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n    p.activeFormattingElements.removeEntry(formattingElementEntry);\n\n    p.openElements.remove(formattingElementEntry.element);\n    p.openElements.insertAfter(furthestBlock, newElement);\n}\n\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n    let formattingElementEntry;\n\n    for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n        formattingElementEntry = aaObtainFormattingElementEntry(p, token, formattingElementEntry);\n\n        if (!formattingElementEntry) {\n            break;\n        }\n\n        const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n\n        if (!furthestBlock) {\n            break;\n        }\n\n        p.activeFormattingElements.bookmark = formattingElementEntry;\n\n        const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n        const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n\n        p.treeAdapter.detachNode(lastElement);\n        aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n        aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n    }\n}\n\n//Generic token handlers\n//------------------------------------------------------------------\nfunction ignoreToken() {\n    //NOTE: do nothing =)\n}\n\nfunction misplacedDoctype(p) {\n    p._err(ERR.misplacedDoctype);\n}\n\nfunction appendComment(p, token) {\n    p._appendCommentNode(token, p.openElements.currentTmplContent || p.openElements.current);\n}\n\nfunction appendCommentToRootHtmlElement(p, token) {\n    p._appendCommentNode(token, p.openElements.items[0]);\n}\n\nfunction appendCommentToDocument(p, token) {\n    p._appendCommentNode(token, p.document);\n}\n\nfunction insertCharacters(p, token) {\n    p._insertCharacters(token);\n}\n\nfunction stopParsing(p) {\n    p.stopped = true;\n}\n\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n    p._setDocumentType(token);\n\n    const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n\n    if (!doctype.isConforming(token)) {\n        p._err(ERR.nonConformingDoctype);\n    }\n\n    p.treeAdapter.setDocumentMode(p.document, mode);\n\n    p.insertionMode = BEFORE_HTML_MODE;\n}\n\nfunction tokenInInitialMode(p, token) {\n    p._err(ERR.missingDoctype, { beforeToken: true });\n    p.treeAdapter.setDocumentMode(p.document, HTML.DOCUMENT_MODE.QUIRKS);\n    p.insertionMode = BEFORE_HTML_MODE;\n    p._processToken(token);\n}\n\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n    if (token.tagName === $.HTML) {\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = BEFORE_HEAD_MODE;\n    } else {\n        tokenBeforeHtml(p, token);\n    }\n}\n\nfunction endTagBeforeHtml(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n        tokenBeforeHtml(p, token);\n    }\n}\n\nfunction tokenBeforeHtml(p, token) {\n    p._insertFakeRootElement();\n    p.insertionMode = BEFORE_HEAD_MODE;\n    p._processToken(token);\n}\n\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.HEAD) {\n        p._insertElement(token, NS.HTML);\n        p.headElement = p.openElements.current;\n        p.insertionMode = IN_HEAD_MODE;\n    } else {\n        tokenBeforeHead(p, token);\n    }\n}\n\nfunction endTagBeforeHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n        tokenBeforeHead(p, token);\n    } else {\n        p._err(ERR.endTagWithoutMatchingOpenElement);\n    }\n}\n\nfunction tokenBeforeHead(p, token) {\n    p._insertFakeElement($.HEAD);\n    p.headElement = p.openElements.current;\n    p.insertionMode = IN_HEAD_MODE;\n    p._processToken(token);\n}\n\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META) {\n        p._appendElement(token, NS.HTML);\n        token.ackSelfClosing = true;\n    } else if (tn === $.TITLE) {\n        p._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\n    } else if (tn === $.NOSCRIPT) {\n        if (p.options.scriptingEnabled) {\n            p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n        } else {\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n        }\n    } else if (tn === $.NOFRAMES || tn === $.STYLE) {\n        p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n    } else if (tn === $.SCRIPT) {\n        p._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\n    } else if (tn === $.TEMPLATE) {\n        p._insertTemplate(token, NS.HTML);\n        p.activeFormattingElements.insertMarker();\n        p.framesetOk = false;\n        p.insertionMode = IN_TEMPLATE_MODE;\n        p._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n    } else if (tn === $.HEAD) {\n        p._err(ERR.misplacedStartTagForHeadElement);\n    } else {\n        tokenInHead(p, token);\n    }\n}\n\nfunction endTagInHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HEAD) {\n        p.openElements.pop();\n        p.insertionMode = AFTER_HEAD_MODE;\n    } else if (tn === $.BODY || tn === $.BR || tn === $.HTML) {\n        tokenInHead(p, token);\n    } else if (tn === $.TEMPLATE) {\n        if (p.openElements.tmplCount > 0) {\n            p.openElements.generateImpliedEndTagsThoroughly();\n\n            if (p.openElements.currentTagName !== $.TEMPLATE) {\n                p._err(ERR.closingOfElementWithOpenChildElements);\n            }\n\n            p.openElements.popUntilTagNamePopped($.TEMPLATE);\n            p.activeFormattingElements.clearToLastMarker();\n            p._popTmplInsertionMode();\n            p._resetInsertionMode();\n        } else {\n            p._err(ERR.endTagWithoutMatchingOpenElement);\n        }\n    } else {\n        p._err(ERR.endTagWithoutMatchingOpenElement);\n    }\n}\n\nfunction tokenInHead(p, token) {\n    p.openElements.pop();\n    p.insertionMode = AFTER_HEAD_MODE;\n    p._processToken(token);\n}\n\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (\n        tn === $.BASEFONT ||\n        tn === $.BGSOUND ||\n        tn === $.HEAD ||\n        tn === $.LINK ||\n        tn === $.META ||\n        tn === $.NOFRAMES ||\n        tn === $.STYLE\n    ) {\n        startTagInHead(p, token);\n    } else if (tn === $.NOSCRIPT) {\n        p._err(ERR.nestedNoscriptInHead);\n    } else {\n        tokenInHeadNoScript(p, token);\n    }\n}\n\nfunction endTagInHeadNoScript(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.NOSCRIPT) {\n        p.openElements.pop();\n        p.insertionMode = IN_HEAD_MODE;\n    } else if (tn === $.BR) {\n        tokenInHeadNoScript(p, token);\n    } else {\n        p._err(ERR.endTagWithoutMatchingOpenElement);\n    }\n}\n\nfunction tokenInHeadNoScript(p, token) {\n    const errCode =\n        token.type === Tokenizer.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n\n    p._err(errCode);\n    p.openElements.pop();\n    p.insertionMode = IN_HEAD_MODE;\n    p._processToken(token);\n}\n\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.BODY) {\n        p._insertElement(token, NS.HTML);\n        p.framesetOk = false;\n        p.insertionMode = IN_BODY_MODE;\n    } else if (tn === $.FRAMESET) {\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = IN_FRAMESET_MODE;\n    } else if (\n        tn === $.BASE ||\n        tn === $.BASEFONT ||\n        tn === $.BGSOUND ||\n        tn === $.LINK ||\n        tn === $.META ||\n        tn === $.NOFRAMES ||\n        tn === $.SCRIPT ||\n        tn === $.STYLE ||\n        tn === $.TEMPLATE ||\n        tn === $.TITLE\n    ) {\n        p._err(ERR.abandonedHeadElementChild);\n        p.openElements.push(p.headElement);\n        startTagInHead(p, token);\n        p.openElements.remove(p.headElement);\n    } else if (tn === $.HEAD) {\n        p._err(ERR.misplacedStartTagForHeadElement);\n    } else {\n        tokenAfterHead(p, token);\n    }\n}\n\nfunction endTagAfterHead(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.BODY || tn === $.HTML || tn === $.BR) {\n        tokenAfterHead(p, token);\n    } else if (tn === $.TEMPLATE) {\n        endTagInHead(p, token);\n    } else {\n        p._err(ERR.endTagWithoutMatchingOpenElement);\n    }\n}\n\nfunction tokenAfterHead(p, token) {\n    p._insertFakeElement($.BODY);\n    p.insertionMode = IN_BODY_MODE;\n    p._processToken(token);\n}\n\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n}\n\nfunction characterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\n\nfunction htmlStartTagInBody(p, token) {\n    if (p.openElements.tmplCount === 0) {\n        p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n    }\n}\n\nfunction bodyStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n    if (bodyElement && p.openElements.tmplCount === 0) {\n        p.framesetOk = false;\n        p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n    }\n}\n\nfunction framesetStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n    if (p.framesetOk && bodyElement) {\n        p.treeAdapter.detachNode(bodyElement);\n        p.openElements.popAllUpToHtmlElement();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = IN_FRAMESET_MODE;\n    }\n}\n\nfunction addressStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction numberedHeaderStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    const tn = p.openElements.currentTagName;\n\n    if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n        p.openElements.pop();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction preStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.framesetOk = false;\n}\n\nfunction formStartTagInBody(p, token) {\n    const inTemplate = p.openElements.tmplCount > 0;\n\n    if (!p.formElement || inTemplate) {\n        if (p.openElements.hasInButtonScope($.P)) {\n            p._closePElement();\n        }\n\n        p._insertElement(token, NS.HTML);\n\n        if (!inTemplate) {\n            p.formElement = p.openElements.current;\n        }\n    }\n}\n\nfunction listItemStartTagInBody(p, token) {\n    p.framesetOk = false;\n\n    const tn = token.tagName;\n\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const element = p.openElements.items[i];\n        const elementTn = p.treeAdapter.getTagName(element);\n        let closeTn = null;\n\n        if (tn === $.LI && elementTn === $.LI) {\n            closeTn = $.LI;\n        } else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT)) {\n            closeTn = elementTn;\n        }\n\n        if (closeTn) {\n            p.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n            p.openElements.popUntilTagNamePopped(closeTn);\n            break;\n        }\n\n        if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p._isSpecialElement(element)) {\n            break;\n        }\n    }\n\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction plaintextStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n    p.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n}\n\nfunction buttonStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BUTTON)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped($.BUTTON);\n    }\n\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n}\n\nfunction aStartTagInBody(p, token) {\n    const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\n\n    if (activeElementEntry) {\n        callAdoptionAgency(p, token);\n        p.openElements.remove(activeElementEntry.element);\n        p.activeFormattingElements.removeEntry(activeElementEntry);\n    }\n\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction bStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction nobrStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n\n    if (p.openElements.hasInScope($.NOBR)) {\n        callAdoptionAgency(p, token);\n        p._reconstructActiveFormattingElements();\n    }\n\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction appletStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.insertMarker();\n    p.framesetOk = false;\n}\n\nfunction tableStartTagInBody(p, token) {\n    if (\n        p.treeAdapter.getDocumentMode(p.document) !== HTML.DOCUMENT_MODE.QUIRKS &&\n        p.openElements.hasInButtonScope($.P)\n    ) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode = IN_TABLE_MODE;\n}\n\nfunction areaStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\n\nfunction inputStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n\n    const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n    if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n        p.framesetOk = false;\n    }\n\n    token.ackSelfClosing = true;\n}\n\nfunction paramStartTagInBody(p, token) {\n    p._appendElement(token, NS.HTML);\n    token.ackSelfClosing = true;\n}\n\nfunction hrStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\n\nfunction imageStartTagInBody(p, token) {\n    token.tagName = $.IMG;\n    areaStartTagInBody(p, token);\n}\n\nfunction textareaStartTagInBody(p, token) {\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.tokenizer.state = Tokenizer.MODE.RCDATA;\n    p.originalInsertionMode = p.insertionMode;\n    p.framesetOk = false;\n    p.insertionMode = TEXT_MODE;\n}\n\nfunction xmpStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._reconstructActiveFormattingElements();\n    p.framesetOk = false;\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction iframeStartTagInBody(p, token) {\n    p.framesetOk = false;\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as a rawtext.\nfunction noembedStartTagInBody(p, token) {\n    p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction selectStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n\n    if (\n        p.insertionMode === IN_TABLE_MODE ||\n        p.insertionMode === IN_CAPTION_MODE ||\n        p.insertionMode === IN_TABLE_BODY_MODE ||\n        p.insertionMode === IN_ROW_MODE ||\n        p.insertionMode === IN_CELL_MODE\n    ) {\n        p.insertionMode = IN_SELECT_IN_TABLE_MODE;\n    } else {\n        p.insertionMode = IN_SELECT_MODE;\n    }\n}\n\nfunction optgroupStartTagInBody(p, token) {\n    if (p.openElements.currentTagName === $.OPTION) {\n        p.openElements.pop();\n    }\n\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\n\nfunction rbStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTags();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction rtStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction menuStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n\n    p._insertElement(token, NS.HTML);\n}\n\nfunction mathStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n\n    foreignContent.adjustTokenMathMLAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n\n    if (token.selfClosing) {\n        p._appendElement(token, NS.MATHML);\n    } else {\n        p._insertElement(token, NS.MATHML);\n    }\n\n    token.ackSelfClosing = true;\n}\n\nfunction svgStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n\n    foreignContent.adjustTokenSVGAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n\n    if (token.selfClosing) {\n        p._appendElement(token, NS.SVG);\n    } else {\n        p._insertElement(token, NS.SVG);\n    }\n\n    token.ackSelfClosing = true;\n}\n\nfunction genericStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction startTagInBody(p, token) {\n    const tn = token.tagName;\n\n    switch (tn.length) {\n        case 1:\n            if (tn === $.I || tn === $.S || tn === $.B || tn === $.U) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.P) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.A) {\n                aStartTagInBody(p, token);\n            } else {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 2:\n            if (tn === $.DL || tn === $.OL || tn === $.UL) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n                numberedHeaderStartTagInBody(p, token);\n            } else if (tn === $.LI || tn === $.DD || tn === $.DT) {\n                listItemStartTagInBody(p, token);\n            } else if (tn === $.EM || tn === $.TT) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.BR) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.HR) {\n                hrStartTagInBody(p, token);\n            } else if (tn === $.RB) {\n                rbStartTagInBody(p, token);\n            } else if (tn === $.RT || tn === $.RP) {\n                rtStartTagInBody(p, token);\n            } else if (tn !== $.TH && tn !== $.TD && tn !== $.TR) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 3:\n            if (tn === $.DIV || tn === $.DIR || tn === $.NAV) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.PRE) {\n                preStartTagInBody(p, token);\n            } else if (tn === $.BIG) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.IMG || tn === $.WBR) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.XMP) {\n                xmpStartTagInBody(p, token);\n            } else if (tn === $.SVG) {\n                svgStartTagInBody(p, token);\n            } else if (tn === $.RTC) {\n                rbStartTagInBody(p, token);\n            } else if (tn !== $.COL) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 4:\n            if (tn === $.HTML) {\n                htmlStartTagInBody(p, token);\n            } else if (tn === $.BASE || tn === $.LINK || tn === $.META) {\n                startTagInHead(p, token);\n            } else if (tn === $.BODY) {\n                bodyStartTagInBody(p, token);\n            } else if (tn === $.MAIN || tn === $.MENU) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.FORM) {\n                formStartTagInBody(p, token);\n            } else if (tn === $.CODE || tn === $.FONT) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.NOBR) {\n                nobrStartTagInBody(p, token);\n            } else if (tn === $.AREA) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.MATH) {\n                mathStartTagInBody(p, token);\n            } else if (tn === $.MENU) {\n                menuStartTagInBody(p, token);\n            } else if (tn !== $.HEAD) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 5:\n            if (tn === $.STYLE || tn === $.TITLE) {\n                startTagInHead(p, token);\n            } else if (tn === $.ASIDE) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.SMALL) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.TABLE) {\n                tableStartTagInBody(p, token);\n            } else if (tn === $.EMBED) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.INPUT) {\n                inputStartTagInBody(p, token);\n            } else if (tn === $.PARAM || tn === $.TRACK) {\n                paramStartTagInBody(p, token);\n            } else if (tn === $.IMAGE) {\n                imageStartTagInBody(p, token);\n            } else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 6:\n            if (tn === $.SCRIPT) {\n                startTagInHead(p, token);\n            } else if (\n                tn === $.CENTER ||\n                tn === $.FIGURE ||\n                tn === $.FOOTER ||\n                tn === $.HEADER ||\n                tn === $.HGROUP ||\n                tn === $.DIALOG\n            ) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.BUTTON) {\n                buttonStartTagInBody(p, token);\n            } else if (tn === $.STRIKE || tn === $.STRONG) {\n                bStartTagInBody(p, token);\n            } else if (tn === $.APPLET || tn === $.OBJECT) {\n                appletStartTagInBody(p, token);\n            } else if (tn === $.KEYGEN) {\n                areaStartTagInBody(p, token);\n            } else if (tn === $.SOURCE) {\n                paramStartTagInBody(p, token);\n            } else if (tn === $.IFRAME) {\n                iframeStartTagInBody(p, token);\n            } else if (tn === $.SELECT) {\n                selectStartTagInBody(p, token);\n            } else if (tn === $.OPTION) {\n                optgroupStartTagInBody(p, token);\n            } else {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 7:\n            if (tn === $.BGSOUND) {\n                startTagInHead(p, token);\n            } else if (\n                tn === $.DETAILS ||\n                tn === $.ADDRESS ||\n                tn === $.ARTICLE ||\n                tn === $.SECTION ||\n                tn === $.SUMMARY\n            ) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.LISTING) {\n                preStartTagInBody(p, token);\n            } else if (tn === $.MARQUEE) {\n                appletStartTagInBody(p, token);\n            } else if (tn === $.NOEMBED) {\n                noembedStartTagInBody(p, token);\n            } else if (tn !== $.CAPTION) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 8:\n            if (tn === $.BASEFONT) {\n                startTagInHead(p, token);\n            } else if (tn === $.FRAMESET) {\n                framesetStartTagInBody(p, token);\n            } else if (tn === $.FIELDSET) {\n                addressStartTagInBody(p, token);\n            } else if (tn === $.TEXTAREA) {\n                textareaStartTagInBody(p, token);\n            } else if (tn === $.TEMPLATE) {\n                startTagInHead(p, token);\n            } else if (tn === $.NOSCRIPT) {\n                if (p.options.scriptingEnabled) {\n                    noembedStartTagInBody(p, token);\n                } else {\n                    genericStartTagInBody(p, token);\n                }\n            } else if (tn === $.OPTGROUP) {\n                optgroupStartTagInBody(p, token);\n            } else if (tn !== $.COLGROUP) {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 9:\n            if (tn === $.PLAINTEXT) {\n                plaintextStartTagInBody(p, token);\n            } else {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        case 10:\n            if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n                addressStartTagInBody(p, token);\n            } else {\n                genericStartTagInBody(p, token);\n            }\n\n            break;\n\n        default:\n            genericStartTagInBody(p, token);\n    }\n}\n\nfunction bodyEndTagInBody(p) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = AFTER_BODY_MODE;\n    }\n}\n\nfunction htmlEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = AFTER_BODY_MODE;\n        p._processToken(token);\n    }\n}\n\nfunction addressEndTagInBody(p, token) {\n    const tn = token.tagName;\n\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\n\nfunction formEndTagInBody(p) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    const formElement = p.formElement;\n\n    if (!inTemplate) {\n        p.formElement = null;\n    }\n\n    if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n        p.openElements.generateImpliedEndTags();\n\n        if (inTemplate) {\n            p.openElements.popUntilTagNamePopped($.FORM);\n        } else {\n            p.openElements.remove(formElement);\n        }\n    }\n}\n\nfunction pEndTagInBody(p) {\n    if (!p.openElements.hasInButtonScope($.P)) {\n        p._insertFakeElement($.P);\n    }\n\n    p._closePElement();\n}\n\nfunction liEndTagInBody(p) {\n    if (p.openElements.hasInListItemScope($.LI)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n        p.openElements.popUntilTagNamePopped($.LI);\n    }\n}\n\nfunction ddEndTagInBody(p, token) {\n    const tn = token.tagName;\n\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(tn);\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\n\nfunction numberedHeaderEndTagInBody(p) {\n    if (p.openElements.hasNumberedHeaderInScope()) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilNumberedHeaderPopped();\n    }\n}\n\nfunction appletEndTagInBody(p, token) {\n    const tn = token.tagName;\n\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n        p.activeFormattingElements.clearToLastMarker();\n    }\n}\n\nfunction brEndTagInBody(p) {\n    p._reconstructActiveFormattingElements();\n    p._insertFakeElement($.BR);\n    p.openElements.pop();\n    p.framesetOk = false;\n}\n\nfunction genericEndTagInBody(p, token) {\n    const tn = token.tagName;\n\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n\n        if (p.treeAdapter.getTagName(element) === tn) {\n            p.openElements.generateImpliedEndTagsWithExclusion(tn);\n            p.openElements.popUntilElementPopped(element);\n            break;\n        }\n\n        if (p._isSpecialElement(element)) {\n            break;\n        }\n    }\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction endTagInBody(p, token) {\n    const tn = token.tagName;\n\n    switch (tn.length) {\n        case 1:\n            if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U) {\n                callAdoptionAgency(p, token);\n            } else if (tn === $.P) {\n                pEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 2:\n            if (tn === $.DL || tn === $.UL || tn === $.OL) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.LI) {\n                liEndTagInBody(p, token);\n            } else if (tn === $.DD || tn === $.DT) {\n                ddEndTagInBody(p, token);\n            } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n                numberedHeaderEndTagInBody(p, token);\n            } else if (tn === $.BR) {\n                brEndTagInBody(p, token);\n            } else if (tn === $.EM || tn === $.TT) {\n                callAdoptionAgency(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 3:\n            if (tn === $.BIG) {\n                callAdoptionAgency(p, token);\n            } else if (tn === $.DIR || tn === $.DIV || tn === $.NAV || tn === $.PRE) {\n                addressEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 4:\n            if (tn === $.BODY) {\n                bodyEndTagInBody(p, token);\n            } else if (tn === $.HTML) {\n                htmlEndTagInBody(p, token);\n            } else if (tn === $.FORM) {\n                formEndTagInBody(p, token);\n            } else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR) {\n                callAdoptionAgency(p, token);\n            } else if (tn === $.MAIN || tn === $.MENU) {\n                addressEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 5:\n            if (tn === $.ASIDE) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.SMALL) {\n                callAdoptionAgency(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 6:\n            if (\n                tn === $.CENTER ||\n                tn === $.FIGURE ||\n                tn === $.FOOTER ||\n                tn === $.HEADER ||\n                tn === $.HGROUP ||\n                tn === $.DIALOG\n            ) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.APPLET || tn === $.OBJECT) {\n                appletEndTagInBody(p, token);\n            } else if (tn === $.STRIKE || tn === $.STRONG) {\n                callAdoptionAgency(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 7:\n            if (\n                tn === $.ADDRESS ||\n                tn === $.ARTICLE ||\n                tn === $.DETAILS ||\n                tn === $.SECTION ||\n                tn === $.SUMMARY ||\n                tn === $.LISTING\n            ) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.MARQUEE) {\n                appletEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 8:\n            if (tn === $.FIELDSET) {\n                addressEndTagInBody(p, token);\n            } else if (tn === $.TEMPLATE) {\n                endTagInHead(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        case 10:\n            if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n                addressEndTagInBody(p, token);\n            } else {\n                genericEndTagInBody(p, token);\n            }\n\n            break;\n\n        default:\n            genericEndTagInBody(p, token);\n    }\n}\n\nfunction eofInBody(p, token) {\n    if (p.tmplInsertionModeStackTop > -1) {\n        eofInTemplate(p, token);\n    } else {\n        p.stopped = true;\n    }\n}\n\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n    if (token.tagName === $.SCRIPT) {\n        p.pendingScript = p.openElements.current;\n    }\n\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n}\n\nfunction eofInText(p, token) {\n    p._err(ERR.eofInElementThatCanContainOnlyText);\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n    const curTn = p.openElements.currentTagName;\n\n    if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\n        p.pendingCharacterTokens = [];\n        p.hasNonWhitespacePendingCharacterToken = false;\n        p.originalInsertionMode = p.insertionMode;\n        p.insertionMode = IN_TABLE_TEXT_MODE;\n        p._processToken(token);\n    } else {\n        tokenInTable(p, token);\n    }\n}\n\nfunction captionStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p.activeFormattingElements.insertMarker();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = IN_CAPTION_MODE;\n}\n\nfunction colgroupStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = IN_COLUMN_GROUP_MODE;\n}\n\nfunction colStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement($.COLGROUP);\n    p.insertionMode = IN_COLUMN_GROUP_MODE;\n    p._processToken(token);\n}\n\nfunction tbodyStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = IN_TABLE_BODY_MODE;\n}\n\nfunction tdStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement($.TBODY);\n    p.insertionMode = IN_TABLE_BODY_MODE;\n    p._processToken(token);\n}\n\nfunction tableStartTagInTable(p, token) {\n    if (p.openElements.hasInTableScope($.TABLE)) {\n        p.openElements.popUntilTagNamePopped($.TABLE);\n        p._resetInsertionMode();\n        p._processToken(token);\n    }\n}\n\nfunction inputStartTagInTable(p, token) {\n    const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n    if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n        p._appendElement(token, NS.HTML);\n    } else {\n        tokenInTable(p, token);\n    }\n\n    token.ackSelfClosing = true;\n}\n\nfunction formStartTagInTable(p, token) {\n    if (!p.formElement && p.openElements.tmplCount === 0) {\n        p._insertElement(token, NS.HTML);\n        p.formElement = p.openElements.current;\n        p.openElements.pop();\n    }\n}\n\nfunction startTagInTable(p, token) {\n    const tn = token.tagName;\n\n    switch (tn.length) {\n        case 2:\n            if (tn === $.TD || tn === $.TH || tn === $.TR) {\n                tdStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 3:\n            if (tn === $.COL) {\n                colStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 4:\n            if (tn === $.FORM) {\n                formStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 5:\n            if (tn === $.TABLE) {\n                tableStartTagInTable(p, token);\n            } else if (tn === $.STYLE) {\n                startTagInHead(p, token);\n            } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n                tbodyStartTagInTable(p, token);\n            } else if (tn === $.INPUT) {\n                inputStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 6:\n            if (tn === $.SCRIPT) {\n                startTagInHead(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 7:\n            if (tn === $.CAPTION) {\n                captionStartTagInTable(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        case 8:\n            if (tn === $.COLGROUP) {\n                colgroupStartTagInTable(p, token);\n            } else if (tn === $.TEMPLATE) {\n                startTagInHead(p, token);\n            } else {\n                tokenInTable(p, token);\n            }\n\n            break;\n\n        default:\n            tokenInTable(p, token);\n    }\n}\n\nfunction endTagInTable(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TABLE) {\n        if (p.openElements.hasInTableScope($.TABLE)) {\n            p.openElements.popUntilTagNamePopped($.TABLE);\n            p._resetInsertionMode();\n        }\n    } else if (tn === $.TEMPLATE) {\n        endTagInHead(p, token);\n    } else if (\n        tn !== $.BODY &&\n        tn !== $.CAPTION &&\n        tn !== $.COL &&\n        tn !== $.COLGROUP &&\n        tn !== $.HTML &&\n        tn !== $.TBODY &&\n        tn !== $.TD &&\n        tn !== $.TFOOT &&\n        tn !== $.TH &&\n        tn !== $.THEAD &&\n        tn !== $.TR\n    ) {\n        tokenInTable(p, token);\n    }\n}\n\nfunction tokenInTable(p, token) {\n    const savedFosterParentingState = p.fosterParentingEnabled;\n\n    p.fosterParentingEnabled = true;\n    p._processTokenInBodyMode(token);\n    p.fosterParentingEnabled = savedFosterParentingState;\n}\n\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n}\n\nfunction characterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n    p.hasNonWhitespacePendingCharacterToken = true;\n}\n\nfunction tokenInTableText(p, token) {\n    let i = 0;\n\n    if (p.hasNonWhitespacePendingCharacterToken) {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            tokenInTable(p, p.pendingCharacterTokens[i]);\n        }\n    } else {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            p._insertCharacters(p.pendingCharacterTokens[i]);\n        }\n    }\n\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCaption(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.CAPTION ||\n        tn === $.COL ||\n        tn === $.COLGROUP ||\n        tn === $.TBODY ||\n        tn === $.TD ||\n        tn === $.TFOOT ||\n        tn === $.TH ||\n        tn === $.THEAD ||\n        tn === $.TR\n    ) {\n        if (p.openElements.hasInTableScope($.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped($.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = IN_TABLE_MODE;\n            p._processToken(token);\n        }\n    } else {\n        startTagInBody(p, token);\n    }\n}\n\nfunction endTagInCaption(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.CAPTION || tn === $.TABLE) {\n        if (p.openElements.hasInTableScope($.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped($.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = IN_TABLE_MODE;\n\n            if (tn === $.TABLE) {\n                p._processToken(token);\n            }\n        }\n    } else if (\n        tn !== $.BODY &&\n        tn !== $.COL &&\n        tn !== $.COLGROUP &&\n        tn !== $.HTML &&\n        tn !== $.TBODY &&\n        tn !== $.TD &&\n        tn !== $.TFOOT &&\n        tn !== $.TH &&\n        tn !== $.THEAD &&\n        tn !== $.TR\n    ) {\n        endTagInBody(p, token);\n    }\n}\n\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.COL) {\n        p._appendElement(token, NS.HTML);\n        token.ackSelfClosing = true;\n    } else if (tn === $.TEMPLATE) {\n        startTagInHead(p, token);\n    } else {\n        tokenInColumnGroup(p, token);\n    }\n}\n\nfunction endTagInColumnGroup(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.COLGROUP) {\n        if (p.openElements.currentTagName === $.COLGROUP) {\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_MODE;\n        }\n    } else if (tn === $.TEMPLATE) {\n        endTagInHead(p, token);\n    } else if (tn !== $.COL) {\n        tokenInColumnGroup(p, token);\n    }\n}\n\nfunction tokenInColumnGroup(p, token) {\n    if (p.openElements.currentTagName === $.COLGROUP) {\n        p.openElements.pop();\n        p.insertionMode = IN_TABLE_MODE;\n        p._processToken(token);\n    }\n}\n\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TR) {\n        p.openElements.clearBackToTableBodyContext();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = IN_ROW_MODE;\n    } else if (tn === $.TH || tn === $.TD) {\n        p.openElements.clearBackToTableBodyContext();\n        p._insertFakeElement($.TR);\n        p.insertionMode = IN_ROW_MODE;\n        p._processToken(token);\n    } else if (\n        tn === $.CAPTION ||\n        tn === $.COL ||\n        tn === $.COLGROUP ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD\n    ) {\n        if (p.openElements.hasTableBodyContextInTableScope()) {\n            p.openElements.clearBackToTableBodyContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_MODE;\n            p._processToken(token);\n        }\n    } else {\n        startTagInTable(p, token);\n    }\n}\n\nfunction endTagInTableBody(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.clearBackToTableBodyContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_MODE;\n        }\n    } else if (tn === $.TABLE) {\n        if (p.openElements.hasTableBodyContextInTableScope()) {\n            p.openElements.clearBackToTableBodyContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_MODE;\n            p._processToken(token);\n        }\n    } else if (\n        (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n        (tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR)\n    ) {\n        endTagInTable(p, token);\n    }\n}\n\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TH || tn === $.TD) {\n        p.openElements.clearBackToTableRowContext();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = IN_CELL_MODE;\n        p.activeFormattingElements.insertMarker();\n    } else if (\n        tn === $.CAPTION ||\n        tn === $.COL ||\n        tn === $.COLGROUP ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR\n    ) {\n        if (p.openElements.hasInTableScope($.TR)) {\n            p.openElements.clearBackToTableRowContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_BODY_MODE;\n            p._processToken(token);\n        }\n    } else {\n        startTagInTable(p, token);\n    }\n}\n\nfunction endTagInRow(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TR) {\n        if (p.openElements.hasInTableScope($.TR)) {\n            p.openElements.clearBackToTableRowContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_BODY_MODE;\n        }\n    } else if (tn === $.TABLE) {\n        if (p.openElements.hasInTableScope($.TR)) {\n            p.openElements.clearBackToTableRowContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_BODY_MODE;\n            p._processToken(token);\n        }\n    } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n        if (p.openElements.hasInTableScope(tn) || p.openElements.hasInTableScope($.TR)) {\n            p.openElements.clearBackToTableRowContext();\n            p.openElements.pop();\n            p.insertionMode = IN_TABLE_BODY_MODE;\n            p._processToken(token);\n        }\n    } else if (\n        (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n        (tn !== $.HTML && tn !== $.TD && tn !== $.TH)\n    ) {\n        endTagInTable(p, token);\n    }\n}\n\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.CAPTION ||\n        tn === $.COL ||\n        tn === $.COLGROUP ||\n        tn === $.TBODY ||\n        tn === $.TD ||\n        tn === $.TFOOT ||\n        tn === $.TH ||\n        tn === $.THEAD ||\n        tn === $.TR\n    ) {\n        if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n            p._closeTableCell();\n            p._processToken(token);\n        }\n    } else {\n        startTagInBody(p, token);\n    }\n}\n\nfunction endTagInCell(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.TD || tn === $.TH) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped(tn);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = IN_ROW_MODE;\n        }\n    } else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p._closeTableCell();\n            p._processToken(token);\n        }\n    } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML) {\n        endTagInBody(p, token);\n    }\n}\n\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.OPTION) {\n        if (p.openElements.currentTagName === $.OPTION) {\n            p.openElements.pop();\n        }\n\n        p._insertElement(token, NS.HTML);\n    } else if (tn === $.OPTGROUP) {\n        if (p.openElements.currentTagName === $.OPTION) {\n            p.openElements.pop();\n        }\n\n        if (p.openElements.currentTagName === $.OPTGROUP) {\n            p.openElements.pop();\n        }\n\n        p._insertElement(token, NS.HTML);\n    } else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\n        if (p.openElements.hasInSelectScope($.SELECT)) {\n            p.openElements.popUntilTagNamePopped($.SELECT);\n            p._resetInsertionMode();\n\n            if (tn !== $.SELECT) {\n                p._processToken(token);\n            }\n        }\n    } else if (tn === $.SCRIPT || tn === $.TEMPLATE) {\n        startTagInHead(p, token);\n    }\n}\n\nfunction endTagInSelect(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.OPTGROUP) {\n        const prevOpenElement = p.openElements.items[p.openElements.stackTop - 1];\n        const prevOpenElementTn = prevOpenElement && p.treeAdapter.getTagName(prevOpenElement);\n\n        if (p.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP) {\n            p.openElements.pop();\n        }\n\n        if (p.openElements.currentTagName === $.OPTGROUP) {\n            p.openElements.pop();\n        }\n    } else if (tn === $.OPTION) {\n        if (p.openElements.currentTagName === $.OPTION) {\n            p.openElements.pop();\n        }\n    } else if (tn === $.SELECT && p.openElements.hasInSelectScope($.SELECT)) {\n        p.openElements.popUntilTagNamePopped($.SELECT);\n        p._resetInsertionMode();\n    } else if (tn === $.TEMPLATE) {\n        endTagInHead(p, token);\n    }\n}\n\n//12.2.5.4.17 The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH\n    ) {\n        p.openElements.popUntilTagNamePopped($.SELECT);\n        p._resetInsertionMode();\n        p._processToken(token);\n    } else {\n        startTagInSelect(p, token);\n    }\n}\n\nfunction endTagInSelectInTable(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH\n    ) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.popUntilTagNamePopped($.SELECT);\n            p._resetInsertionMode();\n            p._processToken(token);\n        }\n    } else {\n        endTagInSelect(p, token);\n    }\n}\n\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n    const tn = token.tagName;\n\n    if (\n        tn === $.BASE ||\n        tn === $.BASEFONT ||\n        tn === $.BGSOUND ||\n        tn === $.LINK ||\n        tn === $.META ||\n        tn === $.NOFRAMES ||\n        tn === $.SCRIPT ||\n        tn === $.STYLE ||\n        tn === $.TEMPLATE ||\n        tn === $.TITLE\n    ) {\n        startTagInHead(p, token);\n    } else {\n        const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\n\n        p._popTmplInsertionMode();\n        p._pushTmplInsertionMode(newInsertionMode);\n        p.insertionMode = newInsertionMode;\n        p._processToken(token);\n    }\n}\n\nfunction endTagInTemplate(p, token) {\n    if (token.tagName === $.TEMPLATE) {\n        endTagInHead(p, token);\n    }\n}\n\nfunction eofInTemplate(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p._popTmplInsertionMode();\n        p._resetInsertionMode();\n        p._processToken(token);\n    } else {\n        p.stopped = true;\n    }\n}\n\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n    if (token.tagName === $.HTML) {\n        startTagInBody(p, token);\n    } else {\n        tokenAfterBody(p, token);\n    }\n}\n\nfunction endTagAfterBody(p, token) {\n    if (token.tagName === $.HTML) {\n        if (!p.fragmentContext) {\n            p.insertionMode = AFTER_AFTER_BODY_MODE;\n        }\n    } else {\n        tokenAfterBody(p, token);\n    }\n}\n\nfunction tokenAfterBody(p, token) {\n    p.insertionMode = IN_BODY_MODE;\n    p._processToken(token);\n}\n\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.FRAMESET) {\n        p._insertElement(token, NS.HTML);\n    } else if (tn === $.FRAME) {\n        p._appendElement(token, NS.HTML);\n        token.ackSelfClosing = true;\n    } else if (tn === $.NOFRAMES) {\n        startTagInHead(p, token);\n    }\n}\n\nfunction endTagInFrameset(p, token) {\n    if (token.tagName === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n        p.openElements.pop();\n\n        if (!p.fragmentContext && p.openElements.currentTagName !== $.FRAMESET) {\n            p.insertionMode = AFTER_FRAMESET_MODE;\n        }\n    }\n}\n\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.NOFRAMES) {\n        startTagInHead(p, token);\n    }\n}\n\nfunction endTagAfterFrameset(p, token) {\n    if (token.tagName === $.HTML) {\n        p.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n    }\n}\n\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n    if (token.tagName === $.HTML) {\n        startTagInBody(p, token);\n    } else {\n        tokenAfterAfterBody(p, token);\n    }\n}\n\nfunction tokenAfterAfterBody(p, token) {\n    p.insertionMode = IN_BODY_MODE;\n    p._processToken(token);\n}\n\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n    const tn = token.tagName;\n\n    if (tn === $.HTML) {\n        startTagInBody(p, token);\n    } else if (tn === $.NOFRAMES) {\n        startTagInHead(p, token);\n    }\n}\n\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n    token.chars = unicode.REPLACEMENT_CHARACTER;\n    p._insertCharacters(token);\n}\n\nfunction characterInForeignContent(p, token) {\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\n\nfunction startTagInForeignContent(p, token) {\n    if (foreignContent.causesExit(token) && !p.fragmentContext) {\n        while (\n            p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n            !p._isIntegrationPoint(p.openElements.current)\n        ) {\n            p.openElements.pop();\n        }\n\n        p._processToken(token);\n    } else {\n        const current = p._getAdjustedCurrentElement();\n        const currentNs = p.treeAdapter.getNamespaceURI(current);\n\n        if (currentNs === NS.MATHML) {\n            foreignContent.adjustTokenMathMLAttrs(token);\n        } else if (currentNs === NS.SVG) {\n            foreignContent.adjustTokenSVGTagName(token);\n            foreignContent.adjustTokenSVGAttrs(token);\n        }\n\n        foreignContent.adjustTokenXMLAttrs(token);\n\n        if (token.selfClosing) {\n            p._appendElement(token, currentNs);\n        } else {\n            p._insertElement(token, currentNs);\n        }\n\n        token.ackSelfClosing = true;\n    }\n}\n\nfunction endTagInForeignContent(p, token) {\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n\n        if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n            p._processToken(token);\n            break;\n        }\n\n        if (p.treeAdapter.getTagName(element).toLowerCase() === token.tagName) {\n            p.openElements.popUntilElementPopped(element);\n            break;\n        }\n    }\n}\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingPreprocessorMixin = require('./preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingTokenizerMixin extends ErrorReportingMixinBase {\n    constructor(tokenizer, opts) {\n        super(tokenizer, opts);\n\n        const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);\n\n        this.posTracker = preprocessorMixin.posTracker;\n    }\n}\n\nmodule.exports = ErrorReportingTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass LocationInfoOpenElementStackMixin extends Mixin {\n    constructor(stack, opts) {\n        super(stack);\n\n        this.onItemPop = opts.onItemPop;\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        return {\n            pop() {\n                mxn.onItemPop(this.current);\n                orig.pop.call(this);\n            },\n\n            popAllUpToHtmlElement() {\n                for (let i = this.stackTop; i > 0; i--) {\n                    mxn.onItemPop(this.items[i]);\n                }\n\n                orig.popAllUpToHtmlElement.call(this);\n            },\n\n            remove(element) {\n                mxn.onItemPop(this.current);\n                orig.remove.call(this, element);\n            }\n        };\n    }\n}\n\nmodule.exports = LocationInfoOpenElementStackMixin;\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA256 = C_algo.SHA256;\n\t    var HMAC = C_algo.HMAC;\n\n\t    /**\n\t     * Password-Based Key Derivation Function 2 algorithm.\n\t     */\n\t    var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t         * @property {number} iterations The number of iterations to perform. Default: 250000\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: SHA256,\n\t            iterations: 250000\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create();\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Computes the Password-Based Key Derivation Function 2.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init HMAC\n\t            var hmac = HMAC.create(cfg.hasher, password);\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\t            var blockIndex = WordArray.create([0x00000001]);\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var blockIndexWords = blockIndex.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                var block = hmac.update(salt).finalize(blockIndex);\n\t                hmac.reset();\n\n\t                // Shortcuts\n\t                var blockWords = block.words;\n\t                var blockWordsLength = blockWords.length;\n\n\t                // Iterations\n\t                var intermediate = block;\n\t                for (var i = 1; i < iterations; i++) {\n\t                    intermediate = hmac.finalize(intermediate);\n\t                    hmac.reset();\n\n\t                    // Shortcut\n\t                    var intermediateWords = intermediate.words;\n\n\t                    // XOR intermediate with block\n\t                    for (var j = 0; j < blockWordsLength; j++) {\n\t                        blockWords[j] ^= intermediateWords[j];\n\t                    }\n\t                }\n\n\t                derivedKey.concat(block);\n\t                blockIndexWords[0]++;\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Computes the Password-Based Key Derivation Function 2.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.PBKDF2(password, salt);\n\t     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.PBKDF2 = function (password, salt, cfg) {\n\t        return PBKDF2.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t    pad: function () {\n\t    },\n\n\t    unpad: function () {\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var T = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        for (var i = 0; i < 64; i++) {\n\t            T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t        }\n\t    }());\n\n\t    /**\n\t     * MD5 hash algorithm.\n\t     */\n\t    var MD5 = C_algo.MD5 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var M_offset_0  = M[offset + 0];\n\t            var M_offset_1  = M[offset + 1];\n\t            var M_offset_2  = M[offset + 2];\n\t            var M_offset_3  = M[offset + 3];\n\t            var M_offset_4  = M[offset + 4];\n\t            var M_offset_5  = M[offset + 5];\n\t            var M_offset_6  = M[offset + 6];\n\t            var M_offset_7  = M[offset + 7];\n\t            var M_offset_8  = M[offset + 8];\n\t            var M_offset_9  = M[offset + 9];\n\t            var M_offset_10 = M[offset + 10];\n\t            var M_offset_11 = M[offset + 11];\n\t            var M_offset_12 = M[offset + 12];\n\t            var M_offset_13 = M[offset + 13];\n\t            var M_offset_14 = M[offset + 14];\n\t            var M_offset_15 = M[offset + 15];\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\n\t            // Computation\n\t            a = FF(a, b, c, d, M_offset_0,  7,  T[0]);\n\t            d = FF(d, a, b, c, M_offset_1,  12, T[1]);\n\t            c = FF(c, d, a, b, M_offset_2,  17, T[2]);\n\t            b = FF(b, c, d, a, M_offset_3,  22, T[3]);\n\t            a = FF(a, b, c, d, M_offset_4,  7,  T[4]);\n\t            d = FF(d, a, b, c, M_offset_5,  12, T[5]);\n\t            c = FF(c, d, a, b, M_offset_6,  17, T[6]);\n\t            b = FF(b, c, d, a, M_offset_7,  22, T[7]);\n\t            a = FF(a, b, c, d, M_offset_8,  7,  T[8]);\n\t            d = FF(d, a, b, c, M_offset_9,  12, T[9]);\n\t            c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t            b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t            a = FF(a, b, c, d, M_offset_12, 7,  T[12]);\n\t            d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t            c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t            b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t            a = GG(a, b, c, d, M_offset_1,  5,  T[16]);\n\t            d = GG(d, a, b, c, M_offset_6,  9,  T[17]);\n\t            c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t            b = GG(b, c, d, a, M_offset_0,  20, T[19]);\n\t            a = GG(a, b, c, d, M_offset_5,  5,  T[20]);\n\t            d = GG(d, a, b, c, M_offset_10, 9,  T[21]);\n\t            c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t            b = GG(b, c, d, a, M_offset_4,  20, T[23]);\n\t            a = GG(a, b, c, d, M_offset_9,  5,  T[24]);\n\t            d = GG(d, a, b, c, M_offset_14, 9,  T[25]);\n\t            c = GG(c, d, a, b, M_offset_3,  14, T[26]);\n\t            b = GG(b, c, d, a, M_offset_8,  20, T[27]);\n\t            a = GG(a, b, c, d, M_offset_13, 5,  T[28]);\n\t            d = GG(d, a, b, c, M_offset_2,  9,  T[29]);\n\t            c = GG(c, d, a, b, M_offset_7,  14, T[30]);\n\t            b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t            a = HH(a, b, c, d, M_offset_5,  4,  T[32]);\n\t            d = HH(d, a, b, c, M_offset_8,  11, T[33]);\n\t            c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t            b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t            a = HH(a, b, c, d, M_offset_1,  4,  T[36]);\n\t            d = HH(d, a, b, c, M_offset_4,  11, T[37]);\n\t            c = HH(c, d, a, b, M_offset_7,  16, T[38]);\n\t            b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t            a = HH(a, b, c, d, M_offset_13, 4,  T[40]);\n\t            d = HH(d, a, b, c, M_offset_0,  11, T[41]);\n\t            c = HH(c, d, a, b, M_offset_3,  16, T[42]);\n\t            b = HH(b, c, d, a, M_offset_6,  23, T[43]);\n\t            a = HH(a, b, c, d, M_offset_9,  4,  T[44]);\n\t            d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t            c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t            b = HH(b, c, d, a, M_offset_2,  23, T[47]);\n\n\t            a = II(a, b, c, d, M_offset_0,  6,  T[48]);\n\t            d = II(d, a, b, c, M_offset_7,  10, T[49]);\n\t            c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t            b = II(b, c, d, a, M_offset_5,  21, T[51]);\n\t            a = II(a, b, c, d, M_offset_12, 6,  T[52]);\n\t            d = II(d, a, b, c, M_offset_3,  10, T[53]);\n\t            c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t            b = II(b, c, d, a, M_offset_1,  21, T[55]);\n\t            a = II(a, b, c, d, M_offset_8,  6,  T[56]);\n\t            d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t            c = II(c, d, a, b, M_offset_6,  15, T[58]);\n\t            b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t            a = II(a, b, c, d, M_offset_4,  6,  T[60]);\n\t            d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t            c = II(c, d, a, b, M_offset_2,  15, T[62]);\n\t            b = II(b, c, d, a, M_offset_9,  21, T[63]);\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t            var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t            var nBitsTotalL = nBitsTotal;\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t                (((nBitsTotalH << 8)  | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalH << 24) | (nBitsTotalH >>> 8))  & 0xff00ff00)\n\t            );\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotalL << 8)  | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalL << 24) | (nBitsTotalL >>> 8))  & 0xff00ff00)\n\t            );\n\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    function FF(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & c) | (~b & d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function GG(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & d) | (c & ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function HH(a, b, c, d, x, s, t) {\n\t        var n = a + (b ^ c ^ d) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function II(a, b, c, d, x, s, t) {\n\t        var n = a + (c ^ (b | ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.MD5('message');\n\t     *     var hash = CryptoJS.MD5(wordArray);\n\t     */\n\t    C.MD5 = Hasher._createHelper(MD5);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacMD5(message, key);\n\t     */\n\t    C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * HMAC algorithm.\n\t     */\n\t    var HMAC = C_algo.HMAC = Base.extend({\n\t        /**\n\t         * Initializes a newly created HMAC.\n\t         *\n\t         * @param {Hasher} hasher The hash algorithm to use.\n\t         * @param {WordArray|string} key The secret key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t         */\n\t        init: function (hasher, key) {\n\t            // Init hasher\n\t            hasher = this._hasher = new hasher.init();\n\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof key == 'string') {\n\t                key = Utf8.parse(key);\n\t            }\n\n\t            // Shortcuts\n\t            var hasherBlockSize = hasher.blockSize;\n\t            var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t            // Allow arbitrary length keys\n\t            if (key.sigBytes > hasherBlockSizeBytes) {\n\t                key = hasher.finalize(key);\n\t            }\n\n\t            // Clamp excess bits\n\t            key.clamp();\n\n\t            // Clone key for inner and outer pads\n\t            var oKey = this._oKey = key.clone();\n\t            var iKey = this._iKey = key.clone();\n\n\t            // Shortcuts\n\t            var oKeyWords = oKey.words;\n\t            var iKeyWords = iKey.words;\n\n\t            // XOR keys with pad constants\n\t            for (var i = 0; i < hasherBlockSize; i++) {\n\t                oKeyWords[i] ^= 0x5c5c5c5c;\n\t                iKeyWords[i] ^= 0x36363636;\n\t            }\n\t            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this HMAC to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Reset\n\t            hasher.reset();\n\t            hasher.update(this._iKey);\n\t        },\n\n\t        /**\n\t         * Updates this HMAC with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {HMAC} This HMAC instance.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.update('message');\n\t         *     hmacHasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            this._hasher.update(messageUpdate);\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the HMAC computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The HMAC.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmac = hmacHasher.finalize();\n\t         *     var hmac = hmacHasher.finalize('message');\n\t         *     var hmac = hmacHasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Compute HMAC\n\t            var innerHash = hasher.finalize(messageUpdate);\n\t            hasher.reset();\n\t            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t            return hmac;\n\t        }\n\t    });\n\t}());\n\n\n}));","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\n    throw Error(\n      \"takes an object of state variables to update or a function which returns an object of state variables.\"\n    );\n  this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals = { H: null, A: null, T: null, S: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n  self = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== self ? self : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(\n    oldElement.type,\n    newKey,\n    void 0,\n    void 0,\n    void 0,\n    oldElement.props\n  );\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop$1, noop$1)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\n  invokeCallback = 0;\n  var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n  if (isArrayImpl(children))\n    for (var i = 0; i < children.length; i++)\n      (nameSoFar = children[i]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (\"object\" === type) {\n    if (\"function\" === typeof children.then)\n      return mapIntoArray(\n        resolveThenable(children),\n        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result;\n    ctor = ctor();\n    ctor.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1), (payload._result = moduleObject);\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2), (payload._result = error);\n      }\n    );\n    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction noop() {}\nexports.Children = {\n  map: mapChildren,\n  forEach: function (children, forEachFunc, forEachContext) {\n    mapChildren(\n      children,\n      function () {\n        forEachFunc.apply(this, arguments);\n      },\n      forEachContext\n    );\n  },\n  count: function (children) {\n    var n = 0;\n    mapChildren(children, function () {\n      n++;\n    });\n    return n;\n  },\n  toArray: function (children) {\n    return (\n      mapChildren(children, function (child) {\n        return child;\n      }) || []\n    );\n  },\n  only: function (children) {\n    if (!isValidElement(children))\n      throw Error(\n        \"React.Children.only expected to receive a single React element child.\"\n      );\n    return children;\n  }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.act = function () {\n  throw Error(\"act(...) is not supported in production builds of React.\");\n};\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cloneElement = function (element, config, children) {\n  if (null === element || void 0 === element)\n    throw Error(\n      \"The argument must be a React element, but you passed \" + element + \".\"\n    );\n  var props = assign({}, element.props),\n    key = element.key,\n    owner = void 0;\n  if (null != config)\n    for (propName in (void 0 !== config.ref && (owner = void 0),\n    void 0 !== config.key && (key = \"\" + config.key),\n    config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (props[propName] = config[propName]);\n  var propName = arguments.length - 2;\n  if (1 === propName) props.children = children;\n  else if (1 < propName) {\n    for (var childArray = Array(propName), i = 0; i < propName; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n  defaultValue = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    _threadCount: 0,\n    Provider: null,\n    Consumer: null\n  };\n  defaultValue.Provider = defaultValue;\n  defaultValue.Consumer = {\n    $$typeof: REACT_CONSUMER_TYPE,\n    _context: defaultValue\n  };\n  return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (props[propName] = config[propName]);\n  var childrenLength = arguments.length - 2;\n  if (1 === childrenLength) props.children = children;\n  else if (1 < childrenLength) {\n    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  if (type && type.defaultProps)\n    for (propName in ((childrenLength = type.defaultProps), childrenLength))\n      void 0 === props[propName] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = function (scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    ReactSharedInternals.T = prevTransition;\n  }\n};\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n  return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.0.0\";\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name       = token\n * token             = 1*tchar\n * tchar             = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n *                     \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n *                     \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n *                     ; US-ASCII characters excluding CTLs,\n *                     ; whitespace DQUOTE, comma, semicolon,\n *                     ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value      = <subdomain>\n *                     ; defined in [RFC1034], Section 3.5, as\n *                     ; enhanced by [RFC1123], Section 2.1\n * <subdomain>       = <label> | <subdomain> \".\" <label>\n * <label>           = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n *                     Labels must be 63 characters or less.\n *                     'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str>         = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp>     = <let-dig> | \"-\"\n * <let-dig>         = <letter> | <digit>\n * <letter>          = any one of the 52 alphabetic characters A through Z in\n *                     upper case and a through z in lower case\n * <digit>           = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp =\n  /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value        = <any CHAR except CTLs or \";\">\n * CHAR              = %x01-7F\n *                     ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n\nconst __toString = Object.prototype.toString;\n\nconst NullObject = /* @__PURE__ */ (() => {\n  const C = function () {};\n  C.prototype = Object.create(null);\n  return C;\n})() as unknown as { new (): any };\n\n/**\n * Parse options.\n */\nexport interface ParseOptions {\n  /**\n   * Specifies a function that will be used to decode a [cookie-value](https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1).\n   * Since the value of a cookie has a limited character set (and must be a simple string), this function can be used to decode\n   * a previously-encoded cookie value into a JavaScript string.\n   *\n   * The default function is the global `decodeURIComponent`, wrapped in a `try..catch`. If an error\n   * is thrown it will return the cookie's original value. If you provide your own encode/decode\n   * scheme you must ensure errors are appropriately handled.\n   *\n   * @default decode\n   */\n  decode?: (str: string) => string | undefined;\n}\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nexport function parse(\n  str: string,\n  options?: ParseOptions,\n): Record<string, string | undefined> {\n  const obj: Record<string, string | undefined> = new NullObject();\n  const len = str.length;\n  // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n  if (len < 2) return obj;\n\n  const dec = options?.decode || decode;\n  let index = 0;\n\n  do {\n    const eqIdx = str.indexOf(\"=\", index);\n    if (eqIdx === -1) break; // No more cookie pairs.\n\n    const colonIdx = str.indexOf(\";\", index);\n    const endIdx = colonIdx === -1 ? len : colonIdx;\n\n    if (eqIdx > endIdx) {\n      // backtrack on prior semicolon\n      index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n      continue;\n    }\n\n    const keyStartIdx = startIndex(str, index, eqIdx);\n    const keyEndIdx = endIndex(str, eqIdx, keyStartIdx);\n    const key = str.slice(keyStartIdx, keyEndIdx);\n\n    // only assign once\n    if (obj[key] === undefined) {\n      let valStartIdx = startIndex(str, eqIdx + 1, endIdx);\n      let valEndIdx = endIndex(str, endIdx, valStartIdx);\n\n      const value = dec(str.slice(valStartIdx, valEndIdx));\n      obj[key] = value;\n    }\n\n    index = endIdx + 1;\n  } while (index < len);\n\n  return obj;\n}\n\nfunction startIndex(str: string, index: number, max: number) {\n  do {\n    const code = str.charCodeAt(index);\n    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index;\n  } while (++index < max);\n  return max;\n}\n\nfunction endIndex(str: string, index: number, min: number) {\n  while (index > min) {\n    const code = str.charCodeAt(--index);\n    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index + 1;\n  }\n  return min;\n}\n\n/**\n * Serialize options.\n */\nexport interface SerializeOptions {\n  /**\n   * Specifies a function that will be used to encode a [cookie-value](https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1).\n   * Since value of a cookie has a limited character set (and must be a simple string), this function can be used to encode\n   * a value into a string suited for a cookie's value, and should mirror `decode` when parsing.\n   *\n   * @default encodeURIComponent\n   */\n  encode?: (str: string) => string;\n  /**\n   * Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.2).\n   *\n   * The [cookie storage model specification](https://tools.ietf.org/html/rfc6265#section-5.3) states that if both `expires` and\n   * `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,\n   * so if both are set, they should point to the same date and time.\n   */\n  maxAge?: number;\n  /**\n   * Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.1).\n   * When no expiration is set clients consider this a \"non-persistent cookie\" and delete it the current session is over.\n   *\n   * The [cookie storage model specification](https://tools.ietf.org/html/rfc6265#section-5.3) states that if both `expires` and\n   * `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,\n   * so if both are set, they should point to the same date and time.\n   */\n  expires?: Date;\n  /**\n   * Specifies the value for the [`Domain` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.3).\n   * When no domain is set clients consider the cookie to apply to the current domain only.\n   */\n  domain?: string;\n  /**\n   * Specifies the value for the [`Path` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.4).\n   * When no path is set, the path is considered the [\"default path\"](https://tools.ietf.org/html/rfc6265#section-5.1.4).\n   */\n  path?: string;\n  /**\n   * Enables the [`HttpOnly` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.6).\n   * When enabled, clients will not allow client-side JavaScript to see the cookie in `document.cookie`.\n   */\n  httpOnly?: boolean;\n  /**\n   * Enables the [`Secure` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.5).\n   * When enabled, clients will only send the cookie back if the browser has a HTTPS connection.\n   */\n  secure?: boolean;\n  /**\n   * Enables the [`Partitioned` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/).\n   * When enabled, clients will only send the cookie back when the current domain _and_ top-level domain matches.\n   *\n   * This is an attribute that has not yet been fully standardized, and may change in the future.\n   * This also means clients may ignore this attribute until they understand it. More information\n   * about can be found in [the proposal](https://github.com/privacycg/CHIPS).\n   */\n  partitioned?: boolean;\n  /**\n   * Specifies the value for the [`Priority` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1).\n   *\n   * - `'low'` will set the `Priority` attribute to `Low`.\n   * - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set.\n   * - `'high'` will set the `Priority` attribute to `High`.\n   *\n   * More information about priority levels can be found in [the specification](https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1).\n   */\n  priority?: \"low\" | \"medium\" | \"high\";\n  /**\n   * Specifies the value for the [`SameSite` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7).\n   *\n   * - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.\n   * - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement.\n   * - `'none'` will set the `SameSite` attribute to `None` for an explicit cross-site cookie.\n   * - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement.\n   *\n   * More information about enforcement levels can be found in [the specification](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7).\n   */\n  sameSite?: boolean | \"lax\" | \"strict\" | \"none\";\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize a name value pair into a cookie string suitable for\n * http headers. An optional options object specifies cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n */\nexport function serialize(\n  name: string,\n  val: string,\n  options?: SerializeOptions,\n): string {\n  const enc = options?.encode || encodeURIComponent;\n\n  if (!cookieNameRegExp.test(name)) {\n    throw new TypeError(`argument name is invalid: ${name}`);\n  }\n\n  const value = enc(val);\n\n  if (!cookieValueRegExp.test(value)) {\n    throw new TypeError(`argument val is invalid: ${val}`);\n  }\n\n  let str = name + \"=\" + value;\n  if (!options) return str;\n\n  if (options.maxAge !== undefined) {\n    if (!Number.isInteger(options.maxAge)) {\n      throw new TypeError(`option maxAge is invalid: ${options.maxAge}`);\n    }\n\n    str += \"; Max-Age=\" + options.maxAge;\n  }\n\n  if (options.domain) {\n    if (!domainValueRegExp.test(options.domain)) {\n      throw new TypeError(`option domain is invalid: ${options.domain}`);\n    }\n\n    str += \"; Domain=\" + options.domain;\n  }\n\n  if (options.path) {\n    if (!pathValueRegExp.test(options.path)) {\n      throw new TypeError(`option path is invalid: ${options.path}`);\n    }\n\n    str += \"; Path=\" + options.path;\n  }\n\n  if (options.expires) {\n    if (\n      !isDate(options.expires) ||\n      !Number.isFinite(options.expires.valueOf())\n    ) {\n      throw new TypeError(`option expires is invalid: ${options.expires}`);\n    }\n\n    str += \"; Expires=\" + options.expires.toUTCString();\n  }\n\n  if (options.httpOnly) {\n    str += \"; HttpOnly\";\n  }\n\n  if (options.secure) {\n    str += \"; Secure\";\n  }\n\n  if (options.partitioned) {\n    str += \"; Partitioned\";\n  }\n\n  if (options.priority) {\n    const priority =\n      typeof options.priority === \"string\"\n        ? options.priority.toLowerCase()\n        : undefined;\n    switch (priority) {\n      case \"low\":\n        str += \"; Priority=Low\";\n        break;\n      case \"medium\":\n        str += \"; Priority=Medium\";\n        break;\n      case \"high\":\n        str += \"; Priority=High\";\n        break;\n      default:\n        throw new TypeError(`option priority is invalid: ${options.priority}`);\n    }\n  }\n\n  if (options.sameSite) {\n    const sameSite =\n      typeof options.sameSite === \"string\"\n        ? options.sameSite.toLowerCase()\n        : options.sameSite;\n    switch (sameSite) {\n      case true:\n      case \"strict\":\n        str += \"; SameSite=Strict\";\n        break;\n      case \"lax\":\n        str += \"; SameSite=Lax\";\n        break;\n      case \"none\":\n        str += \"; SameSite=None\";\n        break;\n      default:\n        throw new TypeError(`option sameSite is invalid: ${options.sameSite}`);\n    }\n  }\n\n  return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str: string): string {\n  if (str.indexOf(\"%\") === -1) return str;\n\n  try {\n    return decodeURIComponent(str);\n  } catch (e) {\n    return str;\n  }\n}\n\n/**\n * Determine if value is a Date.\n */\nfunction isDate(val: any): val is Date {\n  return __toString.call(val) === \"[object Date]\";\n}\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n  module.exports = require('./cjs/react-dom-client.development.js');\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t    pad: function (data, blockSize) {\n\t        // Add 0x80 byte\n\t        data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t        // Zero pad the rest\n\t        CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t    },\n\n\t    unpad: function (data) {\n\t        // Remove zero padding\n\t        CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t        // Remove one more byte -- the 0x80 byte\n\t        data.sigBytes--;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t    var crypto;\n\n\t    // Native crypto from window (Browser)\n\t    if (typeof window !== 'undefined' && window.crypto) {\n\t        crypto = window.crypto;\n\t    }\n\n\t    // Native crypto in web worker (Browser)\n\t    if (typeof self !== 'undefined' && self.crypto) {\n\t        crypto = self.crypto;\n\t    }\n\n\t    // Native crypto from worker\n\t    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t        crypto = globalThis.crypto;\n\t    }\n\n\t    // Native (experimental IE 11) crypto from window (Browser)\n\t    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t        crypto = window.msCrypto;\n\t    }\n\n\t    // Native crypto from global (NodeJS)\n\t    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t        crypto = global.crypto;\n\t    }\n\n\t    // Native crypto import via require (NodeJS)\n\t    if (!crypto && typeof require === 'function') {\n\t        try {\n\t            crypto = require('crypto');\n\t        } catch (err) {}\n\t    }\n\n\t    /*\n\t     * Cryptographically secure pseudorandom number generator\n\t     *\n\t     * As Math.random() is cryptographically not safe to use\n\t     */\n\t    var cryptoSecureRandomInt = function () {\n\t        if (crypto) {\n\t            // Use getRandomValues method (Browser)\n\t            if (typeof crypto.getRandomValues === 'function') {\n\t                try {\n\t                    return crypto.getRandomValues(new Uint32Array(1))[0];\n\t                } catch (err) {}\n\t            }\n\n\t            // Use randomBytes method (NodeJS)\n\t            if (typeof crypto.randomBytes === 'function') {\n\t                try {\n\t                    return crypto.randomBytes(4).readInt32LE();\n\t                } catch (err) {}\n\t            }\n\t        }\n\n\t        throw new Error('Native crypto module could not be used to get secure random number.');\n\t    };\n\n\t    /*\n\t     * Local polyfill of Object.create\n\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {}\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }());\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var j = 0; j < thatSigBytes; j += 4) {\n\t                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            for (var i = 0; i < nBytes; i += 4) {\n\t                words.push(cryptoSecureRandomInt());\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            var processedWords;\n\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Check if typed arrays are supported\n\t    if (typeof ArrayBuffer != 'function') {\n\t        return;\n\t    }\n\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\n\t    // Reference original init\n\t    var superInit = WordArray.init;\n\n\t    // Augment WordArray.init to handle typed arrays\n\t    var subInit = WordArray.init = function (typedArray) {\n\t        // Convert buffers to uint8\n\t        if (typedArray instanceof ArrayBuffer) {\n\t            typedArray = new Uint8Array(typedArray);\n\t        }\n\n\t        // Convert other array views to uint8\n\t        if (\n\t            typedArray instanceof Int8Array ||\n\t            (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t            typedArray instanceof Int16Array ||\n\t            typedArray instanceof Uint16Array ||\n\t            typedArray instanceof Int32Array ||\n\t            typedArray instanceof Uint32Array ||\n\t            typedArray instanceof Float32Array ||\n\t            typedArray instanceof Float64Array\n\t        ) {\n\t            typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t        }\n\n\t        // Handle Uint8Array\n\t        if (typedArray instanceof Uint8Array) {\n\t            // Shortcut\n\t            var typedArrayByteLength = typedArray.byteLength;\n\n\t            // Extract bytes\n\t            var words = [];\n\t            for (var i = 0; i < typedArrayByteLength; i++) {\n\t                words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t            }\n\n\t            // Initialize this word array\n\t            superInit.call(this, words, typedArrayByteLength);\n\t        } else {\n\t            // Else call normal init\n\t            superInit.apply(this, arguments);\n\t        }\n\t    };\n\n\t    subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\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<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Array<Resolver>} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var CipherParams = C_lib.CipherParams;\n\t    var C_enc = C.enc;\n\t    var Hex = C_enc.Hex;\n\t    var C_format = C.format;\n\n\t    var HexFormatter = C_format.Hex = {\n\t        /**\n\t         * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The hexadecimally encoded string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            return cipherParams.ciphertext.toString(Hex);\n\t        },\n\n\t        /**\n\t         * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t         *\n\t         * @param {string} input The hexadecimally encoded string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t         */\n\t        parse: function (input) {\n\t            var ciphertext = Hex.parse(input);\n\t            return CipherParams.create({ ciphertext: ciphertext });\n\t        }\n\t    };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","'use strict';\n\nconst UNDEFINED_CODE_POINTS = [\n    0xfffe,\n    0xffff,\n    0x1fffe,\n    0x1ffff,\n    0x2fffe,\n    0x2ffff,\n    0x3fffe,\n    0x3ffff,\n    0x4fffe,\n    0x4ffff,\n    0x5fffe,\n    0x5ffff,\n    0x6fffe,\n    0x6ffff,\n    0x7fffe,\n    0x7ffff,\n    0x8fffe,\n    0x8ffff,\n    0x9fffe,\n    0x9ffff,\n    0xafffe,\n    0xaffff,\n    0xbfffe,\n    0xbffff,\n    0xcfffe,\n    0xcffff,\n    0xdfffe,\n    0xdffff,\n    0xefffe,\n    0xeffff,\n    0xffffe,\n    0xfffff,\n    0x10fffe,\n    0x10ffff\n];\n\nexports.REPLACEMENT_CHARACTER = '\\uFFFD';\n\nexports.CODE_POINTS = {\n    EOF: -1,\n    NULL: 0x00,\n    TABULATION: 0x09,\n    CARRIAGE_RETURN: 0x0d,\n    LINE_FEED: 0x0a,\n    FORM_FEED: 0x0c,\n    SPACE: 0x20,\n    EXCLAMATION_MARK: 0x21,\n    QUOTATION_MARK: 0x22,\n    NUMBER_SIGN: 0x23,\n    AMPERSAND: 0x26,\n    APOSTROPHE: 0x27,\n    HYPHEN_MINUS: 0x2d,\n    SOLIDUS: 0x2f,\n    DIGIT_0: 0x30,\n    DIGIT_9: 0x39,\n    SEMICOLON: 0x3b,\n    LESS_THAN_SIGN: 0x3c,\n    EQUALS_SIGN: 0x3d,\n    GREATER_THAN_SIGN: 0x3e,\n    QUESTION_MARK: 0x3f,\n    LATIN_CAPITAL_A: 0x41,\n    LATIN_CAPITAL_F: 0x46,\n    LATIN_CAPITAL_X: 0x58,\n    LATIN_CAPITAL_Z: 0x5a,\n    RIGHT_SQUARE_BRACKET: 0x5d,\n    GRAVE_ACCENT: 0x60,\n    LATIN_SMALL_A: 0x61,\n    LATIN_SMALL_F: 0x66,\n    LATIN_SMALL_X: 0x78,\n    LATIN_SMALL_Z: 0x7a,\n    REPLACEMENT_CHARACTER: 0xfffd\n};\n\nexports.CODE_POINT_SEQUENCES = {\n    DASH_DASH_STRING: [0x2d, 0x2d], //--\n    DOCTYPE_STRING: [0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE\n    CDATA_START_STRING: [0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b], //[CDATA[\n    SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script\n    PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4c, 0x49, 0x43], //PUBLIC\n    SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4d] //SYSTEM\n};\n\n//Surrogates\nexports.isSurrogate = function(cp) {\n    return cp >= 0xd800 && cp <= 0xdfff;\n};\n\nexports.isSurrogatePair = function(cp) {\n    return cp >= 0xdc00 && cp <= 0xdfff;\n};\n\nexports.getSurrogatePairCodePoint = function(cp1, cp2) {\n    return (cp1 - 0xd800) * 0x400 + 0x2400 + cp2;\n};\n\n//NOTE: excluding NULL and ASCII whitespace\nexports.isControlCodePoint = function(cp) {\n    return (\n        (cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n        (cp >= 0x7f && cp <= 0x9f)\n    );\n};\n\nexports.isUndefinedCodePoint = function(cp) {\n    return (cp >= 0xfdd0 && cp <= 0xfdef) || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n  \"text/plain\": \"Text\",\n  \"text/html\": \"Url\",\n  \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug,\n    message,\n    reselectPrevious,\n    range,\n    selection,\n    mark,\n    success = false;\n  if (!options) {\n    options = {};\n  }\n  debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement(\"span\");\n    mark.textContent = text;\n    // avoid screen readers from reading out loud the text\n    mark.ariaHidden = \"true\"\n    // reset user styles for span element\n    mark.style.all = \"unset\";\n    // prevents scrolling to the end of the page\n    mark.style.position = \"fixed\";\n    mark.style.top = 0;\n    mark.style.clip = \"rect(0, 0, 0, 0)\";\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = \"pre\";\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = \"text\";\n    mark.style.MozUserSelect = \"text\";\n    mark.style.msUserSelect = \"text\";\n    mark.style.userSelect = \"text\";\n    mark.addEventListener(\"copy\", function(e) {\n      e.stopPropagation();\n      if (options.format) {\n        e.preventDefault();\n        if (typeof e.clipboardData === \"undefined\") { // IE 11\n          debug && console.warn(\"unable to use e.clipboardData\");\n          debug && console.warn(\"trying IE specific stuff\");\n          window.clipboardData.clearData();\n          var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n          window.clipboardData.setData(format, text);\n        } else { // all other browsers\n          e.clipboardData.clearData();\n          e.clipboardData.setData(options.format, text);\n        }\n      }\n      if (options.onCopy) {\n        e.preventDefault();\n        options.onCopy(e.clipboardData);\n      }\n    });\n\n    document.body.appendChild(mark);\n\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n\n    var successful = document.execCommand(\"copy\");\n    if (!successful) {\n      throw new Error(\"copy command was unsuccessful\");\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error(\"unable to copy using execCommand: \", err);\n    debug && console.warn(\"trying IE specific stuff\");\n    try {\n      window.clipboardData.setData(options.format || \"text\", text);\n      options.onCopy && options.onCopy(window.clipboardData);\n      success = true;\n    } catch (err) {\n      debug && console.error(\"unable to copy using clipboardData: \", err);\n      debug && console.error(\"falling back to prompt\");\n      message = format(\"message\" in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == \"function\") {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoTokenizerMixin = require('../location-info/tokenizer-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingParserMixin extends ErrorReportingMixinBase {\n    constructor(parser, opts) {\n        super(parser, opts);\n\n        this.opts = opts;\n        this.ctLoc = null;\n        this.locBeforeToken = false;\n    }\n\n    _setErrorLocation(err) {\n        if (this.ctLoc) {\n            err.startLine = this.ctLoc.startLine;\n            err.startCol = this.ctLoc.startCol;\n            err.startOffset = this.ctLoc.startOffset;\n\n            err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n            err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n            err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n        }\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        return {\n            _bootstrap(document, fragmentContext) {\n                orig._bootstrap.call(this, document, fragmentContext);\n\n                Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);\n                Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n            },\n\n            _processInputToken(token) {\n                mxn.ctLoc = token.location;\n\n                orig._processInputToken.call(this, token);\n            },\n\n            _err(code, options) {\n                mxn.locBeforeToken = options && options.beforeToken;\n                mxn._reportError(code);\n            }\n        };\n    }\n}\n\nmodule.exports = ErrorReportingParserMixin;\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  a: for (; 0 < index; ) {\n    var parentIndex = (index - 1) >>> 1,\n      parent = heap[parentIndex];\n    if (0 < compare(parent, node))\n      (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n    else break a;\n  }\n}\nfunction peek(heap) {\n  return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n  if (0 === heap.length) return null;\n  var first = heap[0],\n    last = heap.pop();\n  if (last !== first) {\n    heap[0] = last;\n    a: for (\n      var index = 0, length = heap.length, halfLength = length >>> 1;\n      index < halfLength;\n\n    ) {\n      var leftIndex = 2 * (index + 1) - 1,\n        left = heap[leftIndex],\n        rightIndex = leftIndex + 1,\n        right = heap[rightIndex];\n      if (0 > compare(left, last))\n        rightIndex < length && 0 > compare(right, left)\n          ? ((heap[index] = right),\n            (heap[rightIndex] = last),\n            (index = rightIndex))\n          : ((heap[index] = left),\n            (heap[leftIndex] = last),\n            (index = leftIndex));\n      else if (rightIndex < length && 0 > compare(right, last))\n        (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n      else break a;\n    }\n  }\n  return first;\n}\nfunction compare(a, b) {\n  var diff = a.sortIndex - b.sortIndex;\n  return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  var localPerformance = performance;\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date,\n    initialTime = localDate.now();\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n}\nvar taskQueue = [],\n  timerQueue = [],\n  taskIdCounter = 1,\n  currentTask = null,\n  currentPriorityLevel = 3,\n  isPerformingWork = !1,\n  isHostCallbackScheduled = !1,\n  isHostTimeoutScheduled = !1,\n  localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n  localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n  localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n  for (var timer = peek(timerQueue); null !== timer; ) {\n    if (null === timer.callback) pop(timerQueue);\n    else if (timer.startTime <= currentTime)\n      pop(timerQueue),\n        (timer.sortIndex = timer.expirationTime),\n        push(taskQueue, timer);\n    else break;\n    timer = peek(timerQueue);\n  }\n}\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = !1;\n  advanceTimers(currentTime);\n  if (!isHostCallbackScheduled)\n    if (null !== peek(taskQueue))\n      (isHostCallbackScheduled = !0), requestHostCallback();\n    else {\n      var firstTimer = peek(timerQueue);\n      null !== firstTimer &&\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n}\nvar isMessageLoopRunning = !1,\n  taskTimeoutID = -1,\n  frameInterval = 5,\n  startTime = -1;\nfunction shouldYieldToHost() {\n  return exports.unstable_now() - startTime < frameInterval ? !1 : !0;\n}\nfunction performWorkUntilDeadline() {\n  if (isMessageLoopRunning) {\n    var currentTime = exports.unstable_now();\n    startTime = currentTime;\n    var hasMoreWork = !0;\n    try {\n      a: {\n        isHostCallbackScheduled = !1;\n        isHostTimeoutScheduled &&\n          ((isHostTimeoutScheduled = !1),\n          localClearTimeout(taskTimeoutID),\n          (taskTimeoutID = -1));\n        isPerformingWork = !0;\n        var previousPriorityLevel = currentPriorityLevel;\n        try {\n          b: {\n            advanceTimers(currentTime);\n            for (\n              currentTask = peek(taskQueue);\n              null !== currentTask &&\n              !(\n                currentTask.expirationTime > currentTime && shouldYieldToHost()\n              );\n\n            ) {\n              var callback = currentTask.callback;\n              if (\"function\" === typeof callback) {\n                currentTask.callback = null;\n                currentPriorityLevel = currentTask.priorityLevel;\n                var continuationCallback = callback(\n                  currentTask.expirationTime <= currentTime\n                );\n                currentTime = exports.unstable_now();\n                if (\"function\" === typeof continuationCallback) {\n                  currentTask.callback = continuationCallback;\n                  advanceTimers(currentTime);\n                  hasMoreWork = !0;\n                  break b;\n                }\n                currentTask === peek(taskQueue) && pop(taskQueue);\n                advanceTimers(currentTime);\n              } else pop(taskQueue);\n              currentTask = peek(taskQueue);\n            }\n            if (null !== currentTask) hasMoreWork = !0;\n            else {\n              var firstTimer = peek(timerQueue);\n              null !== firstTimer &&\n                requestHostTimeout(\n                  handleTimeout,\n                  firstTimer.startTime - currentTime\n                );\n              hasMoreWork = !1;\n            }\n          }\n          break a;\n        } finally {\n          (currentTask = null),\n            (currentPriorityLevel = previousPriorityLevel),\n            (isPerformingWork = !1);\n        }\n        hasMoreWork = void 0;\n      }\n    } finally {\n      hasMoreWork\n        ? schedulePerformWorkUntilDeadline()\n        : (isMessageLoopRunning = !1);\n    }\n  }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\nelse if (\"undefined\" !== typeof MessageChannel) {\n  var channel = new MessageChannel(),\n    port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\nfunction requestHostCallback() {\n  isMessageLoopRunning ||\n    ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n}\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n  task.callback = null;\n};\nexports.unstable_continueExecution = function () {\n  isHostCallbackScheduled ||\n    isPerformingWork ||\n    ((isHostCallbackScheduled = !0), requestHostCallback());\n};\nexports.unstable_forceFrameRate = function (fps) {\n  0 > fps || 125 < fps\n    ? console.error(\n        \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n      )\n    : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n  return currentPriorityLevel;\n};\nexports.unstable_getFirstCallbackNode = function () {\n  return peek(taskQueue);\n};\nexports.unstable_next = function (eventHandler) {\n  switch (currentPriorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n      var priorityLevel = 3;\n      break;\n    default:\n      priorityLevel = currentPriorityLevel;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_pauseExecution = function () {};\nexports.unstable_requestPaint = function () {};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n    default:\n      priorityLevel = 3;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_scheduleCallback = function (\n  priorityLevel,\n  callback,\n  options\n) {\n  var currentTime = exports.unstable_now();\n  \"object\" === typeof options && null !== options\n    ? ((options = options.delay),\n      (options =\n        \"number\" === typeof options && 0 < options\n          ? currentTime + options\n          : currentTime))\n    : (options = currentTime);\n  switch (priorityLevel) {\n    case 1:\n      var timeout = -1;\n      break;\n    case 2:\n      timeout = 250;\n      break;\n    case 5:\n      timeout = 1073741823;\n      break;\n    case 4:\n      timeout = 1e4;\n      break;\n    default:\n      timeout = 5e3;\n  }\n  timeout = options + timeout;\n  priorityLevel = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: options,\n    expirationTime: timeout,\n    sortIndex: -1\n  };\n  options > currentTime\n    ? ((priorityLevel.sortIndex = options),\n      push(timerQueue, priorityLevel),\n      null === peek(taskQueue) &&\n        priorityLevel === peek(timerQueue) &&\n        (isHostTimeoutScheduled\n          ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n          : (isHostTimeoutScheduled = !0),\n        requestHostTimeout(handleTimeout, options - currentTime)))\n    : ((priorityLevel.sortIndex = timeout),\n      push(taskQueue, priorityLevel),\n      isHostCallbackScheduled ||\n        isPerformingWork ||\n        ((isHostCallbackScheduled = !0), requestHostCallback()));\n  return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n};\n","/**\n * Word Count\n *\n * Word count in respect of CJK characters.\n *\n * Copyright (c) 2015 - 2016 by Hsiaoming Yang.\n */\n\nvar pattern = /[a-zA-Z0-9_\\u0392-\\u03c9\\u00c0-\\u00ff\\u0600-\\u06ff]+|[\\u4e00-\\u9fff\\u3400-\\u4dbf\\uf900-\\ufaff\\u3040-\\u309f\\uac00-\\ud7af]+/g;\n\nmodule.exports = function (data) {\n  var m = data.match(pattern);\n  var count = 0;\n  if (!m) {\n    return 0;\n  }\n  for (var i = 0; i < m.length; i++) {\n    if (m[i].charCodeAt(0) >= 0x4e00) {\n      count += m[i].length;\n    } else {\n      count += 1;\n    }\n  }\n  return count;\n};\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\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",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t    var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    var Encryptor = OFB.Encryptor = OFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var keystream = this._keystream;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                keystream = this._keystream = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    OFB.Decryptor = Encryptor;\n\n\t    return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));","'use strict';\n\nconst { DOCUMENT_MODE } = require('./html');\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\n\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n    '+//silmaril//dtd html pro v0r11 19970101//',\n    '-//as//dtd html 3.0 aswedit + extensions//',\n    '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n    '-//ietf//dtd html 2.0 level 1//',\n    '-//ietf//dtd html 2.0 level 2//',\n    '-//ietf//dtd html 2.0 strict level 1//',\n    '-//ietf//dtd html 2.0 strict level 2//',\n    '-//ietf//dtd html 2.0 strict//',\n    '-//ietf//dtd html 2.0//',\n    '-//ietf//dtd html 2.1e//',\n    '-//ietf//dtd html 3.0//',\n    '-//ietf//dtd html 3.2 final//',\n    '-//ietf//dtd html 3.2//',\n    '-//ietf//dtd html 3//',\n    '-//ietf//dtd html level 0//',\n    '-//ietf//dtd html level 1//',\n    '-//ietf//dtd html level 2//',\n    '-//ietf//dtd html level 3//',\n    '-//ietf//dtd html strict level 0//',\n    '-//ietf//dtd html strict level 1//',\n    '-//ietf//dtd html strict level 2//',\n    '-//ietf//dtd html strict level 3//',\n    '-//ietf//dtd html strict//',\n    '-//ietf//dtd html//',\n    '-//metrius//dtd metrius presentational//',\n    '-//microsoft//dtd internet explorer 2.0 html strict//',\n    '-//microsoft//dtd internet explorer 2.0 html//',\n    '-//microsoft//dtd internet explorer 2.0 tables//',\n    '-//microsoft//dtd internet explorer 3.0 html strict//',\n    '-//microsoft//dtd internet explorer 3.0 html//',\n    '-//microsoft//dtd internet explorer 3.0 tables//',\n    '-//netscape comm. corp.//dtd html//',\n    '-//netscape comm. corp.//dtd strict html//',\n    \"-//o'reilly and associates//dtd html 2.0//\",\n    \"-//o'reilly and associates//dtd html extended 1.0//\",\n    \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n    '-//sq//dtd html 2.0 hotmetal + extensions//',\n    '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n    '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n    '-//spyglass//dtd html 2.0 extended//',\n    '-//sun microsystems corp.//dtd hotjava html//',\n    '-//sun microsystems corp.//dtd hotjava strict html//',\n    '-//w3c//dtd html 3 1995-03-24//',\n    '-//w3c//dtd html 3.2 draft//',\n    '-//w3c//dtd html 3.2 final//',\n    '-//w3c//dtd html 3.2//',\n    '-//w3c//dtd html 3.2s draft//',\n    '-//w3c//dtd html 4.0 frameset//',\n    '-//w3c//dtd html 4.0 transitional//',\n    '-//w3c//dtd html experimental 19960712//',\n    '-//w3c//dtd html experimental 970421//',\n    '-//w3c//dtd w3 html//',\n    '-//w3o//dtd w3 html 3.0//',\n    '-//webtechs//dtd mozilla html 2.0//',\n    '-//webtechs//dtd mozilla html//'\n];\n\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//'\n]);\n\nconst QUIRKS_MODE_PUBLIC_IDS = ['-//w3o//dtd w3 html strict 3.0//en//', '-/w3c/dtd html 4.0 transitional/en', 'html'];\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\n\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//'\n]);\n\n//Utils\nfunction enquoteDoctypeId(id) {\n    const quote = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n\n    return quote + id + quote;\n}\n\nfunction hasPrefix(publicId, prefixes) {\n    for (let i = 0; i < prefixes.length; i++) {\n        if (publicId.indexOf(prefixes[i]) === 0) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\n//API\nexports.isConforming = function(token) {\n    return (\n        token.name === VALID_DOCTYPE_NAME &&\n        token.publicId === null &&\n        (token.systemId === null || token.systemId === VALID_SYSTEM_ID)\n    );\n};\n\nexports.getDocumentMode = function(token) {\n    if (token.name !== VALID_DOCTYPE_NAME) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n\n    const systemId = token.systemId;\n\n    if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n\n    let publicId = token.publicId;\n\n    if (publicId !== null) {\n        publicId = publicId.toLowerCase();\n\n        if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n\n        let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n\n        prefixes =\n            systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.LIMITED_QUIRKS;\n        }\n    }\n\n    return DOCUMENT_MODE.NO_QUIRKS;\n};\n\nexports.serializeContent = function(name, publicId, systemId) {\n    let str = '!DOCTYPE ';\n\n    if (name) {\n        str += name;\n    }\n\n    if (publicId) {\n        str += ' PUBLIC ' + enquoteDoctypeId(publicId);\n    } else if (systemId) {\n        str += ' SYSTEM';\n    }\n\n    if (systemId !== null) {\n        str += ' ' + enquoteDoctypeId(systemId);\n    }\n\n    return str;\n};\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    const N = 16;\n\n\t    //Origin pbox and sbox, derived from PI\n\t    const ORIG_P = [\n\t        0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t        0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t        0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t        0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t        0x9216D5D9, 0x8979FB1B\n\t    ];\n\n\t    const ORIG_S = [\n\t        [   0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t            0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t            0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t            0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t            0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t            0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t            0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t            0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t            0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t            0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t            0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t            0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t            0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t            0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t            0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t            0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t            0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t            0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t            0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t            0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t            0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t            0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t            0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t            0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t            0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t            0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t            0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t            0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t            0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t            0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t            0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t            0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t            0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t            0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t            0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t            0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t            0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t            0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t            0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t            0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t            0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t            0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t            0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t            0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t            0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t            0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t            0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t            0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t            0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t            0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t            0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t            0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t            0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t            0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t            0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t            0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t            0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t            0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t            0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t            0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t            0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t            0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t            0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t            0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A   ],\n\t        [   0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t            0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t            0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t            0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t            0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t            0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t            0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t            0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t            0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t            0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t            0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t            0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t            0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t            0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t            0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t            0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t            0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t            0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t            0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t            0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t            0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t            0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t            0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t            0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t            0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t            0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t            0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t            0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t            0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t            0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t            0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t            0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t            0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t            0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t            0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t            0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t            0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t            0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t            0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t            0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t            0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t            0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t            0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t            0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t            0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t            0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t            0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t            0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t            0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t            0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t            0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t            0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t            0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t            0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t            0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t            0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t            0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t            0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t            0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t            0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t            0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t            0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t            0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t            0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7   ],\n\t        [   0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t            0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t            0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t            0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t            0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t            0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t            0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t            0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t            0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t            0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t            0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t            0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t            0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t            0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t            0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t            0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t            0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t            0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t            0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t            0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t            0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t            0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t            0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t            0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t            0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t            0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t            0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t            0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t            0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t            0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t            0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t            0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t            0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t            0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t            0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t            0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t            0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t            0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t            0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t            0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t            0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t            0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t            0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t            0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t            0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t            0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t            0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t            0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t            0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t            0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t            0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t            0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t            0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t            0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t            0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t            0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t            0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t            0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t            0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t            0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t            0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t            0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t            0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t            0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0  ],\n\t        [   0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t            0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t            0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t            0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t            0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t            0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t            0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t            0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t            0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t            0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t            0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t            0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t            0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t            0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t            0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t            0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t            0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t            0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t            0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t            0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t            0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t            0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t            0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t            0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t            0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t            0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t            0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t            0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t            0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t            0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t            0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t            0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t            0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t            0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t            0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t            0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t            0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t            0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t            0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t            0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t            0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t            0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t            0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t            0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t            0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t            0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t            0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t            0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t            0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t            0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t            0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t            0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t            0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t            0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t            0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t            0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t            0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t            0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t            0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t            0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t            0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t            0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t            0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t            0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6  ]\n\t    ];\n\n\t    var BLOWFISH_CTX = {\n\t        pbox: [],\n\t        sbox: []\n\t    }\n\n\t    function F(ctx, x){\n\t        let a = (x >> 24) & 0xFF;\n\t        let b = (x >> 16) & 0xFF;\n\t        let c = (x >> 8) & 0xFF;\n\t        let d = x & 0xFF;\n\n\t        let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t        y = y ^ ctx.sbox[2][c];\n\t        y = y + ctx.sbox[3][d];\n\n\t        return y;\n\t    }\n\n\t    function BlowFish_Encrypt(ctx, left, right){\n\t        let Xl = left;\n\t        let Xr = right;\n\t        let temp;\n\n\t        for(let i = 0; i < N; ++i){\n\t            Xl = Xl ^ ctx.pbox[i];\n\t            Xr = F(ctx, Xl) ^ Xr;\n\n\t            temp = Xl;\n\t            Xl = Xr;\n\t            Xr = temp;\n\t        }\n\n\t        temp = Xl;\n\t        Xl = Xr;\n\t        Xr = temp;\n\n\t        Xr = Xr ^ ctx.pbox[N];\n\t        Xl = Xl ^ ctx.pbox[N + 1];\n\n\t        return {left: Xl, right: Xr};\n\t    }\n\n\t    function BlowFish_Decrypt(ctx, left, right){\n\t        let Xl = left;\n\t        let Xr = right;\n\t        let temp;\n\n\t        for(let i = N + 1; i > 1; --i){\n\t            Xl = Xl ^ ctx.pbox[i];\n\t            Xr = F(ctx, Xl) ^ Xr;\n\n\t            temp = Xl;\n\t            Xl = Xr;\n\t            Xr = temp;\n\t        }\n\n\t        temp = Xl;\n\t        Xl = Xr;\n\t        Xr = temp;\n\n\t        Xr = Xr ^ ctx.pbox[1];\n\t        Xl = Xl ^ ctx.pbox[0];\n\n\t        return {left: Xl, right: Xr};\n\t    }\n\n\t    /**\n\t     * Initialization ctx's pbox and sbox.\n\t     *\n\t     * @param {Object} ctx The object has pbox and sbox.\n\t     * @param {Array} key An array of 32-bit words.\n\t     * @param {int} keysize The length of the key.\n\t     *\n\t     * @example\n\t     *\n\t     *     BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t     */\n\t    function BlowFishInit(ctx, key, keysize)\n\t    {\n\t        for(let Row = 0; Row < 4; Row++)\n\t        {\n\t            ctx.sbox[Row] = [];\n\t            for(let Col = 0; Col < 256; Col++)\n\t            {\n\t                ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t            }\n\t        }\n\n\t        let keyIndex = 0;\n\t        for(let index = 0; index < N + 2; index++)\n\t        {\n\t            ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t            keyIndex++;\n\t            if(keyIndex >= keysize)\n\t            {\n\t                keyIndex = 0;\n\t            }\n\t        }\n\n\t        let Data1 = 0;\n\t        let Data2 = 0;\n\t        let res = 0;\n\t        for(let i = 0; i < N + 2; i += 2)\n\t        {\n\t            res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t            Data1 = res.left;\n\t            Data2 = res.right;\n\t            ctx.pbox[i] = Data1;\n\t            ctx.pbox[i + 1] = Data2;\n\t        }\n\n\t        for(let i = 0; i < 4; i++)\n\t        {\n\t            for(let j = 0; j < 256; j += 2)\n\t            {\n\t                res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t                Data1 = res.left;\n\t                Data2 = res.right;\n\t                ctx.sbox[i][j] = Data1;\n\t                ctx.sbox[i][j + 1] = Data2;\n\t            }\n\t        }\n\n\t        return true;\n\t    }\n\n\t    /**\n\t     * Blowfish block cipher algorithm.\n\t     */\n\t    var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Skip reset of nRounds has been set before and key did not change\n\t            if (this._keyPriorReset === this._key) {\n\t                return;\n\t            }\n\n\t            // Shortcuts\n\t            var key = this._keyPriorReset = this._key;\n\t            var keyWords = key.words;\n\t            var keySize = key.sigBytes / 4;\n\n\t            //Initialization pbox and sbox\n\t            BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t            M[offset] = res.left;\n\t            M[offset + 1] = res.right;\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t            M[offset] = res.left;\n\t            M[offset + 1] = res.right;\n\t        },\n\n\t        blockSize: 64/32,\n\n\t        keySize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var C_algo = C.algo;\n\n\t    // Constants tables\n\t    var RHO_OFFSETS = [];\n\t    var PI_INDEXES  = [];\n\t    var ROUND_CONSTANTS = [];\n\n\t    // Compute Constants\n\t    (function () {\n\t        // Compute rho offset constants\n\t        var x = 1, y = 0;\n\t        for (var t = 0; t < 24; t++) {\n\t            RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t            var newX = y % 5;\n\t            var newY = (2 * x + 3 * y) % 5;\n\t            x = newX;\n\t            y = newY;\n\t        }\n\n\t        // Compute pi index constants\n\t        for (var x = 0; x < 5; x++) {\n\t            for (var y = 0; y < 5; y++) {\n\t                PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t            }\n\t        }\n\n\t        // Compute round constants\n\t        var LFSR = 0x01;\n\t        for (var i = 0; i < 24; i++) {\n\t            var roundConstantMsw = 0;\n\t            var roundConstantLsw = 0;\n\n\t            for (var j = 0; j < 7; j++) {\n\t                if (LFSR & 0x01) {\n\t                    var bitPosition = (1 << j) - 1;\n\t                    if (bitPosition < 32) {\n\t                        roundConstantLsw ^= 1 << bitPosition;\n\t                    } else /* if (bitPosition >= 32) */ {\n\t                        roundConstantMsw ^= 1 << (bitPosition - 32);\n\t                    }\n\t                }\n\n\t                // Compute next LFSR\n\t                if (LFSR & 0x80) {\n\t                    // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t                    LFSR = (LFSR << 1) ^ 0x71;\n\t                } else {\n\t                    LFSR <<= 1;\n\t                }\n\t            }\n\n\t            ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t        }\n\t    }());\n\n\t    // Reusable objects for temporary values\n\t    var T = [];\n\t    (function () {\n\t        for (var i = 0; i < 25; i++) {\n\t            T[i] = X64Word.create();\n\t        }\n\t    }());\n\n\t    /**\n\t     * SHA-3 hash algorithm.\n\t     */\n\t    var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} outputLength\n\t         *   The desired number of bits in the output hash.\n\t         *   Only values permitted are: 224, 256, 384, 512.\n\t         *   Default: 512\n\t         */\n\t        cfg: Hasher.cfg.extend({\n\t            outputLength: 512\n\t        }),\n\n\t        _doReset: function () {\n\t            var state = this._state = []\n\t            for (var i = 0; i < 25; i++) {\n\t                state[i] = new X64Word.init();\n\t            }\n\n\t            this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcuts\n\t            var state = this._state;\n\t            var nBlockSizeLanes = this.blockSize / 2;\n\n\t            // Absorb\n\t            for (var i = 0; i < nBlockSizeLanes; i++) {\n\t                // Shortcuts\n\t                var M2i  = M[offset + 2 * i];\n\t                var M2i1 = M[offset + 2 * i + 1];\n\n\t                // Swap endian\n\t                M2i = (\n\t                    (((M2i << 8)  | (M2i >>> 24)) & 0x00ff00ff) |\n\t                    (((M2i << 24) | (M2i >>> 8))  & 0xff00ff00)\n\t                );\n\t                M2i1 = (\n\t                    (((M2i1 << 8)  | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t                    (((M2i1 << 24) | (M2i1 >>> 8))  & 0xff00ff00)\n\t                );\n\n\t                // Absorb message into state\n\t                var lane = state[i];\n\t                lane.high ^= M2i1;\n\t                lane.low  ^= M2i;\n\t            }\n\n\t            // Rounds\n\t            for (var round = 0; round < 24; round++) {\n\t                // Theta\n\t                for (var x = 0; x < 5; x++) {\n\t                    // Mix column lanes\n\t                    var tMsw = 0, tLsw = 0;\n\t                    for (var y = 0; y < 5; y++) {\n\t                        var lane = state[x + 5 * y];\n\t                        tMsw ^= lane.high;\n\t                        tLsw ^= lane.low;\n\t                    }\n\n\t                    // Temporary values\n\t                    var Tx = T[x];\n\t                    Tx.high = tMsw;\n\t                    Tx.low  = tLsw;\n\t                }\n\t                for (var x = 0; x < 5; x++) {\n\t                    // Shortcuts\n\t                    var Tx4 = T[(x + 4) % 5];\n\t                    var Tx1 = T[(x + 1) % 5];\n\t                    var Tx1Msw = Tx1.high;\n\t                    var Tx1Lsw = Tx1.low;\n\n\t                    // Mix surrounding columns\n\t                    var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t                    var tLsw = Tx4.low  ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t                    for (var y = 0; y < 5; y++) {\n\t                        var lane = state[x + 5 * y];\n\t                        lane.high ^= tMsw;\n\t                        lane.low  ^= tLsw;\n\t                    }\n\t                }\n\n\t                // Rho Pi\n\t                for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t                    var tMsw;\n\t                    var tLsw;\n\n\t                    // Shortcuts\n\t                    var lane = state[laneIndex];\n\t                    var laneMsw = lane.high;\n\t                    var laneLsw = lane.low;\n\t                    var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t                    // Rotate lanes\n\t                    if (rhoOffset < 32) {\n\t                        tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t                        tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t                    } else /* if (rhoOffset >= 32) */ {\n\t                        tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t                        tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t                    }\n\n\t                    // Transpose lanes\n\t                    var TPiLane = T[PI_INDEXES[laneIndex]];\n\t                    TPiLane.high = tMsw;\n\t                    TPiLane.low  = tLsw;\n\t                }\n\n\t                // Rho pi at x = y = 0\n\t                var T0 = T[0];\n\t                var state0 = state[0];\n\t                T0.high = state0.high;\n\t                T0.low  = state0.low;\n\n\t                // Chi\n\t                for (var x = 0; x < 5; x++) {\n\t                    for (var y = 0; y < 5; y++) {\n\t                        // Shortcuts\n\t                        var laneIndex = x + 5 * y;\n\t                        var lane = state[laneIndex];\n\t                        var TLane = T[laneIndex];\n\t                        var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t                        var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t                        // Mix rows\n\t                        lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t                        lane.low  = TLane.low  ^ (~Tx1Lane.low  & Tx2Lane.low);\n\t                    }\n\t                }\n\n\t                // Iota\n\t                var lane = state[0];\n\t                var roundConstant = ROUND_CONSTANTS[round];\n\t                lane.high ^= roundConstant.high;\n\t                lane.low  ^= roundConstant.low;\n\t            }\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\t            var blockSizeBits = this.blockSize * 32;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t            dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var state = this._state;\n\t            var outputLengthBytes = this.cfg.outputLength / 8;\n\t            var outputLengthLanes = outputLengthBytes / 8;\n\n\t            // Squeeze\n\t            var hashWords = [];\n\t            for (var i = 0; i < outputLengthLanes; i++) {\n\t                // Shortcuts\n\t                var lane = state[i];\n\t                var laneMsw = lane.high;\n\t                var laneLsw = lane.low;\n\n\t                // Swap endian\n\t                laneMsw = (\n\t                    (((laneMsw << 8)  | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t                    (((laneMsw << 24) | (laneMsw >>> 8))  & 0xff00ff00)\n\t                );\n\t                laneLsw = (\n\t                    (((laneLsw << 8)  | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t                    (((laneLsw << 24) | (laneLsw >>> 8))  & 0xff00ff00)\n\t                );\n\n\t                // Squeeze state to retrieve hash\n\t                hashWords.push(laneLsw);\n\t                hashWords.push(laneMsw);\n\t            }\n\n\t            // Return final computed hash\n\t            return new WordArray.init(hashWords, outputLengthBytes);\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\n\t            var state = clone._state = this._state.slice(0);\n\t            for (var i = 0; i < 25; i++) {\n\t                state[i] = state[i].clone();\n\t            }\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA3('message');\n\t     *     var hash = CryptoJS.SHA3(wordArray);\n\t     */\n\t    C.SHA3 = Hasher._createHelper(SHA3);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA3(message, key);\n\t     */\n\t    C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction noop() {}\nvar Internals = {\n    d: {\n      f: noop,\n      r: function () {\n        throw Error(formatProdErrorMessage(522));\n      },\n      D: noop,\n      C: noop,\n      L: noop,\n      m: noop,\n      X: noop,\n      S: noop,\n      M: noop\n    },\n    p: 0,\n    findDOMNode: null\n  },\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key: null == key ? null : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nvar ReactSharedInternals =\n  React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n  if (\"font\" === as) return \"\";\n  if (\"string\" === typeof input)\n    return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  Internals;\nexports.createPortal = function (children, container) {\n  var key =\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (\n    !container ||\n    (1 !== container.nodeType &&\n      9 !== container.nodeType &&\n      11 !== container.nodeType)\n  )\n    throw Error(formatProdErrorMessage(299));\n  return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n  var previousTransition = ReactSharedInternals.T,\n    previousUpdatePriority = Internals.p;\n  try {\n    if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n  } finally {\n    (ReactSharedInternals.T = previousTransition),\n      (Internals.p = previousUpdatePriority),\n      Internals.d.f();\n  }\n};\nexports.preconnect = function (href, options) {\n  \"string\" === typeof href &&\n    (options\n      ? ((options = options.crossOrigin),\n        (options =\n          \"string\" === typeof options\n            ? \"use-credentials\" === options\n              ? options\n              : \"\"\n            : void 0))\n      : (options = null),\n    Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n  \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n  if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n      integrity =\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      fetchPriority =\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0;\n    \"style\" === as\n      ? Internals.d.S(\n          href,\n          \"string\" === typeof options.precedence ? options.precedence : void 0,\n          {\n            crossOrigin: crossOrigin,\n            integrity: integrity,\n            fetchPriority: fetchPriority\n          }\n        )\n      : \"script\" === as &&\n        Internals.d.X(href, {\n          crossOrigin: crossOrigin,\n          integrity: integrity,\n          fetchPriority: fetchPriority,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n  }\n};\nexports.preinitModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (\"object\" === typeof options && null !== options) {\n      if (null == options.as || \"script\" === options.as) {\n        var crossOrigin = getCrossOriginStringAs(\n          options.as,\n          options.crossOrigin\n        );\n        Internals.d.M(href, {\n          crossOrigin: crossOrigin,\n          integrity:\n            \"string\" === typeof options.integrity ? options.integrity : void 0,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n      }\n    } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n  if (\n    \"string\" === typeof href &&\n    \"object\" === typeof options &&\n    null !== options &&\n    \"string\" === typeof options.as\n  ) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n    Internals.d.L(href, as, {\n      crossOrigin: crossOrigin,\n      integrity:\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n      type: \"string\" === typeof options.type ? options.type : void 0,\n      fetchPriority:\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0,\n      referrerPolicy:\n        \"string\" === typeof options.referrerPolicy\n          ? options.referrerPolicy\n          : void 0,\n      imageSrcSet:\n        \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n      imageSizes:\n        \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n      media: \"string\" === typeof options.media ? options.media : void 0\n    });\n  }\n};\nexports.preloadModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (options) {\n      var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n      Internals.d.m(href, {\n        as:\n          \"string\" === typeof options.as && \"script\" !== options.as\n            ? options.as\n            : void 0,\n        crossOrigin: crossOrigin,\n        integrity:\n          \"string\" === typeof options.integrity ? options.integrity : void 0\n      });\n    } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n  Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n  return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n  return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.0.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n  React = require(\"react\"),\n  ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction isValidContainer(node) {\n  return !(\n    !node ||\n    (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n  );\n}\nvar REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nSymbol.for(\"react.debug_trace_mode\");\nvar REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PORTAL_TYPE:\n      return \"Portal\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Provider\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  assign = Object.assign,\n  prefix,\n  suffix;\nfunction describeBuiltInComponentFrame(name) {\n  if (void 0 === prefix)\n    try {\n      throw Error();\n    } catch (x) {\n      var match = x.stack.trim().match(/\\n( *(at )?)/);\n      prefix = (match && match[1]) || \"\";\n      suffix =\n        -1 < x.stack.indexOf(\"\\n    at\")\n          ? \" (<anonymous>)\"\n          : -1 < x.stack.indexOf(\"@\")\n            ? \"@unknown:0:0\"\n            : \"\";\n    }\n  return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n  if (!fn || reentry) return \"\";\n  reentry = !0;\n  var previousPrepareStackTrace = Error.prepareStackTrace;\n  Error.prepareStackTrace = void 0;\n  try {\n    var RunInRootFrame = {\n      DetermineComponentFrameRoot: function () {\n        try {\n          if (construct) {\n            var Fake = function () {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function () {\n                throw Error();\n              }\n            });\n            if (\"object\" === typeof Reflect && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x) {\n                var control = x;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x$0) {\n                control = x$0;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$1) {\n              control = x$1;\n            }\n            (Fake = fn()) &&\n              \"function\" === typeof Fake.catch &&\n              Fake.catch(function () {});\n          }\n        } catch (sample) {\n          if (sample && control && \"string\" === typeof sample.stack)\n            return [sample.stack, control.stack];\n        }\n        return [null, null];\n      }\n    };\n    RunInRootFrame.DetermineComponentFrameRoot.displayName =\n      \"DetermineComponentFrameRoot\";\n    var namePropDescriptor = Object.getOwnPropertyDescriptor(\n      RunInRootFrame.DetermineComponentFrameRoot,\n      \"name\"\n    );\n    namePropDescriptor &&\n      namePropDescriptor.configurable &&\n      Object.defineProperty(\n        RunInRootFrame.DetermineComponentFrameRoot,\n        \"name\",\n        { value: \"DetermineComponentFrameRoot\" }\n      );\n    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n      sampleStack = _RunInRootFrame$Deter[0],\n      controlStack = _RunInRootFrame$Deter[1];\n    if (sampleStack && controlStack) {\n      var sampleLines = sampleStack.split(\"\\n\"),\n        controlLines = controlStack.split(\"\\n\");\n      for (\n        namePropDescriptor = RunInRootFrame = 0;\n        RunInRootFrame < sampleLines.length &&\n        !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n      )\n        RunInRootFrame++;\n      for (\n        ;\n        namePropDescriptor < controlLines.length &&\n        !controlLines[namePropDescriptor].includes(\n          \"DetermineComponentFrameRoot\"\n        );\n\n      )\n        namePropDescriptor++;\n      if (\n        RunInRootFrame === sampleLines.length ||\n        namePropDescriptor === controlLines.length\n      )\n        for (\n          RunInRootFrame = sampleLines.length - 1,\n            namePropDescriptor = controlLines.length - 1;\n          1 <= RunInRootFrame &&\n          0 <= namePropDescriptor &&\n          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n        )\n          namePropDescriptor--;\n      for (\n        ;\n        1 <= RunInRootFrame && 0 <= namePropDescriptor;\n        RunInRootFrame--, namePropDescriptor--\n      )\n        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n            do\n              if (\n                (RunInRootFrame--,\n                namePropDescriptor--,\n                0 > namePropDescriptor ||\n                  sampleLines[RunInRootFrame] !==\n                    controlLines[namePropDescriptor])\n              ) {\n                var frame =\n                  \"\\n\" +\n                  sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n                fn.displayName &&\n                  frame.includes(\"<anonymous>\") &&\n                  (frame = frame.replace(\"<anonymous>\", fn.displayName));\n                return frame;\n              }\n            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n          }\n          break;\n        }\n    }\n  } finally {\n    (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n  }\n  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n    ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n    : \"\";\n}\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return (fiber = describeNativeComponentFrame(fiber.type, !1)), fiber;\n    case 11:\n      return (\n        (fiber = describeNativeComponentFrame(fiber.type.render, !1)), fiber\n      );\n    case 1:\n      return (fiber = describeNativeComponentFrame(fiber.type, !0)), fiber;\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\";\n    do\n      (info += describeFiber(workInProgress)),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber,\n    nearestMounted = fiber;\n  if (fiber.alternate) for (; node.return; ) node = node.return;\n  else {\n    fiber = node;\n    do\n      (node = fiber),\n        0 !== (node.flags & 4098) && (nearestMounted = node.return),\n        (fiber = node.return);\n    while (fiber);\n  }\n  return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (13 === fiber.tag) {\n    var suspenseState = fiber.memoizedState;\n    null === suspenseState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (suspenseState = fiber.memoizedState));\n    if (null !== suspenseState) return suspenseState.dehydrated;\n  }\n  return null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate) throw Error(formatProdErrorMessage(188));\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(formatProdErrorMessage(188));\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$2 = parentA.child; child$2; ) {\n        if (child$2 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$2 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$2 = child$2.sibling;\n      }\n      if (!didFindChild) {\n        for (child$2 = parentB.child; child$2; ) {\n          if (child$2 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$2 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$2 = child$2.sibling;\n        }\n        if (!didFindChild) throw Error(formatProdErrorMessage(189));\n      }\n    }\n    if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n  }\n  if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n  var tag = node.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n  for (node = node.child; null !== node; ) {\n    tag = findCurrentHostFiberImpl(node);\n    if (null !== tag) return tag;\n    node = node.sibling;\n  }\n  return null;\n}\nvar isArrayImpl = Array.isArray,\n  ReactDOMSharedInternals =\n    ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  sharedNotPendingObject = {\n    pending: !1,\n    data: null,\n    method: null,\n    action: null\n  },\n  valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n  contextFiberStackCursor = createCursor(null),\n  rootInstanceStackCursor = createCursor(null),\n  hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor, null);\n  fiber = nextRootInstance.nodeType;\n  switch (fiber) {\n    case 9:\n    case 11:\n      nextRootInstance = (nextRootInstance = nextRootInstance.documentElement)\n        ? (nextRootInstance = nextRootInstance.namespaceURI)\n          ? getOwnHostContext(nextRootInstance)\n          : 0\n        : 0;\n      break;\n    default:\n      if (\n        ((fiber = 8 === fiber ? nextRootInstance.parentNode : nextRootInstance),\n        (nextRootInstance = fiber.tagName),\n        (fiber = fiber.namespaceURI))\n      )\n        (fiber = getOwnHostContext(fiber)),\n          (nextRootInstance = getChildHostContextProd(fiber, nextRootInstance));\n      else\n        switch (nextRootInstance) {\n          case \"svg\":\n            nextRootInstance = 1;\n            break;\n          case \"math\":\n            nextRootInstance = 2;\n            break;\n          default:\n            nextRootInstance = 0;\n        }\n  }\n  pop(contextStackCursor);\n  push(contextStackCursor, nextRootInstance);\n}\nfunction popHostContainer() {\n  pop(contextStackCursor);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n  var context = contextStackCursor.current;\n  var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n  context !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor), pop(contextFiberStackCursor));\n  hostTransitionProviderCursor.current === fiber &&\n    (pop(hostTransitionProviderCursor),\n    (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n  scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n  cancelCallback$1 = Scheduler.unstable_cancelCallback,\n  shouldYield = Scheduler.unstable_shouldYield,\n  requestPaint = Scheduler.unstable_requestPaint,\n  now = Scheduler.unstable_now,\n  getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  LowPriority = Scheduler.unstable_LowPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction onCommitRoot(root) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n    try {\n      injectedHook.onCommitFiberRoot(\n        rendererID,\n        root,\n        void 0,\n        128 === (root.current.flags & 128)\n      );\n    } catch (err) {}\n}\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 128,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 4194176;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes,\n    warmLanes = root.warmLanes;\n  root = 0 !== root.finishedLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : root ||\n              ((warmLanes = nonIdlePendingLanes & ~warmLanes),\n              0 !== warmLanes &&\n                (nextLanes = getHighestPriorityLanes(warmLanes)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : root ||\n            ((warmLanes = pendingLanes & ~warmLanes),\n            0 !== warmLanes &&\n              (nextLanes = getHighestPriorityLanes(warmLanes))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (warmLanes = wipLanes & -wipLanes),\n        suspendedLanes >= warmLanes ||\n          (32 === suspendedLanes && 0 !== (warmLanes & 4194176)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 64:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextTransitionLane() {\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n  0 === (nextTransitionLane & 4194176) && (nextTransitionLane = 128);\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$7 = 31 - clz32(remainingLanes),\n      lane = 1 << index$7;\n    entanglements[index$7] = 0;\n    expirationTimes[index$7] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$7];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$7] = null, index$7 = 0;\n        index$7 < hiddenUpdatesForLane.length;\n        index$7++\n      ) {\n        var update = hiddenUpdatesForLane[index$7];\n        null !== update && (update.lane &= -536870913);\n      }\n    remainingLanes &= ~lane;\n  }\n  0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n  0 !== suspendedRetryLanes &&\n    0 === updatedLanes &&\n    0 !== root.tag &&\n    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 4194218);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$8 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$8;\n    (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n      (root[index$8] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\n}\nfunction lanesToEventPriority(lanes) {\n  lanes &= -lanes;\n  return 2 < lanes\n    ? 8 < lanes\n      ? 0 !== (lanes & 134217727)\n        ? 32\n        : 268435456\n      : 8\n    : 2;\n}\nfunction resolveUpdatePriority() {\n  var updatePriority = ReactDOMSharedInternals.p;\n  if (0 !== updatePriority) return updatePriority;\n  updatePriority = window.event;\n  return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    return (ReactDOMSharedInternals.p = priority), fn();\n  } finally {\n    ReactDOMSharedInternals.p = previousPriority;\n  }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n  internalInstanceKey = \"__reactFiber$\" + randomKey,\n  internalPropsKey = \"__reactProps$\" + randomKey,\n  internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n  internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n  internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n  internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n  internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n  internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n  if (targetInst) return targetInst;\n  for (var parentNode = targetNode.parentNode; parentNode; ) {\n    if (\n      (targetInst =\n        parentNode[internalContainerInstanceKey] ||\n        parentNode[internalInstanceKey])\n    ) {\n      parentNode = targetInst.alternate;\n      if (\n        null !== targetInst.child ||\n        (null !== parentNode && null !== parentNode.child)\n      )\n        for (\n          targetNode = getParentSuspenseInstance(targetNode);\n          null !== targetNode;\n\n        ) {\n          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n          targetNode = getParentSuspenseInstance(targetNode);\n        }\n      return targetInst;\n    }\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n  return null;\n}\nfunction getInstanceFromNode(node) {\n  if (\n    (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n  ) {\n    var tag = node.tag;\n    if (\n      5 === tag ||\n      6 === tag ||\n      13 === tag ||\n      26 === tag ||\n      27 === tag ||\n      3 === tag\n    )\n      return node;\n  }\n  return null;\n}\nfunction getNodeFromInstance(inst) {\n  var tag = inst.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n  throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n  var resources = root[internalRootNodeResourcesKey];\n  resources ||\n    (resources = root[internalRootNodeResourcesKey] =\n      { hoistableStyles: new Map(), hoistableScripts: new Map() });\n  return resources;\n}\nfunction markNodeAsHoistable(node) {\n  node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n  registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  registrationNameDependencies[registrationName] = dependencies;\n  for (\n    registrationName = 0;\n    registrationName < dependencies.length;\n    registrationName++\n  )\n    allNativeEvents.add(dependencies[registrationName]);\n}\nvar canUseDOM = !(\n    \"undefined\" === typeof window ||\n    \"undefined\" === typeof window.document ||\n    \"undefined\" === typeof window.document.createElement\n  ),\n  VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n    \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n  ),\n  illegalAttributeNameCache = {},\n  validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n    return !0;\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n    return (validatedAttributeNameCache[attributeName] = !0);\n  illegalAttributeNameCache[attributeName] = !0;\n  return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n  if (isAttributeNameSafe(name))\n    if (null === value) node.removeAttribute(name);\n    else {\n      switch (typeof value) {\n        case \"undefined\":\n        case \"function\":\n        case \"symbol\":\n          node.removeAttribute(name);\n          return;\n        case \"boolean\":\n          var prefix$10 = name.toLowerCase().slice(0, 5);\n          if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n            node.removeAttribute(name);\n            return;\n          }\n      }\n      node.setAttribute(name, \"\" + value);\n    }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttribute(name, \"\" + value);\n  }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttributeNS(namespace, name, \"\" + value);\n  }\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case \"bigint\":\n    case \"boolean\":\n    case \"number\":\n    case \"string\":\n    case \"undefined\":\n      return value;\n    case \"object\":\n      return value;\n    default:\n      return \"\";\n  }\n}\nfunction isCheckable(elem) {\n  var type = elem.type;\n  return (\n    (elem = elem.nodeName) &&\n    \"input\" === elem.toLowerCase() &&\n    (\"checkbox\" === type || \"radio\" === type)\n  );\n}\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? \"checked\" : \"value\",\n    descriptor = Object.getOwnPropertyDescriptor(\n      node.constructor.prototype,\n      valueField\n    ),\n    currentValue = \"\" + node[valueField];\n  if (\n    !node.hasOwnProperty(valueField) &&\n    \"undefined\" !== typeof descriptor &&\n    \"function\" === typeof descriptor.get &&\n    \"function\" === typeof descriptor.set\n  ) {\n    var get = descriptor.get,\n      set = descriptor.set;\n    Object.defineProperty(node, valueField, {\n      configurable: !0,\n      get: function () {\n        return get.call(this);\n      },\n      set: function (value) {\n        currentValue = \"\" + value;\n        set.call(this, value);\n      }\n    });\n    Object.defineProperty(node, valueField, {\n      enumerable: descriptor.enumerable\n    });\n    return {\n      getValue: function () {\n        return currentValue;\n      },\n      setValue: function (value) {\n        currentValue = \"\" + value;\n      },\n      stopTracking: function () {\n        node._valueTracker = null;\n        delete node[valueField];\n      }\n    };\n  }\n}\nfunction track(node) {\n  node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n  if (!node) return !1;\n  var tracker = node._valueTracker;\n  if (!tracker) return !0;\n  var lastValue = tracker.getValue();\n  var value = \"\";\n  node &&\n    (value = isCheckable(node)\n      ? node.checked\n        ? \"true\"\n        : \"false\"\n      : node.value);\n  node = value;\n  return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n  doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof doc) return null;\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n  return value.replace(\n    escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n    function (ch) {\n      return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n    }\n  );\n}\nfunction updateInput(\n  element,\n  value,\n  defaultValue,\n  lastDefaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name\n) {\n  element.name = \"\";\n  null != type &&\n  \"function\" !== typeof type &&\n  \"symbol\" !== typeof type &&\n  \"boolean\" !== typeof type\n    ? (element.type = type)\n    : element.removeAttribute(\"type\");\n  if (null != value)\n    if (\"number\" === type) {\n      if ((0 === value && \"\" === element.value) || element.value != value)\n        element.value = \"\" + getToStringValue(value);\n    } else\n      element.value !== \"\" + getToStringValue(value) &&\n        (element.value = \"\" + getToStringValue(value));\n  else\n    (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n  null != value\n    ? setDefaultValue(element, type, getToStringValue(value))\n    : null != defaultValue\n      ? setDefaultValue(element, type, getToStringValue(defaultValue))\n      : null != lastDefaultValue && element.removeAttribute(\"value\");\n  null == checked &&\n    null != defaultChecked &&\n    (element.defaultChecked = !!defaultChecked);\n  null != checked &&\n    (element.checked =\n      checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n  null != name &&\n  \"function\" !== typeof name &&\n  \"symbol\" !== typeof name &&\n  \"boolean\" !== typeof name\n    ? (element.name = \"\" + getToStringValue(name))\n    : element.removeAttribute(\"name\");\n}\nfunction initInput(\n  element,\n  value,\n  defaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name,\n  isHydrating\n) {\n  null != type &&\n    \"function\" !== typeof type &&\n    \"symbol\" !== typeof type &&\n    \"boolean\" !== typeof type &&\n    (element.type = type);\n  if (null != value || null != defaultValue) {\n    if (\n      !(\n        (\"submit\" !== type && \"reset\" !== type) ||\n        (void 0 !== value && null !== value)\n      )\n    )\n      return;\n    defaultValue =\n      null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n    value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n    isHydrating || value === element.value || (element.value = value);\n    element.defaultValue = value;\n  }\n  checked = null != checked ? checked : defaultChecked;\n  checked =\n    \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n  element.checked = isHydrating ? element.checked : !!checked;\n  element.defaultChecked = !!checked;\n  null != name &&\n    \"function\" !== typeof name &&\n    \"symbol\" !== typeof name &&\n    \"boolean\" !== typeof name &&\n    (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n  (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n    node.defaultValue === \"\" + value ||\n    (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  node = node.options;\n  if (multiple) {\n    multiple = {};\n    for (var i = 0; i < propValue.length; i++)\n      multiple[\"$\" + propValue[i]] = !0;\n    for (propValue = 0; propValue < node.length; propValue++)\n      (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n        node[propValue].selected !== i && (node[propValue].selected = i),\n        i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n  } else {\n    propValue = \"\" + getToStringValue(propValue);\n    multiple = null;\n    for (i = 0; i < node.length; i++) {\n      if (node[i].value === propValue) {\n        node[i].selected = !0;\n        setDefaultSelected && (node[i].defaultSelected = !0);\n        return;\n      }\n      null !== multiple || node[i].disabled || (multiple = node[i]);\n    }\n    null !== multiple && (multiple.selected = !0);\n  }\n}\nfunction updateTextarea(element, value, defaultValue) {\n  if (\n    null != value &&\n    ((value = \"\" + getToStringValue(value)),\n    value !== element.value && (element.value = value),\n    null == defaultValue)\n  ) {\n    element.defaultValue !== value && (element.defaultValue = value);\n    return;\n  }\n  element.defaultValue =\n    null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n  if (null == value) {\n    if (null != children) {\n      if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n      if (isArrayImpl(children)) {\n        if (1 < children.length) throw Error(formatProdErrorMessage(93));\n        children = children[0];\n      }\n      defaultValue = children;\n    }\n    null == defaultValue && (defaultValue = \"\");\n    value = defaultValue;\n  }\n  defaultValue = getToStringValue(value);\n  element.defaultValue = defaultValue;\n  children = element.textContent;\n  children === defaultValue &&\n    \"\" !== children &&\n    null !== children &&\n    (element.value = children);\n}\nfunction setTextContent(node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n    if (\n      firstChild &&\n      firstChild === node.lastChild &&\n      3 === firstChild.nodeType\n    ) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n  \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n    \" \"\n  )\n);\nfunction setValueForStyle(style, styleName, value) {\n  var isCustomProperty = 0 === styleName.indexOf(\"--\");\n  null == value || \"boolean\" === typeof value || \"\" === value\n    ? isCustomProperty\n      ? style.setProperty(styleName, \"\")\n      : \"float\" === styleName\n        ? (style.cssFloat = \"\")\n        : (style[styleName] = \"\")\n    : isCustomProperty\n      ? style.setProperty(styleName, value)\n      : \"number\" !== typeof value ||\n          0 === value ||\n          unitlessNumbers.has(styleName)\n        ? \"float\" === styleName\n          ? (style.cssFloat = value)\n          : (style[styleName] = (\"\" + value).trim())\n        : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n  if (null != styles && \"object\" !== typeof styles)\n    throw Error(formatProdErrorMessage(62));\n  node = node.style;\n  if (null != prevStyles) {\n    for (var styleName in prevStyles)\n      !prevStyles.hasOwnProperty(styleName) ||\n        (null != styles && styles.hasOwnProperty(styleName)) ||\n        (0 === styleName.indexOf(\"--\")\n          ? node.setProperty(styleName, \"\")\n          : \"float\" === styleName\n            ? (node.cssFloat = \"\")\n            : (node[styleName] = \"\"));\n    for (var styleName$16 in styles)\n      (styleName = styles[styleName$16]),\n        styles.hasOwnProperty(styleName$16) &&\n          prevStyles[styleName$16] !== styleName &&\n          setValueForStyle(node, styleName$16, styleName);\n  } else\n    for (var styleName$17 in styles)\n      styles.hasOwnProperty(styleName$17) &&\n        setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n  if (-1 === tagName.indexOf(\"-\")) return !1;\n  switch (tagName) {\n    case \"annotation-xml\":\n    case \"color-profile\":\n    case \"font-face\":\n    case \"font-face-src\":\n    case \"font-face-uri\":\n    case \"font-face-format\":\n    case \"font-face-name\":\n    case \"missing-glyph\":\n      return !1;\n    default:\n      return !0;\n  }\n}\nvar aliases = new Map([\n    [\"acceptCharset\", \"accept-charset\"],\n    [\"htmlFor\", \"for\"],\n    [\"httpEquiv\", \"http-equiv\"],\n    [\"crossOrigin\", \"crossorigin\"],\n    [\"accentHeight\", \"accent-height\"],\n    [\"alignmentBaseline\", \"alignment-baseline\"],\n    [\"arabicForm\", \"arabic-form\"],\n    [\"baselineShift\", \"baseline-shift\"],\n    [\"capHeight\", \"cap-height\"],\n    [\"clipPath\", \"clip-path\"],\n    [\"clipRule\", \"clip-rule\"],\n    [\"colorInterpolation\", \"color-interpolation\"],\n    [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n    [\"colorProfile\", \"color-profile\"],\n    [\"colorRendering\", \"color-rendering\"],\n    [\"dominantBaseline\", \"dominant-baseline\"],\n    [\"enableBackground\", \"enable-background\"],\n    [\"fillOpacity\", \"fill-opacity\"],\n    [\"fillRule\", \"fill-rule\"],\n    [\"floodColor\", \"flood-color\"],\n    [\"floodOpacity\", \"flood-opacity\"],\n    [\"fontFamily\", \"font-family\"],\n    [\"fontSize\", \"font-size\"],\n    [\"fontSizeAdjust\", \"font-size-adjust\"],\n    [\"fontStretch\", \"font-stretch\"],\n    [\"fontStyle\", \"font-style\"],\n    [\"fontVariant\", \"font-variant\"],\n    [\"fontWeight\", \"font-weight\"],\n    [\"glyphName\", \"glyph-name\"],\n    [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n    [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n    [\"horizAdvX\", \"horiz-adv-x\"],\n    [\"horizOriginX\", \"horiz-origin-x\"],\n    [\"imageRendering\", \"image-rendering\"],\n    [\"letterSpacing\", \"letter-spacing\"],\n    [\"lightingColor\", \"lighting-color\"],\n    [\"markerEnd\", \"marker-end\"],\n    [\"markerMid\", \"marker-mid\"],\n    [\"markerStart\", \"marker-start\"],\n    [\"overlinePosition\", \"overline-position\"],\n    [\"overlineThickness\", \"overline-thickness\"],\n    [\"paintOrder\", \"paint-order\"],\n    [\"panose-1\", \"panose-1\"],\n    [\"pointerEvents\", \"pointer-events\"],\n    [\"renderingIntent\", \"rendering-intent\"],\n    [\"shapeRendering\", \"shape-rendering\"],\n    [\"stopColor\", \"stop-color\"],\n    [\"stopOpacity\", \"stop-opacity\"],\n    [\"strikethroughPosition\", \"strikethrough-position\"],\n    [\"strikethroughThickness\", \"strikethrough-thickness\"],\n    [\"strokeDasharray\", \"stroke-dasharray\"],\n    [\"strokeDashoffset\", \"stroke-dashoffset\"],\n    [\"strokeLinecap\", \"stroke-linecap\"],\n    [\"strokeLinejoin\", \"stroke-linejoin\"],\n    [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n    [\"strokeOpacity\", \"stroke-opacity\"],\n    [\"strokeWidth\", \"stroke-width\"],\n    [\"textAnchor\", \"text-anchor\"],\n    [\"textDecoration\", \"text-decoration\"],\n    [\"textRendering\", \"text-rendering\"],\n    [\"transformOrigin\", \"transform-origin\"],\n    [\"underlinePosition\", \"underline-position\"],\n    [\"underlineThickness\", \"underline-thickness\"],\n    [\"unicodeBidi\", \"unicode-bidi\"],\n    [\"unicodeRange\", \"unicode-range\"],\n    [\"unitsPerEm\", \"units-per-em\"],\n    [\"vAlphabetic\", \"v-alphabetic\"],\n    [\"vHanging\", \"v-hanging\"],\n    [\"vIdeographic\", \"v-ideographic\"],\n    [\"vMathematical\", \"v-mathematical\"],\n    [\"vectorEffect\", \"vector-effect\"],\n    [\"vertAdvY\", \"vert-adv-y\"],\n    [\"vertOriginX\", \"vert-origin-x\"],\n    [\"vertOriginY\", \"vert-origin-y\"],\n    [\"wordSpacing\", \"word-spacing\"],\n    [\"writingMode\", \"writing-mode\"],\n    [\"xmlnsXlink\", \"xmlns:xlink\"],\n    [\"xHeight\", \"x-height\"]\n  ]),\n  isJavaScriptProtocol =\n    /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n  return isJavaScriptProtocol.test(\"\" + url)\n    ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n    : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n  nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n  nativeEvent.correspondingUseElement &&\n    (nativeEvent = nativeEvent.correspondingUseElement);\n  return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n  restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n  var internalInstance = getInstanceFromNode(target);\n  if (internalInstance && (target = internalInstance.stateNode)) {\n    var props = target[internalPropsKey] || null;\n    a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n      case \"input\":\n        updateInput(\n          target,\n          props.value,\n          props.defaultValue,\n          props.defaultValue,\n          props.checked,\n          props.defaultChecked,\n          props.type,\n          props.name\n        );\n        internalInstance = props.name;\n        if (\"radio\" === props.type && null != internalInstance) {\n          for (props = target; props.parentNode; ) props = props.parentNode;\n          props = props.querySelectorAll(\n            'input[name=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                \"\" + internalInstance\n              ) +\n              '\"][type=\"radio\"]'\n          );\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          ) {\n            var otherNode = props[internalInstance];\n            if (otherNode !== target && otherNode.form === target.form) {\n              var otherProps = otherNode[internalPropsKey] || null;\n              if (!otherProps) throw Error(formatProdErrorMessage(90));\n              updateInput(\n                otherNode,\n                otherProps.value,\n                otherProps.defaultValue,\n                otherProps.defaultValue,\n                otherProps.checked,\n                otherProps.defaultChecked,\n                otherProps.type,\n                otherProps.name\n              );\n            }\n          }\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          )\n            (otherNode = props[internalInstance]),\n              otherNode.form === target.form && updateValueIfChanged(otherNode);\n        }\n        break a;\n      case \"textarea\":\n        updateTextarea(target, props.value, props.defaultValue);\n        break a;\n      case \"select\":\n        (internalInstance = props.value),\n          null != internalInstance &&\n            updateOptions(target, !!props.multiple, internalInstance, !1);\n    }\n  }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n  if (isInsideEventHandler) return fn(a, b);\n  isInsideEventHandler = !0;\n  try {\n    var JSCompiler_inline_result = fn(a);\n    return JSCompiler_inline_result;\n  } finally {\n    if (\n      ((isInsideEventHandler = !1),\n      null !== restoreTarget || null !== restoreQueue)\n    )\n      if (\n        (flushSyncWork$1(),\n        restoreTarget &&\n          ((a = restoreTarget),\n          (fn = restoreQueue),\n          (restoreQueue = restoreTarget = null),\n          restoreStateOfTarget(a),\n          fn))\n      )\n        for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n  }\n}\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n  if (null === stateNode) return null;\n  var props = stateNode[internalPropsKey] || null;\n  if (null === props) return null;\n  stateNode = props[registrationName];\n  a: switch (registrationName) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n    case \"onMouseEnter\":\n      (props = !props.disabled) ||\n        ((inst = inst.type),\n        (props = !(\n          \"button\" === inst ||\n          \"input\" === inst ||\n          \"select\" === inst ||\n          \"textarea\" === inst\n        )));\n      inst = !props;\n      break a;\n    default:\n      inst = !1;\n  }\n  if (inst) return null;\n  if (stateNode && \"function\" !== typeof stateNode)\n    throw Error(\n      formatProdErrorMessage(231, registrationName, typeof stateNode)\n    );\n  return stateNode;\n}\nvar passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n  try {\n    var options = {};\n    Object.defineProperty(options, \"passive\", {\n      get: function () {\n        passiveBrowserEventsSupported = !0;\n      }\n    });\n    window.addEventListener(\"test\", options, options);\n    window.removeEventListener(\"test\", options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = !1;\n  }\nvar root = null,\n  startText = null,\n  fallbackText = null;\nfunction getData() {\n  if (fallbackText) return fallbackText;\n  var start,\n    startValue = startText,\n    startLength = startValue.length,\n    end,\n    endValue = \"value\" in root ? root.value : root.textContent,\n    endLength = endValue.length;\n  for (\n    start = 0;\n    start < startLength && startValue[start] === endValue[start];\n    start++\n  );\n  var minEnd = startLength - start;\n  for (\n    end = 1;\n    end <= minEnd &&\n    startValue[startLength - end] === endValue[endLength - end];\n    end++\n  );\n  return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n  var keyCode = nativeEvent.keyCode;\n  \"charCode\" in nativeEvent\n    ? ((nativeEvent = nativeEvent.charCode),\n      0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n    : (nativeEvent = keyCode);\n  10 === nativeEvent && (nativeEvent = 13);\n  return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction createSyntheticEvent(Interface) {\n  function SyntheticBaseEvent(\n    reactName,\n    reactEventType,\n    targetInst,\n    nativeEvent,\n    nativeEventTarget\n  ) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n    for (var propName in Interface)\n      Interface.hasOwnProperty(propName) &&\n        ((reactName = Interface[propName]),\n        (this[propName] = reactName\n          ? reactName(nativeEvent)\n          : nativeEvent[propName]));\n    this.isDefaultPrevented = (\n      null != nativeEvent.defaultPrevented\n        ? nativeEvent.defaultPrevented\n        : !1 === nativeEvent.returnValue\n    )\n      ? functionThatReturnsTrue\n      : functionThatReturnsFalse;\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = !0;\n      var event = this.nativeEvent;\n      event &&\n        (event.preventDefault\n          ? event.preventDefault()\n          : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n        (this.isDefaultPrevented = functionThatReturnsTrue));\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n      event &&\n        (event.stopPropagation\n          ? event.stopPropagation()\n          : \"unknown\" !== typeof event.cancelBubble &&\n            (event.cancelBubble = !0),\n        (this.isPropagationStopped = functionThatReturnsTrue));\n    },\n    persist: function () {},\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\nvar EventInterface = {\n    eventPhase: 0,\n    bubbles: 0,\n    cancelable: 0,\n    timeStamp: function (event) {\n      return event.timeStamp || Date.now();\n    },\n    defaultPrevented: 0,\n    isTrusted: 0\n  },\n  SyntheticEvent = createSyntheticEvent(EventInterface),\n  UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n  SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n  lastMovementX,\n  lastMovementY,\n  lastMouseEvent,\n  MouseEventInterface = assign({}, UIEventInterface, {\n    screenX: 0,\n    screenY: 0,\n    clientX: 0,\n    clientY: 0,\n    pageX: 0,\n    pageY: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    getModifierState: getEventModifierState,\n    button: 0,\n    buttons: 0,\n    relatedTarget: function (event) {\n      return void 0 === event.relatedTarget\n        ? event.fromElement === event.srcElement\n          ? event.toElement\n          : event.fromElement\n        : event.relatedTarget;\n    },\n    movementX: function (event) {\n      if (\"movementX\" in event) return event.movementX;\n      event !== lastMouseEvent &&\n        (lastMouseEvent && \"mousemove\" === event.type\n          ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n            (lastMovementY = event.screenY - lastMouseEvent.screenY))\n          : (lastMovementY = lastMovementX = 0),\n        (lastMouseEvent = event));\n      return lastMovementX;\n    },\n    movementY: function (event) {\n      return \"movementY\" in event ? event.movementY : lastMovementY;\n    }\n  }),\n  SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n  DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n  SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n  FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n  SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n  AnimationEventInterface = assign({}, EventInterface, {\n    animationName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n  ClipboardEventInterface = assign({}, EventInterface, {\n    clipboardData: function (event) {\n      return \"clipboardData\" in event\n        ? event.clipboardData\n        : window.clipboardData;\n    }\n  }),\n  SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n  CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n  SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n  normalizeKey = {\n    Esc: \"Escape\",\n    Spacebar: \" \",\n    Left: \"ArrowLeft\",\n    Up: \"ArrowUp\",\n    Right: \"ArrowRight\",\n    Down: \"ArrowDown\",\n    Del: \"Delete\",\n    Win: \"OS\",\n    Menu: \"ContextMenu\",\n    Apps: \"ContextMenu\",\n    Scroll: \"ScrollLock\",\n    MozPrintableKey: \"Unidentified\"\n  },\n  translateToKey = {\n    8: \"Backspace\",\n    9: \"Tab\",\n    12: \"Clear\",\n    13: \"Enter\",\n    16: \"Shift\",\n    17: \"Control\",\n    18: \"Alt\",\n    19: \"Pause\",\n    20: \"CapsLock\",\n    27: \"Escape\",\n    32: \" \",\n    33: \"PageUp\",\n    34: \"PageDown\",\n    35: \"End\",\n    36: \"Home\",\n    37: \"ArrowLeft\",\n    38: \"ArrowUp\",\n    39: \"ArrowRight\",\n    40: \"ArrowDown\",\n    45: \"Insert\",\n    46: \"Delete\",\n    112: \"F1\",\n    113: \"F2\",\n    114: \"F3\",\n    115: \"F4\",\n    116: \"F5\",\n    117: \"F6\",\n    118: \"F7\",\n    119: \"F8\",\n    120: \"F9\",\n    121: \"F10\",\n    122: \"F11\",\n    123: \"F12\",\n    144: \"NumLock\",\n    145: \"ScrollLock\",\n    224: \"Meta\"\n  },\n  modifierKeyToProp = {\n    Alt: \"altKey\",\n    Control: \"ctrlKey\",\n    Meta: \"metaKey\",\n    Shift: \"shiftKey\"\n  };\nfunction modifierStateGetter(keyArg) {\n  var nativeEvent = this.nativeEvent;\n  return nativeEvent.getModifierState\n    ? nativeEvent.getModifierState(keyArg)\n    : (keyArg = modifierKeyToProp[keyArg])\n      ? !!nativeEvent[keyArg]\n      : !1;\n}\nfunction getEventModifierState() {\n  return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n    key: function (nativeEvent) {\n      if (nativeEvent.key) {\n        var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n        if (\"Unidentified\" !== key) return key;\n      }\n      return \"keypress\" === nativeEvent.type\n        ? ((nativeEvent = getEventCharCode(nativeEvent)),\n          13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n        : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n          ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n          : \"\";\n    },\n    code: 0,\n    location: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    repeat: 0,\n    locale: 0,\n    getModifierState: getEventModifierState,\n    charCode: function (event) {\n      return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n    },\n    keyCode: function (event) {\n      return \"keydown\" === event.type || \"keyup\" === event.type\n        ? event.keyCode\n        : 0;\n    },\n    which: function (event) {\n      return \"keypress\" === event.type\n        ? getEventCharCode(event)\n        : \"keydown\" === event.type || \"keyup\" === event.type\n          ? event.keyCode\n          : 0;\n    }\n  }),\n  SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n  PointerEventInterface = assign({}, MouseEventInterface, {\n    pointerId: 0,\n    width: 0,\n    height: 0,\n    pressure: 0,\n    tangentialPressure: 0,\n    tiltX: 0,\n    tiltY: 0,\n    twist: 0,\n    pointerType: 0,\n    isPrimary: 0\n  }),\n  SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n  TouchEventInterface = assign({}, UIEventInterface, {\n    touches: 0,\n    targetTouches: 0,\n    changedTouches: 0,\n    altKey: 0,\n    metaKey: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    getModifierState: getEventModifierState\n  }),\n  SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n  TransitionEventInterface = assign({}, EventInterface, {\n    propertyName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n  WheelEventInterface = assign({}, MouseEventInterface, {\n    deltaX: function (event) {\n      return \"deltaX\" in event\n        ? event.deltaX\n        : \"wheelDeltaX\" in event\n          ? -event.wheelDeltaX\n          : 0;\n    },\n    deltaY: function (event) {\n      return \"deltaY\" in event\n        ? event.deltaY\n        : \"wheelDeltaY\" in event\n          ? -event.wheelDeltaY\n          : \"wheelDelta\" in event\n            ? -event.wheelDelta\n            : 0;\n    },\n    deltaZ: 0,\n    deltaMode: 0\n  }),\n  SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n  ToggleEventInterface = assign({}, EventInterface, {\n    newState: 0,\n    oldState: 0\n  }),\n  SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n  END_KEYCODES = [9, 13, 27, 32],\n  canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n  documentMode = null;\ncanUseDOM &&\n  \"documentMode\" in document &&\n  (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n  useFallbackCompositionData =\n    canUseDOM &&\n    (!canUseCompositionEvent ||\n      (documentMode && 8 < documentMode && 11 >= documentMode)),\n  SPACEBAR_CHAR = String.fromCharCode(32),\n  hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"keyup\":\n      return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n    case \"keydown\":\n      return 229 !== nativeEvent.keyCode;\n    case \"keypress\":\n    case \"mousedown\":\n    case \"focusout\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n  nativeEvent = nativeEvent.detail;\n  return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n    ? nativeEvent.data\n    : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"compositionend\":\n      return getDataFromCustomEvent(nativeEvent);\n    case \"keypress\":\n      if (32 !== nativeEvent.which) return null;\n      hasSpaceKeypress = !0;\n      return SPACEBAR_CHAR;\n    case \"textInput\":\n      return (\n        (domEventName = nativeEvent.data),\n        domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n      );\n    default:\n      return null;\n  }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  if (isComposing)\n    return \"compositionend\" === domEventName ||\n      (!canUseCompositionEvent &&\n        isFallbackCompositionEnd(domEventName, nativeEvent))\n      ? ((domEventName = getData()),\n        (fallbackText = startText = root = null),\n        (isComposing = !1),\n        domEventName)\n      : null;\n  switch (domEventName) {\n    case \"paste\":\n      return null;\n    case \"keypress\":\n      if (\n        !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n        (nativeEvent.ctrlKey && nativeEvent.altKey)\n      ) {\n        if (nativeEvent.char && 1 < nativeEvent.char.length)\n          return nativeEvent.char;\n        if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n      }\n      return null;\n    case \"compositionend\":\n      return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n        ? null\n        : nativeEvent.data;\n    default:\n      return null;\n  }\n}\nvar supportedInputTypes = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return \"input\" === nodeName\n    ? !!supportedInputTypes[elem.type]\n    : \"textarea\" === nodeName\n      ? !0\n      : !1;\n}\nfunction createAndAccumulateChangeEvent(\n  dispatchQueue,\n  inst,\n  nativeEvent,\n  target\n) {\n  restoreTarget\n    ? restoreQueue\n      ? restoreQueue.push(target)\n      : (restoreQueue = [target])\n    : (restoreTarget = target);\n  inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n  0 < inst.length &&\n    ((nativeEvent = new SyntheticEvent(\n      \"onChange\",\n      \"change\",\n      null,\n      nativeEvent,\n      target\n    )),\n    dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n  activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n  if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n  var JSCompiler_inline_result$jscomp$283;\n  if (canUseDOM) {\n    var isSupported$jscomp$inline_418 = \"oninput\" in document;\n    if (!isSupported$jscomp$inline_418) {\n      var element$jscomp$inline_419 = document.createElement(\"div\");\n      element$jscomp$inline_419.setAttribute(\"oninput\", \"return;\");\n      isSupported$jscomp$inline_418 =\n        \"function\" === typeof element$jscomp$inline_419.oninput;\n    }\n    JSCompiler_inline_result$jscomp$283 = isSupported$jscomp$inline_418;\n  } else JSCompiler_inline_result$jscomp$283 = !1;\n  isInputEventSupported =\n    JSCompiler_inline_result$jscomp$283 &&\n    (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n  activeElement$1 &&\n    (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n    (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n  if (\n    \"value\" === nativeEvent.propertyName &&\n    getInstIfValueChanged(activeElementInst$1)\n  ) {\n    var dispatchQueue = [];\n    createAndAccumulateChangeEvent(\n      dispatchQueue,\n      activeElementInst$1,\n      nativeEvent,\n      getEventTarget(nativeEvent)\n    );\n    batchedUpdates$1(runEventInBatch, dispatchQueue);\n  }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  \"focusin\" === domEventName\n    ? (stopWatchingForValueChange(),\n      (activeElement$1 = target),\n      (activeElementInst$1 = targetInst),\n      activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n    : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n  if (\n    \"selectionchange\" === domEventName ||\n    \"keyup\" === domEventName ||\n    \"keydown\" === domEventName\n  )\n    return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (\"input\" === domEventName || \"change\" === domEventName)\n    return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++) {\n    var currentKey = keysA[keysB];\n    if (\n      !hasOwnProperty.call(objB, currentKey) ||\n      !objectIs(objA[currentKey], objB[currentKey])\n    )\n      return !1;\n  }\n  return !0;\n}\nfunction getLeafNode(node) {\n  for (; node && node.firstChild; ) node = node.firstChild;\n  return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  root = 0;\n  for (var nodeEnd; node; ) {\n    if (3 === node.nodeType) {\n      nodeEnd = root + node.textContent.length;\n      if (root <= offset && nodeEnd >= offset)\n        return { node: node, offset: offset - root };\n      root = nodeEnd;\n    }\n    a: {\n      for (; node; ) {\n        if (node.nextSibling) {\n          node = node.nextSibling;\n          break a;\n        }\n        node = node.parentNode;\n      }\n      node = void 0;\n    }\n    node = getLeafNode(node);\n  }\n}\nfunction containsNode(outerNode, innerNode) {\n  return outerNode && innerNode\n    ? outerNode === innerNode\n      ? !0\n      : outerNode && 3 === outerNode.nodeType\n        ? !1\n        : innerNode && 3 === innerNode.nodeType\n          ? containsNode(outerNode, innerNode.parentNode)\n          : \"contains\" in outerNode\n            ? outerNode.contains(innerNode)\n            : outerNode.compareDocumentPosition\n              ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n              : !1\n    : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n  containerInfo =\n    null != containerInfo &&\n    null != containerInfo.ownerDocument &&\n    null != containerInfo.ownerDocument.defaultView\n      ? containerInfo.ownerDocument.defaultView\n      : window;\n  for (\n    var element = getActiveElement(containerInfo.document);\n    element instanceof containerInfo.HTMLIFrameElement;\n\n  ) {\n    try {\n      var JSCompiler_inline_result =\n        \"string\" === typeof element.contentWindow.location.href;\n    } catch (err) {\n      JSCompiler_inline_result = !1;\n    }\n    if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n    else break;\n    element = getActiveElement(containerInfo.document);\n  }\n  return element;\n}\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return (\n    nodeName &&\n    ((\"input\" === nodeName &&\n      (\"text\" === elem.type ||\n        \"search\" === elem.type ||\n        \"tel\" === elem.type ||\n        \"url\" === elem.type ||\n        \"password\" === elem.type)) ||\n      \"textarea\" === nodeName ||\n      \"true\" === elem.contentEditable)\n  );\n}\nfunction restoreSelection(priorSelectionInformation, containerInfo) {\n  var curFocusedElem = getActiveElementDeep(containerInfo);\n  containerInfo = priorSelectionInformation.focusedElem;\n  var priorSelectionRange = priorSelectionInformation.selectionRange;\n  if (\n    curFocusedElem !== containerInfo &&\n    containerInfo &&\n    containerInfo.ownerDocument &&\n    containsNode(containerInfo.ownerDocument.documentElement, containerInfo)\n  ) {\n    if (null !== priorSelectionRange && hasSelectionCapabilities(containerInfo))\n      if (\n        ((priorSelectionInformation = priorSelectionRange.start),\n        (curFocusedElem = priorSelectionRange.end),\n        void 0 === curFocusedElem &&\n          (curFocusedElem = priorSelectionInformation),\n        \"selectionStart\" in containerInfo)\n      )\n        (containerInfo.selectionStart = priorSelectionInformation),\n          (containerInfo.selectionEnd = Math.min(\n            curFocusedElem,\n            containerInfo.value.length\n          ));\n      else if (\n        ((curFocusedElem =\n          ((priorSelectionInformation =\n            containerInfo.ownerDocument || document) &&\n            priorSelectionInformation.defaultView) ||\n          window),\n        curFocusedElem.getSelection)\n      ) {\n        curFocusedElem = curFocusedElem.getSelection();\n        var length = containerInfo.textContent.length,\n          start = Math.min(priorSelectionRange.start, length);\n        priorSelectionRange =\n          void 0 === priorSelectionRange.end\n            ? start\n            : Math.min(priorSelectionRange.end, length);\n        !curFocusedElem.extend &&\n          start > priorSelectionRange &&\n          ((length = priorSelectionRange),\n          (priorSelectionRange = start),\n          (start = length));\n        length = getNodeForCharacterOffset(containerInfo, start);\n        var endMarker = getNodeForCharacterOffset(\n          containerInfo,\n          priorSelectionRange\n        );\n        length &&\n          endMarker &&\n          (1 !== curFocusedElem.rangeCount ||\n            curFocusedElem.anchorNode !== length.node ||\n            curFocusedElem.anchorOffset !== length.offset ||\n            curFocusedElem.focusNode !== endMarker.node ||\n            curFocusedElem.focusOffset !== endMarker.offset) &&\n          ((priorSelectionInformation =\n            priorSelectionInformation.createRange()),\n          priorSelectionInformation.setStart(length.node, length.offset),\n          curFocusedElem.removeAllRanges(),\n          start > priorSelectionRange\n            ? (curFocusedElem.addRange(priorSelectionInformation),\n              curFocusedElem.extend(endMarker.node, endMarker.offset))\n            : (priorSelectionInformation.setEnd(\n                endMarker.node,\n                endMarker.offset\n              ),\n              curFocusedElem.addRange(priorSelectionInformation)));\n      }\n    priorSelectionInformation = [];\n    for (\n      curFocusedElem = containerInfo;\n      (curFocusedElem = curFocusedElem.parentNode);\n\n    )\n      1 === curFocusedElem.nodeType &&\n        priorSelectionInformation.push({\n          element: curFocusedElem,\n          left: curFocusedElem.scrollLeft,\n          top: curFocusedElem.scrollTop\n        });\n    \"function\" === typeof containerInfo.focus && containerInfo.focus();\n    for (\n      containerInfo = 0;\n      containerInfo < priorSelectionInformation.length;\n      containerInfo++\n    )\n      (curFocusedElem = priorSelectionInformation[containerInfo]),\n        (curFocusedElem.element.scrollLeft = curFocusedElem.left),\n        (curFocusedElem.element.scrollTop = curFocusedElem.top);\n  }\n}\nvar skipSelectionChangeEvent =\n    canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n  activeElement = null,\n  activeElementInst = null,\n  lastSelection = null,\n  mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  var doc =\n    nativeEventTarget.window === nativeEventTarget\n      ? nativeEventTarget.document\n      : 9 === nativeEventTarget.nodeType\n        ? nativeEventTarget\n        : nativeEventTarget.ownerDocument;\n  mouseDown ||\n    null == activeElement ||\n    activeElement !== getActiveElement(doc) ||\n    ((doc = activeElement),\n    \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n      ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n      : ((doc = (\n          (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n          window\n        ).getSelection()),\n        (doc = {\n          anchorNode: doc.anchorNode,\n          anchorOffset: doc.anchorOffset,\n          focusNode: doc.focusNode,\n          focusOffset: doc.focusOffset\n        })),\n    (lastSelection && shallowEqual(lastSelection, doc)) ||\n      ((lastSelection = doc),\n      (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n      0 < doc.length &&\n        ((nativeEvent = new SyntheticEvent(\n          \"onSelect\",\n          \"select\",\n          null,\n          nativeEvent,\n          nativeEventTarget\n        )),\n        dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n        (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n  prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n  return prefixes;\n}\nvar vendorPrefixes = {\n    animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n    animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n    animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n    transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n    transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n    transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n    transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n  },\n  prefixedEventNames = {},\n  style = {};\ncanUseDOM &&\n  ((style = document.createElement(\"div\").style),\n  \"AnimationEvent\" in window ||\n    (delete vendorPrefixes.animationend.animation,\n    delete vendorPrefixes.animationiteration.animation,\n    delete vendorPrefixes.animationstart.animation),\n  \"TransitionEvent\" in window ||\n    delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n  if (!vendorPrefixes[eventName]) return eventName;\n  var prefixMap = vendorPrefixes[eventName],\n    styleProp;\n  for (styleProp in prefixMap)\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n      return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n  return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n  ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n  ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n  TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n  TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n  TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n  TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n  topLevelEventsToReactNames = new Map(),\n  simpleEventPluginEvents =\n    \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll scrollEnd toggle touchMove waiting wheel\".split(\n      \" \"\n    );\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  isHidden &&\n    null !== update &&\n    3 === sourceFiber.tag &&\n    ((parent = sourceFiber.stateNode),\n    (isHidden = 31 - clz32(lane)),\n    (parent = parent.hiddenUpdates),\n    (sourceFiber = parent[isHidden]),\n    null === sourceFiber\n      ? (parent[isHidden] = [update])\n      : sourceFiber.push(update),\n    (update.lane = lane | 536870912));\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(formatProdErrorMessage(185)))\n    );\n  for (var parent = sourceFiber.return; null !== parent; )\n    (sourceFiber = parent), (parent = sourceFiber.return);\n  return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {},\n  CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n  if (\"object\" === typeof value && null !== value) {\n    var existing = CapturedStacks.get(value);\n    if (void 0 !== existing) return existing;\n    source = {\n      value: value,\n      source: source,\n      stack: getStackByFiberInDevAndProd(source)\n    };\n    CapturedStacks.set(value, source);\n    return source;\n  }\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source)\n  };\n}\nvar forkStack = [],\n  forkStackIndex = 0,\n  treeForkProvider = null,\n  treeForkCount = 0,\n  idStack = [],\n  idStackIndex = 0,\n  treeContextProvider = null,\n  treeContextId = 1,\n  treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  workInProgress = treeContextOverflow;\n  var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n  baseIdWithLeadingBit &= ~(1 << baseLength);\n  index += 1;\n  var length = 32 - clz32(totalChildren) + baseLength;\n  if (30 < length) {\n    var numberOfOverflowBits = baseLength - (baseLength % 5);\n    length = (\n      baseIdWithLeadingBit &\n      ((1 << numberOfOverflowBits) - 1)\n    ).toString(32);\n    baseIdWithLeadingBit >>= numberOfOverflowBits;\n    baseLength -= numberOfOverflowBits;\n    treeContextId =\n      (1 << (32 - clz32(totalChildren) + baseLength)) |\n      (index << baseLength) |\n      baseIdWithLeadingBit;\n    treeContextOverflow = length + workInProgress;\n  } else\n    (treeContextId =\n      (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n      (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  null !== workInProgress.return &&\n    (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n  for (; workInProgress === treeForkProvider; )\n    (treeForkProvider = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null),\n      (treeForkCount = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null);\n  for (; workInProgress === treeContextProvider; )\n    (treeContextProvider = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextOverflow = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextId = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null);\n}\nvar hydrationParentFiber = null,\n  nextHydratableInstance = null,\n  isHydrating = !1,\n  hydrationErrors = null,\n  rootOrSingletonContext = !1,\n  HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n  var error = Error(formatProdErrorMessage(418, \"\"));\n  queueHydrationError(createCapturedValueAtFiber(error, fiber));\n  throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n  var instance = fiber.stateNode,\n    type = fiber.type,\n    props = fiber.memoizedProps;\n  instance[internalInstanceKey] = fiber;\n  instance[internalPropsKey] = props;\n  switch (type) {\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", instance);\n      listenToNonDelegatedEvent(\"close\", instance);\n      break;\n    case \"iframe\":\n    case \"object\":\n    case \"embed\":\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (type = 0; type < mediaEventTypes.length; type++)\n        listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n      break;\n    case \"source\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      break;\n    case \"img\":\n    case \"image\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", instance);\n      break;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      initInput(\n        instance,\n        props.value,\n        props.defaultValue,\n        props.checked,\n        props.defaultChecked,\n        props.type,\n        props.name,\n        !0\n      );\n      track(instance);\n      break;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      break;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", instance),\n        initTextarea(instance, props.value, props.defaultValue, props.children),\n        track(instance);\n  }\n  type = props.children;\n  (\"string\" !== typeof type &&\n    \"number\" !== typeof type &&\n    \"bigint\" !== typeof type) ||\n  instance.textContent === \"\" + type ||\n  !0 === props.suppressHydrationWarning ||\n  checkForUnmatchedText(instance.textContent, type)\n    ? (null != props.popover &&\n        (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n        listenToNonDelegatedEvent(\"toggle\", instance)),\n      null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n      null != props.onScrollEnd &&\n        listenToNonDelegatedEvent(\"scrollend\", instance),\n      null != props.onClick && (instance.onclick = noop$1),\n      (instance = !0))\n    : (instance = !1);\n  instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n    switch (hydrationParentFiber.tag) {\n      case 3:\n      case 27:\n        rootOrSingletonContext = !0;\n        return;\n      case 5:\n      case 13:\n        rootOrSingletonContext = !1;\n        return;\n      default:\n        hydrationParentFiber = hydrationParentFiber.return;\n    }\n}\nfunction popHydrationState(fiber) {\n  if (fiber !== hydrationParentFiber) return !1;\n  if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n  var shouldClear = !1,\n    JSCompiler_temp;\n  if ((JSCompiler_temp = 3 !== fiber.tag && 27 !== fiber.tag)) {\n    if ((JSCompiler_temp = 5 === fiber.tag))\n      (JSCompiler_temp = fiber.type),\n        (JSCompiler_temp =\n          !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n          shouldSetTextContent(fiber.type, fiber.memoizedProps));\n    JSCompiler_temp = !JSCompiler_temp;\n  }\n  JSCompiler_temp && (shouldClear = !0);\n  shouldClear && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n  popToNextHostParent(fiber);\n  if (13 === fiber.tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    a: {\n      fiber = fiber.nextSibling;\n      for (shouldClear = 0; fiber; ) {\n        if (8 === fiber.nodeType)\n          if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n            if (0 === shouldClear) {\n              nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n              break a;\n            }\n            shouldClear--;\n          } else\n            (\"$\" !== JSCompiler_temp &&\n              \"$!\" !== JSCompiler_temp &&\n              \"$?\" !== JSCompiler_temp) ||\n              shouldClear++;\n        fiber = fiber.nextSibling;\n      }\n      nextHydratableInstance = null;\n    }\n  } else\n    nextHydratableInstance = hydrationParentFiber\n      ? getNextHydratable(fiber.stateNode.nextSibling)\n      : null;\n  return !0;\n}\nfunction resetHydrationState() {\n  nextHydratableInstance = hydrationParentFiber = null;\n  isHydrating = !1;\n}\nfunction queueHydrationError(error) {\n  null === hydrationErrors\n    ? (hydrationErrors = [error])\n    : hydrationErrors.push(error);\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n  SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      thenableState = thenable.reason;\n      if (thenableState === SuspenseException)\n        throw Error(formatProdErrorMessage(483));\n      throw thenableState;\n    default:\n      if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(formatProdErrorMessage(482));\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          thenableState = thenable.reason;\n          if (thenableState === SuspenseException)\n            throw Error(formatProdErrorMessage(483));\n          throw thenableState;\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n  var thenable = suspendedThenable;\n  suspendedThenable = null;\n  return thenable;\n}\nvar thenableState$1 = null,\n  thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(formatProdErrorMessage(525));\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    formatProdErrorMessage(\n      31,\n      \"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber\n    )\n  );\n}\nfunction resolveLazy(lazyType) {\n  var init = lazyType._init;\n  return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n        : existingChildren.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 33554434), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 33554434;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 33554434);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return updateFragment(\n        returnFiber,\n        current,\n        element.props.children,\n        lanes,\n        element.key\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return createChild(returnFiber, newChild, lanes);\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return updateFromMap(\n            existingChildren,\n            returnFiber,\n            newIdx,\n            newChild,\n            lanes\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            null !== nextOldFiber.alternate &&\n            oldFiber.delete(\n              null === nextOldFiber.key ? newIdx : nextOldFiber.key\n            ),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren) throw Error(formatProdErrorMessage(151));\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildren.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildren.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildren.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (resultingFirstChild = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      !step.done;\n      newIdx++, step = newChildren.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            null !== step.alternate &&\n            oldFiber.delete(null === step.key ? newIdx : step.key),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (resultingFirstChild = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter$1 = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState$1 = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (x === SuspenseException) throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  if (22 === fiber.tag) {\n    if (\n      (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary)\n    ) {\n      var current = fiber.alternate;\n      null !== current &&\n        null !== current.memoizedState &&\n        (shellBoundary = fiber);\n    }\n  } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (\n        null !== state &&\n        ((state = state.dehydrated),\n        null === state || \"$?\" === state.data || \"$!\" === state.data)\n      )\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nvar AbortControllerLocal =\n    \"undefined\" !== typeof AbortController\n      ? AbortController\n      : function () {\n          var listeners = [],\n            signal = (this.signal = {\n              aborted: !1,\n              addEventListener: function (type, listener) {\n                listeners.push(listener);\n              }\n            });\n          this.abort = function () {\n            signal.aborted = !0;\n            listeners.forEach(function (listener) {\n              return listener();\n            });\n          };\n        },\n  scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n  NormalPriority = Scheduler.unstable_NormalPriority,\n  CacheContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Consumer: null,\n    Provider: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\n  };\nfunction createCache() {\n  return {\n    controller: new AbortControllerLocal(),\n    data: new Map(),\n    refCount: 0\n  };\n}\nfunction releaseCache(cache) {\n  cache.refCount--;\n  0 === cache.refCount &&\n    scheduleCallback$2(NormalPriority, function () {\n      cache.controller.abort();\n    });\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    null !== currentEntangledListeners\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber$1 = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  localIdCounter = 0,\n  thenableIndexCounter = 0,\n  thenableState = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber$1 = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter = 0;\n  thenableState = null;\n  if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber$1 = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n    thenableIndexCounter = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n    numberOfReRenders += 1;\n    workInProgressHook = currentHook = null;\n    if (null != workInProgress.updateQueue) {\n      var children = workInProgress.updateQueue;\n      children.lastEffect = null;\n      children.events = null;\n      children.stores = null;\n      null != children.memoCache && (children.memoCache.index = 0);\n    }\n    ReactSharedInternals.H = HooksDispatcherOnRerender;\n    children = Component(props, secondArg);\n  } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  return children;\n}\nfunction TransitionAwareHostComponent() {\n  var dispatcher = ReactSharedInternals.H,\n    maybeThenable = dispatcher.useState()[0];\n  maybeThenable =\n    \"function\" === typeof maybeThenable.then\n      ? useThenable(maybeThenable)\n      : maybeThenable;\n  dispatcher = dispatcher.useState()[0];\n  (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n    (currentlyRenderingFiber$1.flags |= 1024);\n  return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n  var didRenderIdHook = 0 !== localIdCounter;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter = localIdCounter = 0;\n  thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber$1.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber$1.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber$1.alternate)\n        throw Error(formatProdErrorMessage(467));\n      throw Error(formatProdErrorMessage(310));\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nvar createFunctionComponentUpdateQueue;\ncreateFunctionComponentUpdateQueue = function () {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n};\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  thenable = trackUsedThenable(thenableState, thenable, index);\n  index = currentlyRenderingFiber$1;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n  var memoCache = null,\n    updateQueue = currentlyRenderingFiber$1.updateQueue;\n  null !== updateQueue && (memoCache = updateQueue.memoCache);\n  if (null == memoCache) {\n    var current = currentlyRenderingFiber$1.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      null !== current &&\n        ((current = current.memoCache),\n        null != current &&\n          (memoCache = {\n            data: current.data.map(function (array) {\n              return array.slice();\n            }),\n            index: 0\n          })));\n  }\n  null == memoCache && (memoCache = { data: [], index: 0 });\n  null === updateQueue &&\n    ((updateQueue = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber$1.updateQueue = updateQueue));\n  updateQueue.memoCache = memoCache;\n  updateQueue = memoCache.data[memoCache.index];\n  if (void 0 === updateQueue)\n    for (\n      updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n      current < size;\n      current++\n    )\n      updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n  memoCache.index++;\n  return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n  var queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var baseQueue = hook.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  pendingQueue = hook.baseState;\n  if (null === baseQueue) hook.memoizedState = pendingQueue;\n  else {\n    current = baseQueue.next;\n    var newBaseQueueFirst = (baseFirst = null),\n      newBaseQueueLast = null,\n      update = current,\n      didReadFromEntangledAsyncAction$54 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$54 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$54 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber$1.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber$1.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$54 &&\n        ((reducer = currentEntangledActionThenable), null !== reducer))\n    )\n      throw reducer;\n    hook.memoizedState = pendingQueue;\n    hook.baseState = baseFirst;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = pendingQueue;\n  }\n  null === baseQueue && (queue.lanes = 0);\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber$1,\n    hook = updateWorkInProgressHook(),\n    isHydrating$jscomp$0 = isHydrating;\n  if (isHydrating$jscomp$0) {\n    if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n    getServerSnapshot = getServerSnapshot();\n  } else getServerSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    getServerSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n    subscribe\n  ]);\n  if (\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n  ) {\n    fiber.flags |= 2048;\n    pushEffect(\n      9,\n      updateStoreInstance.bind(\n        null,\n        fiber,\n        hook,\n        getServerSnapshot,\n        getSnapshot\n      ),\n      { destroy: void 0 },\n      null\n    );\n    if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n    isHydrating$jscomp$0 ||\n      0 !== (renderLanes & 60) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n  }\n  return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= 16384;\n  fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n  getSnapshot = currentlyRenderingFiber$1.updateQueue;\n  null === getSnapshot\n    ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber$1.updateQueue = getSnapshot),\n      (getSnapshot.stores = [fiber]))\n    : ((renderedSnapshot = getSnapshot.stores),\n      null === renderedSnapshot\n        ? (getSnapshot.stores = [fiber])\n        : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot;\n  checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n  return subscribe(function () {\n    checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n  });\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, 2);\n  null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n  var hook = mountWorkInProgressHook();\n  if (\"function\" === typeof initialState) {\n    var initialStateInitializer = initialState;\n    initialState = initialStateInitializer();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        initialStateInitializer();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n  }\n  hook.memoizedState = hook.baseState = initialState;\n  hook.queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n  hook.baseState = passthrough;\n  return updateReducerImpl(\n    hook,\n    currentHook,\n    \"function\" === typeof reducer ? reducer : basicStateReducer\n  );\n}\nfunction dispatchActionState(\n  fiber,\n  actionQueue,\n  setPendingState,\n  setState,\n  payload\n) {\n  if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      ReactSharedInternals.T = prevTransition;\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$60) {\n      onActionError(actionQueue, node, error$60);\n    }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n  null !== returnValue &&\n  \"object\" === typeof returnValue &&\n  \"function\" === typeof returnValue.then\n    ? returnValue.then(\n        function (nextState) {\n          onActionSuccess(actionQueue, node, nextState);\n        },\n        function (error) {\n          return onActionError(actionQueue, node, error);\n        }\n      )\n    : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n  actionNode.status = \"fulfilled\";\n  actionNode.value = nextState;\n  notifyActionListeners(actionNode);\n  actionQueue.state = nextState;\n  actionNode = actionQueue.pending;\n  null !== actionNode &&\n    ((nextState = actionNode.next),\n    nextState === actionNode\n      ? (actionQueue.pending = null)\n      : ((nextState = nextState.next),\n        (actionNode.next = nextState),\n        runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n  var last = actionQueue.pending;\n  actionQueue.pending = null;\n  if (null !== last) {\n    last = last.next;\n    do\n      (actionNode.status = \"rejected\"),\n        (actionNode.reason = error),\n        notifyActionListeners(actionNode),\n        (actionNode = actionNode.next);\n    while (actionNode !== last);\n  }\n  actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n  actionNode = actionNode.listeners;\n  for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n  return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n  if (isHydrating) {\n    var ssrFormState = workInProgressRoot.formState;\n    if (null !== ssrFormState) {\n      a: {\n        var JSCompiler_inline_result = currentlyRenderingFiber$1;\n        if (isHydrating) {\n          if (nextHydratableInstance) {\n            b: {\n              var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n              for (\n                var inRootOrSingleton = rootOrSingletonContext;\n                8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n              ) {\n                if (!inRootOrSingleton) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n                JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n                  JSCompiler_inline_result$jscomp$0.nextSibling\n                );\n                if (null === JSCompiler_inline_result$jscomp$0) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n              }\n              inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n              JSCompiler_inline_result$jscomp$0 =\n                \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n                  ? JSCompiler_inline_result$jscomp$0\n                  : null;\n            }\n            if (JSCompiler_inline_result$jscomp$0) {\n              nextHydratableInstance = getNextHydratable(\n                JSCompiler_inline_result$jscomp$0.nextSibling\n              );\n              JSCompiler_inline_result =\n                \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n              break a;\n            }\n          }\n          throwOnHydrationMismatch(JSCompiler_inline_result);\n        }\n        JSCompiler_inline_result = !1;\n      }\n      JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n    }\n  }\n  ssrFormState = mountWorkInProgressHook();\n  ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n  JSCompiler_inline_result = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  ssrFormState.queue = JSCompiler_inline_result;\n  ssrFormState = dispatchSetState.bind(\n    null,\n    currentlyRenderingFiber$1,\n    JSCompiler_inline_result\n  );\n  JSCompiler_inline_result.dispatch = ssrFormState;\n  JSCompiler_inline_result = mountStateImpl(!1);\n  inRootOrSingleton = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber$1,\n    !1,\n    JSCompiler_inline_result.queue\n  );\n  JSCompiler_inline_result = mountWorkInProgressHook();\n  JSCompiler_inline_result$jscomp$0 = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n  ssrFormState = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber$1,\n    JSCompiler_inline_result$jscomp$0,\n    inRootOrSingleton,\n    ssrFormState\n  );\n  JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n  JSCompiler_inline_result.memoizedState = action;\n  return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  currentStateHook =\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n      ? useThenable(currentStateHook)\n      : currentStateHook;\n  var actionQueueHook = updateWorkInProgressHook(),\n    actionQueue = actionQueueHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== actionQueueHook.memoizedState &&\n    ((currentlyRenderingFiber$1.flags |= 2048),\n    pushEffect(\n      9,\n      actionStateActionEffect.bind(null, actionQueue, action),\n      { destroy: void 0 },\n      null\n    ));\n  return [currentStateHook, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushEffect(tag, create, inst, deps) {\n  tag = { tag: tag, create: create, inst: inst, deps: deps, next: null };\n  create = currentlyRenderingFiber$1.updateQueue;\n  null === create &&\n    ((create = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber$1.updateQueue = create));\n  inst = create.lastEffect;\n  null === inst\n    ? (create.lastEffect = tag.next = tag)\n    : ((deps = inst.next),\n      (inst.next = tag),\n      (tag.next = deps),\n      (create.lastEffect = tag));\n  return tag;\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(\n    1 | hookFlags,\n    create,\n    { destroy: void 0 },\n    void 0 === deps ? null : deps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushEffect(hookFlags, create, inst, deps))\n    : ((currentlyRenderingFiber$1.flags |= fiberFlags),\n      (hook.memoizedState = pushEffect(1 | hookFlags, create, inst, deps)));\n}\nfunction mountEffect(create, deps) {\n  mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n  updateEffectImpl(2048, 8, create, deps);\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber$1.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (0 === (renderLanes & 42))\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber$1.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  ReactDOMSharedInternals.p =\n    0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n  try {\n    var returnValue = callback(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    if (\n      null !== returnValue &&\n      \"object\" === typeof returnValue &&\n      \"function\" === typeof returnValue.then\n    ) {\n      var thenableForFinishedState = chainThenableValue(\n        returnValue,\n        finishedState\n      );\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        thenableForFinishedState,\n        requestUpdateLane(fiber)\n      );\n    } else\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        finishedState,\n        requestUpdateLane(fiber)\n      );\n  } catch (error) {\n    dispatchSetStateInternal(\n      fiber,\n      queue,\n      { then: function () {}, status: \"rejected\", reason: error },\n      requestUpdateLane()\n    );\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n  var queue = ensureFormComponentIsStateful(formFiber).queue;\n  startTransition(\n    formFiber,\n    queue,\n    pendingState,\n    sharedNotPendingObject,\n    null === action\n      ? noop$2\n      : function () {\n          requestFormReset$1(formFiber);\n          return action(formData);\n        }\n  );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n  var existingStateHook = formFiber.memoizedState;\n  if (null !== existingStateHook) return existingStateHook;\n  existingStateHook = {\n    memoizedState: sharedNotPendingObject,\n    baseState: sharedNotPendingObject,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: sharedNotPendingObject\n    },\n    next: null\n  };\n  var initialResetState = {};\n  existingStateHook.next = {\n    memoizedState: initialResetState,\n    baseState: initialResetState,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: initialResetState\n    },\n    next: null\n  };\n  formFiber.memoizedState = existingStateHook;\n  formFiber = formFiber.alternate;\n  null !== formFiber && (formFiber.memoizedState = existingStateHook);\n  return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n  var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n  dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n  return readContext(HostTransitionContext);\n}\nfunction updateId() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n  for (var provider = fiber.return; null !== provider; ) {\n    switch (provider.tag) {\n      case 24:\n      case 3:\n        var lane = requestUpdateLane();\n        fiber = createUpdate(lane);\n        var root$63 = enqueueUpdate(provider, fiber, lane);\n        null !== root$63 &&\n          (scheduleUpdateOnFiber(root$63, provider, lane),\n          entangleTransitions(root$63, provider, lane));\n        provider = { cache: createCache() };\n        fiber.payload = provider;\n        return;\n    }\n    provider = provider.return;\n  }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  action = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber$1 ||\n    (null !== alternate && alternate === currentlyRenderingFiber$1)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194176)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n  readContext: readContext,\n  use: use,\n  useCallback: throwInvalidHookError,\n  useContext: throwInvalidHookError,\n  useEffect: throwInvalidHookError,\n  useImperativeHandle: throwInvalidHookError,\n  useLayoutEffect: throwInvalidHookError,\n  useInsertionEffect: throwInvalidHookError,\n  useMemo: throwInvalidHookError,\n  useReducer: throwInvalidHookError,\n  useRef: throwInvalidHookError,\n  useState: throwInvalidHookError,\n  useDebugValue: throwInvalidHookError,\n  useDeferredValue: throwInvalidHookError,\n  useTransition: throwInvalidHookError,\n  useSyncExternalStore: throwInvalidHookError,\n  useId: throwInvalidHookError\n};\nContextOnlyDispatcher.useCacheRefresh = throwInvalidHookError;\nContextOnlyDispatcher.useMemoCache = throwInvalidHookError;\nContextOnlyDispatcher.useHostTransitionStatus = throwInvalidHookError;\nContextOnlyDispatcher.useFormState = throwInvalidHookError;\nContextOnlyDispatcher.useActionState = throwInvalidHookError;\nContextOnlyDispatcher.useOptimistic = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n  readContext: readContext,\n  use: use,\n  useCallback: function (callback, deps) {\n    mountWorkInProgressHook().memoizedState = [\n      callback,\n      void 0 === deps ? null : deps\n    ];\n    return callback;\n  },\n  useContext: readContext,\n  useEffect: mountEffect,\n  useImperativeHandle: function (ref, create, deps) {\n    deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n    mountEffectImpl(\n      4194308,\n      4,\n      imperativeHandleEffect.bind(null, create, ref),\n      deps\n    );\n  },\n  useLayoutEffect: function (create, deps) {\n    return mountEffectImpl(4194308, 4, create, deps);\n  },\n  useInsertionEffect: function (create, deps) {\n    mountEffectImpl(4, 2, create, deps);\n  },\n  useMemo: function (nextCreate, deps) {\n    var hook = mountWorkInProgressHook();\n    deps = void 0 === deps ? null : deps;\n    var nextValue = nextCreate();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        nextCreate();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n    hook.memoizedState = [nextValue, deps];\n    return nextValue;\n  },\n  useReducer: function (reducer, initialArg, init) {\n    var hook = mountWorkInProgressHook();\n    if (void 0 !== init) {\n      var initialState = init(initialArg);\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          init(initialArg);\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n    } else initialState = initialArg;\n    hook.memoizedState = hook.baseState = initialState;\n    reducer = {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: reducer,\n      lastRenderedState: initialState\n    };\n    hook.queue = reducer;\n    reducer = reducer.dispatch = dispatchReducerAction.bind(\n      null,\n      currentlyRenderingFiber$1,\n      reducer\n    );\n    return [hook.memoizedState, reducer];\n  },\n  useRef: function (initialValue) {\n    var hook = mountWorkInProgressHook();\n    initialValue = { current: initialValue };\n    return (hook.memoizedState = initialValue);\n  },\n  useState: function (initialState) {\n    initialState = mountStateImpl(initialState);\n    var queue = initialState.queue,\n      dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n    queue.dispatch = dispatch;\n    return [initialState.memoizedState, dispatch];\n  },\n  useDebugValue: mountDebugValue,\n  useDeferredValue: function (value, initialValue) {\n    var hook = mountWorkInProgressHook();\n    return mountDeferredValueImpl(hook, value, initialValue);\n  },\n  useTransition: function () {\n    var stateHook = mountStateImpl(!1);\n    stateHook = startTransition.bind(\n      null,\n      currentlyRenderingFiber$1,\n      stateHook.queue,\n      !0,\n      !1\n    );\n    mountWorkInProgressHook().memoizedState = stateHook;\n    return [!1, stateHook];\n  },\n  useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n    var fiber = currentlyRenderingFiber$1,\n      hook = mountWorkInProgressHook();\n    if (isHydrating) {\n      if (void 0 === getServerSnapshot)\n        throw Error(formatProdErrorMessage(407));\n      getServerSnapshot = getServerSnapshot();\n    } else {\n      getServerSnapshot = getSnapshot();\n      if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n      0 !== (workInProgressRootRenderLanes & 60) ||\n        pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n    }\n    hook.memoizedState = getServerSnapshot;\n    var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n    hook.queue = inst;\n    mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n      subscribe\n    ]);\n    fiber.flags |= 2048;\n    pushEffect(\n      9,\n      updateStoreInstance.bind(\n        null,\n        fiber,\n        inst,\n        getServerSnapshot,\n        getSnapshot\n      ),\n      { destroy: void 0 },\n      null\n    );\n    return getServerSnapshot;\n  },\n  useId: function () {\n    var hook = mountWorkInProgressHook(),\n      identifierPrefix = workInProgressRoot.identifierPrefix;\n    if (isHydrating) {\n      var JSCompiler_inline_result = treeContextOverflow;\n      var idWithLeadingBit = treeContextId;\n      JSCompiler_inline_result =\n        (\n          idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n        ).toString(32) + JSCompiler_inline_result;\n      identifierPrefix =\n        \":\" + identifierPrefix + \"R\" + JSCompiler_inline_result;\n      JSCompiler_inline_result = localIdCounter++;\n      0 < JSCompiler_inline_result &&\n        (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n      identifierPrefix += \":\";\n    } else\n      (JSCompiler_inline_result = globalClientIdCounter++),\n        (identifierPrefix =\n          \":\" +\n          identifierPrefix +\n          \"r\" +\n          JSCompiler_inline_result.toString(32) +\n          \":\");\n    return (hook.memoizedState = identifierPrefix);\n  },\n  useCacheRefresh: function () {\n    return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n      null,\n      currentlyRenderingFiber$1\n    ));\n  }\n};\nHooksDispatcherOnMount.useMemoCache = useMemoCache;\nHooksDispatcherOnMount.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnMount.useFormState = mountActionState;\nHooksDispatcherOnMount.useActionState = mountActionState;\nHooksDispatcherOnMount.useOptimistic = function (passthrough) {\n  var hook = mountWorkInProgressHook();\n  hook.memoizedState = hook.baseState = passthrough;\n  var queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: null,\n    lastRenderedState: null\n  };\n  hook.queue = queue;\n  hook = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber$1,\n    !0,\n    queue\n  );\n  queue.dispatch = hook;\n  return [passthrough, hook];\n};\nvar HooksDispatcherOnUpdate = {\n  readContext: readContext,\n  use: use,\n  useCallback: updateCallback,\n  useContext: readContext,\n  useEffect: updateEffect,\n  useImperativeHandle: updateImperativeHandle,\n  useInsertionEffect: updateInsertionEffect,\n  useLayoutEffect: updateLayoutEffect,\n  useMemo: updateMemo,\n  useReducer: updateReducer,\n  useRef: updateRef,\n  useState: function () {\n    return updateReducer(basicStateReducer);\n  },\n  useDebugValue: mountDebugValue,\n  useDeferredValue: function (value, initialValue) {\n    var hook = updateWorkInProgressHook();\n    return updateDeferredValueImpl(\n      hook,\n      currentHook.memoizedState,\n      value,\n      initialValue\n    );\n  },\n  useTransition: function () {\n    var booleanOrThenable = updateReducer(basicStateReducer)[0],\n      start = updateWorkInProgressHook().memoizedState;\n    return [\n      \"boolean\" === typeof booleanOrThenable\n        ? booleanOrThenable\n        : useThenable(booleanOrThenable),\n      start\n    ];\n  },\n  useSyncExternalStore: updateSyncExternalStore,\n  useId: updateId\n};\nHooksDispatcherOnUpdate.useCacheRefresh = updateRefresh;\nHooksDispatcherOnUpdate.useMemoCache = useMemoCache;\nHooksDispatcherOnUpdate.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnUpdate.useFormState = updateActionState;\nHooksDispatcherOnUpdate.useActionState = updateActionState;\nHooksDispatcherOnUpdate.useOptimistic = function (passthrough, reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n};\nvar HooksDispatcherOnRerender = {\n  readContext: readContext,\n  use: use,\n  useCallback: updateCallback,\n  useContext: readContext,\n  useEffect: updateEffect,\n  useImperativeHandle: updateImperativeHandle,\n  useInsertionEffect: updateInsertionEffect,\n  useLayoutEffect: updateLayoutEffect,\n  useMemo: updateMemo,\n  useReducer: rerenderReducer,\n  useRef: updateRef,\n  useState: function () {\n    return rerenderReducer(basicStateReducer);\n  },\n  useDebugValue: mountDebugValue,\n  useDeferredValue: function (value, initialValue) {\n    var hook = updateWorkInProgressHook();\n    return null === currentHook\n      ? mountDeferredValueImpl(hook, value, initialValue)\n      : updateDeferredValueImpl(\n          hook,\n          currentHook.memoizedState,\n          value,\n          initialValue\n        );\n  },\n  useTransition: function () {\n    var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n      start = updateWorkInProgressHook().memoizedState;\n    return [\n      \"boolean\" === typeof booleanOrThenable\n        ? booleanOrThenable\n        : useThenable(booleanOrThenable),\n      start\n    ];\n  },\n  useSyncExternalStore: updateSyncExternalStore,\n  useId: updateId\n};\nHooksDispatcherOnRerender.useCacheRefresh = updateRefresh;\nHooksDispatcherOnRerender.useMemoCache = useMemoCache;\nHooksDispatcherOnRerender.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnRerender.useFormState = rerenderActionState;\nHooksDispatcherOnRerender.useActionState = rerenderActionState;\nHooksDispatcherOnRerender.useOptimistic = function (passthrough, reducer) {\n  var hook = updateWorkInProgressHook();\n  if (null !== currentHook)\n    return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n  hook.baseState = passthrough;\n  return [passthrough, hook.queue.dispatch];\n};\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  isMounted: function (component) {\n    return (component = component._reactInternals)\n      ? getNearestMountedFiber(component) === component\n      : !1;\n  },\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    callback = enqueueUpdate(inst, update, lane);\n    null !== callback &&\n      (scheduleUpdateOnFiber(callback, inst, lane),\n      entangleTransitions(callback, inst, lane));\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n      ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n      : !0;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n  var newProps = baseProps;\n  if (\"ref\" in baseProps) {\n    newProps = {};\n    for (var propName in baseProps)\n      \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n  }\n  if ((Component = Component.defaultProps)) {\n    newProps === baseProps && (newProps = assign({}, newProps));\n    for (var propName$67 in Component)\n      void 0 === newProps[propName$67] &&\n        (newProps[propName$67] = Component[propName$67]);\n  }\n  return newProps;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction defaultOnUncaughtError(error) {\n  reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n  console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n  reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n  try {\n    var onUncaughtError = root.onUncaughtError;\n    onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n  } catch (e$68) {\n    setTimeout(function () {\n      throw e$68;\n    });\n  }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n  try {\n    var onCaughtError = root.onCaughtError;\n    onCaughtError(errorInfo.value, {\n      componentStack: errorInfo.stack,\n      errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n    });\n  } catch (e$69) {\n    setTimeout(function () {\n      throw e$69;\n    });\n  }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  lane.callback = function () {\n    logUncaughtError(root, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    update.payload = function () {\n      return getDerivedStateFromError(error);\n    };\n    update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n}\nfunction throwException(\n  root,\n  returnFiber,\n  sourceFiber,\n  value,\n  rootRenderLanes\n) {\n  sourceFiber.flags |= 32768;\n  if (\n    null !== value &&\n    \"object\" === typeof value &&\n    \"function\" === typeof value.then\n  ) {\n    returnFiber = sourceFiber.alternate;\n    null !== returnFiber &&\n      propagateParentContextChanges(\n        returnFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    sourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== sourceFiber) {\n      switch (sourceFiber.tag) {\n        case 13:\n          return (\n            null === shellBoundary\n              ? renderDidSuspendDelayIfPossible()\n              : null === sourceFiber.alternate &&\n                0 === workInProgressRootExitStatus &&\n                (workInProgressRootExitStatus = 3),\n            (sourceFiber.flags &= -257),\n            (sourceFiber.flags |= 65536),\n            (sourceFiber.lanes = rootRenderLanes),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? (sourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          return (\n            (sourceFiber.flags |= 65536),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? ((returnFiber = {\n                      transitions: null,\n                      markerInstances: null,\n                      retryQueue: new Set([value])\n                    }),\n                    (sourceFiber.updateQueue = returnFiber))\n                  : ((sourceFiber = returnFiber.retryQueue),\n                    null === sourceFiber\n                      ? (returnFiber.retryQueue = new Set([value]))\n                      : sourceFiber.add(value)),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n      }\n      throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n    }\n    attachPingListener(root, value, rootRenderLanes);\n    renderDidSuspendDelayIfPossible();\n    return !1;\n  }\n  if (isHydrating)\n    return (\n      (returnFiber = suspenseHandlerStackCursor.current),\n      null !== returnFiber\n        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n          (returnFiber.flags |= 65536),\n          (returnFiber.lanes = rootRenderLanes),\n          value !== HydrationMismatchException &&\n            ((root = Error(formatProdErrorMessage(422), { cause: value })),\n            queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n        : (value !== HydrationMismatchException &&\n            ((returnFiber = Error(formatProdErrorMessage(423), {\n              cause: value\n            })),\n            queueHydrationError(\n              createCapturedValueAtFiber(returnFiber, sourceFiber)\n            )),\n          (root = root.current.alternate),\n          (root.flags |= 65536),\n          (rootRenderLanes &= -rootRenderLanes),\n          (root.lanes |= rootRenderLanes),\n          (value = createCapturedValueAtFiber(value, sourceFiber)),\n          (rootRenderLanes = createRootErrorUpdate(\n            root.stateNode,\n            value,\n            rootRenderLanes\n          )),\n          enqueueCapturedUpdate(root, rootRenderLanes),\n          4 !== workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 2)),\n      !1\n    );\n  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [wrapperError])\n    : workInProgressRootConcurrentErrors.push(wrapperError);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  sourceFiber = returnFiber;\n  do {\n    switch (sourceFiber.tag) {\n      case 3:\n        return (\n          (sourceFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (sourceFiber.lanes |= root),\n          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(sourceFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((returnFiber = sourceFiber.type),\n          (wrapperError = sourceFiber.stateNode),\n          0 === (sourceFiber.flags & 128) &&\n            (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n              (null !== wrapperError &&\n                \"function\" === typeof wrapperError.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n        )\n          return (\n            (sourceFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (sourceFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              sourceFiber,\n              value\n            ),\n            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n            !1\n          );\n    }\n    sourceFiber = sourceFiber.return;\n  } while (null !== sourceFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  if (\"ref\" in nextProps) {\n    var propsWithoutRef = {};\n    for (var key in nextProps)\n      \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n  } else propsWithoutRef = nextProps;\n  prepareToReadContext(workInProgress);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    propsWithoutRef,\n    ref,\n    renderLanes\n  );\n  key = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && key && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    nextIsDetached = 0 !== (workInProgress.stateNode._pendingVisibility & 2),\n    prevState = null !== current ? current.memoizedState : null;\n  markRef(current, workInProgress);\n  if (\"hidden\" === nextProps.mode || nextIsDetached) {\n    if (0 !== (workInProgress.flags & 128)) {\n      nextProps =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextChildren = workInProgress.child = current.child;\n        for (nextIsDetached = 0; null !== nextChildren; )\n          (nextIsDetached =\n            nextIsDetached | nextChildren.lanes | nextChildren.childLanes),\n            (nextChildren = nextChildren.sibling);\n        workInProgress.childLanes = nextIsDetached & ~nextProps;\n      } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        nextProps,\n        renderLanes\n      );\n    }\n    if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (workInProgress.lanes = workInProgress.childLanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack(workInProgress));\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  return null;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 2097664);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(formatProdErrorMessage(284));\n    if (null === current || current.ref !== ref)\n      workInProgress.flags |= 2097664;\n  }\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    void 0,\n    renderLanes\n  );\n  nextProps = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction replayFunctionComponent(\n  current,\n  workInProgress,\n  nextProps,\n  Component,\n  secondArg,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  workInProgress.updateQueue = null;\n  nextProps = renderWithHooksAgain(\n    workInProgress,\n    Component,\n    nextProps,\n    secondArg\n  );\n  finishRenderingHooks(current);\n  Component = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && Component && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  if (null === workInProgress.stateNode) {\n    var context = emptyContextObject,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (context = readContext(contextType));\n    context = new Component(nextProps, context);\n    workInProgress.memoizedState =\n      null !== context.state && void 0 !== context.state ? context.state : null;\n    context.updater = classComponentUpdater;\n    workInProgress.stateNode = context;\n    context._reactInternals = workInProgress;\n    context = workInProgress.stateNode;\n    context.props = nextProps;\n    context.state = workInProgress.memoizedState;\n    context.refs = {};\n    initializeUpdateQueue(workInProgress);\n    contextType = Component.contextType;\n    context.context =\n      \"object\" === typeof contextType && null !== contextType\n        ? readContext(contextType)\n        : emptyContextObject;\n    context.state = workInProgress.memoizedState;\n    contextType = Component.getDerivedStateFromProps;\n    \"function\" === typeof contextType &&\n      (applyDerivedStateFromProps(\n        workInProgress,\n        Component,\n        contextType,\n        nextProps\n      ),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof Component.getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate ||\n      (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n        \"function\" !== typeof context.componentWillMount) ||\n      ((contextType = context.state),\n      \"function\" === typeof context.componentWillMount &&\n        context.componentWillMount(),\n      \"function\" === typeof context.UNSAFE_componentWillMount &&\n        context.UNSAFE_componentWillMount(),\n      contextType !== context.state &&\n        classComponentUpdater.enqueueReplaceState(context, context.state, null),\n      processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n      suspendIfUpdateReadFromEntangledAsyncAction(),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof context.componentDidMount &&\n      (workInProgress.flags |= 4194308);\n    nextProps = !0;\n  } else if (null === current) {\n    context = workInProgress.stateNode;\n    var unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    context.props = oldProps;\n    var oldContext = context.context,\n      contextType$jscomp$0 = Component.contextType;\n    contextType = emptyContextObject;\n    \"object\" === typeof contextType$jscomp$0 &&\n      null !== contextType$jscomp$0 &&\n      (contextType = readContext(contextType$jscomp$0));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType$jscomp$0 =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType$jscomp$0 ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    oldContext = workInProgress.memoizedState;\n    unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (contextType$jscomp$0 ||\n              (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n                \"function\" !== typeof context.componentWillMount) ||\n              (\"function\" === typeof context.componentWillMount &&\n                context.componentWillMount(),\n              \"function\" === typeof context.UNSAFE_componentWillMount &&\n                context.UNSAFE_componentWillMount()),\n            \"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (context.props = nextProps),\n        (context.state = oldContext),\n        (context.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof context.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    context = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    contextType = workInProgress.memoizedProps;\n    contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n    context.props = contextType$jscomp$0;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = context.context;\n    oldContext = Component.contextType;\n    oldProps = emptyContextObject;\n    \"object\" === typeof oldContext &&\n      null !== oldContext &&\n      (oldProps = readContext(oldContext));\n    unresolvedOldProps = Component.getDerivedStateFromProps;\n    (oldContext =\n      \"function\" === typeof unresolvedOldProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    contextType !== getDerivedStateFromProps ||\n    oldState !== newState ||\n    hasForceUpdate ||\n    (null !== current &&\n      null !== current.dependencies &&\n      checkIfContextChanged(current.dependencies))\n      ? (\"function\" === typeof unresolvedOldProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            unresolvedOldProps,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType$jscomp$0 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType$jscomp$0,\n            nextProps,\n            oldState,\n            newState,\n            oldProps\n          ) ||\n          (null !== current &&\n            null !== current.dependencies &&\n            checkIfContextChanged(current.dependencies)))\n          ? (oldContext ||\n              (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof context.componentWillUpdate) ||\n              (\"function\" === typeof context.componentWillUpdate &&\n                context.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n                context.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof context.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof context.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof context.componentDidUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (context.props = nextProps),\n        (context.state = newState),\n        (context.context = oldProps),\n        (nextProps = contextType$jscomp$0))\n      : (\"function\" !== typeof context.componentDidUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  context = nextProps;\n  markRef(current, workInProgress);\n  nextProps = 0 !== (workInProgress.flags & 128);\n  context || nextProps\n    ? ((context = workInProgress.stateNode),\n      (Component =\n        nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n          ? null\n          : context.render()),\n      (workInProgress.flags |= 1),\n      null !== current && nextProps\n        ? ((workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            current.child,\n            null,\n            renderLanes\n          )),\n          (workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            null,\n            Component,\n            renderLanes\n          )))\n        : reconcileChildren(current, workInProgress, Component, renderLanes),\n      (workInProgress.memoizedState = context.state),\n      (current = workInProgress.child))\n    : (current = bailoutOnAlreadyFinishedWork(\n        current,\n        workInProgress,\n        renderLanes\n      ));\n  return current;\n}\nfunction mountHostRootWithoutHydrating(\n  current,\n  workInProgress,\n  nextChildren,\n  renderLanes\n) {\n  resetHydrationState();\n  workInProgress.flags |= 256;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nvar SUSPENDED_MARKER = { dehydrated: null, treeContext: null, retryLane: 0 };\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n  current,\n  primaryTreeDidDefer,\n  renderLanes\n) {\n  current = null !== current ? current.childLanes & ~renderLanes : 0;\n  primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n  return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    showFallback = !1,\n    didSuspend = 0 !== (workInProgress.flags & 128),\n    JSCompiler_temp;\n  (JSCompiler_temp = didSuspend) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseStackCursor.current & 2));\n  JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n  JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n  workInProgress.flags &= -33;\n  if (null === current) {\n    if (isHydrating) {\n      showFallback\n        ? pushPrimaryTreeSuspenseHandler(workInProgress)\n        : reuseSuspenseHandlerOnStack(workInProgress);\n      if (isHydrating) {\n        var nextInstance = nextHydratableInstance,\n          JSCompiler_temp$jscomp$0;\n        if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n          c: {\n            JSCompiler_temp$jscomp$0 = nextInstance;\n            for (\n              nextInstance = rootOrSingletonContext;\n              8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n            ) {\n              if (!nextInstance) {\n                nextInstance = null;\n                break c;\n              }\n              JSCompiler_temp$jscomp$0 = getNextHydratable(\n                JSCompiler_temp$jscomp$0.nextSibling\n              );\n              if (null === JSCompiler_temp$jscomp$0) {\n                nextInstance = null;\n                break c;\n              }\n            }\n            nextInstance = JSCompiler_temp$jscomp$0;\n          }\n          null !== nextInstance\n            ? ((workInProgress.memoizedState = {\n                dehydrated: nextInstance,\n                treeContext:\n                  null !== treeContextProvider\n                    ? { id: treeContextId, overflow: treeContextOverflow }\n                    : null,\n                retryLane: 536870912\n              }),\n              (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n                18,\n                null,\n                null,\n                0\n              )),\n              (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n              (JSCompiler_temp$jscomp$0.return = workInProgress),\n              (workInProgress.child = JSCompiler_temp$jscomp$0),\n              (hydrationParentFiber = workInProgress),\n              (nextHydratableInstance = null),\n              (JSCompiler_temp$jscomp$0 = !0))\n            : (JSCompiler_temp$jscomp$0 = !1);\n        }\n        JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n      }\n      nextInstance = workInProgress.memoizedState;\n      if (\n        null !== nextInstance &&\n        ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n      )\n        return (\n          \"$!\" === nextInstance.data\n            ? (workInProgress.lanes = 16)\n            : (workInProgress.lanes = 536870912),\n          null\n        );\n      popSuspenseHandler(workInProgress);\n    }\n    nextInstance = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (nextInstance = mountWorkInProgressOffscreenFiber(\n          { mode: \"hidden\", children: nextInstance },\n          showFallback\n        )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (nextInstance.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (nextInstance.sibling = nextProps),\n        (workInProgress.child = nextInstance),\n        (showFallback = workInProgress.child),\n        (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n        (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n  }\n  JSCompiler_temp$jscomp$0 = current.memoizedState;\n  if (\n    null !== JSCompiler_temp$jscomp$0 &&\n    ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n    null !== nextInstance)\n  ) {\n    if (didSuspend)\n      workInProgress.flags & 256\n        ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n          (workInProgress.flags &= -257),\n          (workInProgress = retrySuspenseComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          )))\n        : null !== workInProgress.memoizedState\n          ? (reuseSuspenseHandlerOnStack(workInProgress),\n            (workInProgress.child = current.child),\n            (workInProgress.flags |= 128),\n            (workInProgress = null))\n          : (reuseSuspenseHandlerOnStack(workInProgress),\n            (showFallback = nextProps.fallback),\n            (nextInstance = workInProgress.mode),\n            (nextProps = mountWorkInProgressOffscreenFiber(\n              { mode: \"visible\", children: nextProps.children },\n              nextInstance\n            )),\n            (showFallback = createFiberFromFragment(\n              showFallback,\n              nextInstance,\n              renderLanes,\n              null\n            )),\n            (showFallback.flags |= 2),\n            (nextProps.return = workInProgress),\n            (showFallback.return = workInProgress),\n            (nextProps.sibling = showFallback),\n            (workInProgress.child = nextProps),\n            reconcileChildFibers(\n              workInProgress,\n              current.child,\n              null,\n              renderLanes\n            ),\n            (nextProps = workInProgress.child),\n            (nextProps.memoizedState =\n              mountSuspenseOffscreenState(renderLanes)),\n            (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n              current,\n              JSCompiler_temp,\n              renderLanes\n            )),\n            (workInProgress.memoizedState = SUSPENDED_MARKER),\n            (workInProgress = showFallback));\n    else if (\n      (pushPrimaryTreeSuspenseHandler(workInProgress),\n      \"$!\" === nextInstance.data)\n    ) {\n      JSCompiler_temp =\n        nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n      if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n      JSCompiler_temp = digest;\n      nextProps = Error(formatProdErrorMessage(419));\n      nextProps.stack = \"\";\n      nextProps.digest = JSCompiler_temp;\n      queueHydrationError({ value: nextProps, source: null, stack: null });\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || JSCompiler_temp)\n    ) {\n      JSCompiler_temp = workInProgressRoot;\n      if (null !== JSCompiler_temp) {\n        nextProps = renderLanes & -renderLanes;\n        if (0 !== (nextProps & 42)) nextProps = 1;\n        else\n          switch (nextProps) {\n            case 2:\n              nextProps = 1;\n              break;\n            case 8:\n              nextProps = 4;\n              break;\n            case 32:\n              nextProps = 16;\n              break;\n            case 128:\n            case 256:\n            case 512:\n            case 1024:\n            case 2048:\n            case 4096:\n            case 8192:\n            case 16384:\n            case 32768:\n            case 65536:\n            case 131072:\n            case 262144:\n            case 524288:\n            case 1048576:\n            case 2097152:\n            case 4194304:\n            case 8388608:\n            case 16777216:\n            case 33554432:\n              nextProps = 64;\n              break;\n            case 268435456:\n              nextProps = 134217728;\n              break;\n            default:\n              nextProps = 0;\n          }\n        nextProps =\n          0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n            ? 0\n            : nextProps;\n        if (0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n          throw (\n            ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n            enqueueConcurrentRenderForLane(current, nextProps),\n            scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n            SelectiveHydrationException)\n          );\n      }\n      \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      \"$?\" === nextInstance.data\n        ? ((workInProgress.flags |= 128),\n          (workInProgress.child = current.child),\n          (workInProgress = retryDehydratedSuspenseBoundary.bind(\n            null,\n            current\n          )),\n          (nextInstance._reactRetry = workInProgress),\n          (workInProgress = null))\n        : ((current = JSCompiler_temp$jscomp$0.treeContext),\n          (nextHydratableInstance = getNextHydratable(\n            nextInstance.nextSibling\n          )),\n          (hydrationParentFiber = workInProgress),\n          (isHydrating = !0),\n          (hydrationErrors = null),\n          (rootOrSingletonContext = !1),\n          null !== current &&\n            ((idStack[idStackIndex++] = treeContextId),\n            (idStack[idStackIndex++] = treeContextOverflow),\n            (idStack[idStackIndex++] = treeContextProvider),\n            (treeContextId = current.id),\n            (treeContextOverflow = current.overflow),\n            (treeContextProvider = workInProgress)),\n          (workInProgress = mountSuspensePrimaryChildren(\n            workInProgress,\n            nextProps.children\n          )),\n          (workInProgress.flags |= 4096));\n    return workInProgress;\n  }\n  if (showFallback)\n    return (\n      reuseSuspenseHandlerOnStack(workInProgress),\n      (showFallback = nextProps.fallback),\n      (nextInstance = workInProgress.mode),\n      (JSCompiler_temp$jscomp$0 = current.child),\n      (digest = JSCompiler_temp$jscomp$0.sibling),\n      (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n        mode: \"hidden\",\n        children: nextProps.children\n      })),\n      (nextProps.subtreeFlags =\n        JSCompiler_temp$jscomp$0.subtreeFlags & 31457280),\n      null !== digest\n        ? (showFallback = createWorkInProgress(digest, showFallback))\n        : ((showFallback = createFiberFromFragment(\n            showFallback,\n            nextInstance,\n            renderLanes,\n            null\n          )),\n          (showFallback.flags |= 2)),\n      (showFallback.return = workInProgress),\n      (nextProps.return = workInProgress),\n      (nextProps.sibling = showFallback),\n      (workInProgress.child = nextProps),\n      (nextProps = showFallback),\n      (showFallback = workInProgress.child),\n      (nextInstance = current.child.memoizedState),\n      null === nextInstance\n        ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n        : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n          null !== JSCompiler_temp$jscomp$0\n            ? ((digest = CacheContext._currentValue),\n              (JSCompiler_temp$jscomp$0 =\n                JSCompiler_temp$jscomp$0.parent !== digest\n                  ? { parent: digest, pool: digest }\n                  : JSCompiler_temp$jscomp$0))\n            : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n          (nextInstance = {\n            baseLanes: nextInstance.baseLanes | renderLanes,\n            cachePool: JSCompiler_temp$jscomp$0\n          })),\n      (showFallback.memoizedState = nextInstance),\n      (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n        current,\n        JSCompiler_temp,\n        renderLanes\n      )),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      nextProps\n    );\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  renderLanes = current.child;\n  current = renderLanes.sibling;\n  renderLanes = createWorkInProgress(renderLanes, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  renderLanes.return = workInProgress;\n  renderLanes.sibling = null;\n  null !== current &&\n    ((JSCompiler_temp = workInProgress.deletions),\n    null === JSCompiler_temp\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : JSCompiler_temp.push(current));\n  workInProgress.child = renderLanes;\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  return createFiberFromOffscreen(offscreenProps, mode, 0, null);\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n  else {\n    if (null !== current && 0 !== (current.flags & 128))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (19 === current.tag)\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  switch (revealOrder) {\n    case \"forwards\":\n      renderLanes = workInProgress.child;\n      for (revealOrder = null; null !== renderLanes; )\n        (current = renderLanes.alternate),\n          null !== current &&\n            null === findFirstSuspended(current) &&\n            (revealOrder = renderLanes),\n          (renderLanes = renderLanes.sibling);\n      renderLanes = revealOrder;\n      null === renderLanes\n        ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n        : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        revealOrder,\n        renderLanes,\n        tailMode\n      );\n      break;\n    case \"backwards\":\n      renderLanes = null;\n      revealOrder = workInProgress.child;\n      for (workInProgress.child = null; null !== revealOrder; ) {\n        current = revealOrder.alternate;\n        if (null !== current && null === findFirstSuspended(current)) {\n          workInProgress.child = revealOrder;\n          break;\n        }\n        current = revealOrder.sibling;\n        revealOrder.sibling = renderLanes;\n        renderLanes = revealOrder;\n        revealOrder = current;\n      }\n      initSuspenseListRenderState(\n        workInProgress,\n        !0,\n        renderLanes,\n        null,\n        tailMode\n      );\n      break;\n    case \"together\":\n      initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n      break;\n    default:\n      workInProgress.memoizedState = null;\n  }\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 === (renderLanes & workInProgress.childLanes))\n    if (null !== current) {\n      if (\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        0 === (renderLanes & workInProgress.childLanes))\n      )\n        return null;\n    } else return null;\n  if (null !== current && workInProgress.child !== current.child)\n    throw Error(formatProdErrorMessage(153));\n  if (null !== workInProgress.child) {\n    current = workInProgress.child;\n    renderLanes = createWorkInProgress(current, current.pendingProps);\n    workInProgress.child = renderLanes;\n    for (renderLanes.return = workInProgress; null !== current.sibling; )\n      (current = current.sibling),\n        (renderLanes = renderLanes.sibling =\n          createWorkInProgress(current, current.pendingProps)),\n        (renderLanes.return = workInProgress);\n    renderLanes.sibling = null;\n  }\n  return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  if (0 !== (current.lanes & renderLanes)) return !0;\n  current = current.dependencies;\n  return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  switch (workInProgress.tag) {\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n      resetHydrationState();\n      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 13:\n      var state = workInProgress.memoizedState;\n      if (null !== state) {\n        if (null !== state.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        if (0 !== (renderLanes & workInProgress.child.childLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      var didSuspendBefore = 0 !== (current.flags & 128);\n      state = 0 !== (renderLanes & workInProgress.childLanes);\n      state ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      didSuspendBefore = workInProgress.memoizedState;\n      null !== didSuspendBefore &&\n        ((didSuspendBefore.rendering = null),\n        (didSuspendBefore.tail = null),\n        (didSuspendBefore.lastEffect = null));\n      push(suspenseStackCursor, suspenseStackCursor.current);\n      if (state) break;\n      else return null;\n    case 22:\n    case 23:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(current, workInProgress, renderLanes)\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else\n    (didReceiveUpdate = !1),\n      isHydrating &&\n        0 !== (workInProgress.flags & 1048576) &&\n        pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      a: {\n        current = workInProgress.pendingProps;\n        var lazyComponent = workInProgress.elementType,\n          init = lazyComponent._init;\n        lazyComponent = init(lazyComponent._payload);\n        workInProgress.type = lazyComponent;\n        if (\"function\" === typeof lazyComponent)\n          shouldConstruct(lazyComponent)\n            ? ((current = resolveClassComponentProps(lazyComponent, current)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== lazyComponent && null !== lazyComponent)\n            if (\n              ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n            ) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            } else if (init === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            }\n          workInProgress =\n            getComponentNameFromType(lazyComponent) || lazyComponent;\n          throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n        }\n      }\n      return workInProgress;\n    case 0:\n      return updateFunctionComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 1:\n      return (\n        (lazyComponent = workInProgress.type),\n        (init = resolveClassComponentProps(\n          lazyComponent,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          lazyComponent,\n          init,\n          renderLanes\n        )\n      );\n    case 3:\n      a: {\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        );\n        if (null === current) throw Error(formatProdErrorMessage(387));\n        var nextProps = workInProgress.pendingProps;\n        init = workInProgress.memoizedState;\n        lazyComponent = init.element;\n        cloneUpdateQueue(current, workInProgress);\n        processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n        var nextState = workInProgress.memoizedState;\n        nextProps = nextState.cache;\n        pushProvider(workInProgress, CacheContext, nextProps);\n        nextProps !== init.cache &&\n          propagateContextChanges(\n            workInProgress,\n            [CacheContext],\n            renderLanes,\n            !0\n          );\n        suspendIfUpdateReadFromEntangledAsyncAction();\n        nextProps = nextState.element;\n        if (init.isDehydrated)\n          if (\n            ((init = {\n              element: nextProps,\n              isDehydrated: !1,\n              cache: nextState.cache\n            }),\n            (workInProgress.updateQueue.baseState = init),\n            (workInProgress.memoizedState = init),\n            workInProgress.flags & 256)\n          ) {\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              nextProps,\n              renderLanes\n            );\n            break a;\n          } else if (nextProps !== lazyComponent) {\n            lazyComponent = createCapturedValueAtFiber(\n              Error(formatProdErrorMessage(424)),\n              workInProgress\n            );\n            queueHydrationError(lazyComponent);\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              nextProps,\n              renderLanes\n            );\n            break a;\n          } else\n            for (\n              nextHydratableInstance = getNextHydratable(\n                workInProgress.stateNode.containerInfo.firstChild\n              ),\n                hydrationParentFiber = workInProgress,\n                isHydrating = !0,\n                hydrationErrors = null,\n                rootOrSingletonContext = !0,\n                renderLanes = mountChildFibers(\n                  workInProgress,\n                  null,\n                  nextProps,\n                  renderLanes\n                ),\n                workInProgress.child = renderLanes;\n              renderLanes;\n\n            )\n              (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n                (renderLanes = renderLanes.sibling);\n        else {\n          resetHydrationState();\n          if (nextProps === lazyComponent) {\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            break a;\n          }\n          reconcileChildren(current, workInProgress, nextProps, renderLanes);\n        }\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 26:\n      return (\n        markRef(current, workInProgress),\n        null === current\n          ? (renderLanes = getResource(\n              workInProgress.type,\n              null,\n              workInProgress.pendingProps,\n              null\n            ))\n            ? (workInProgress.memoizedState = renderLanes)\n            : isHydrating ||\n              ((renderLanes = workInProgress.type),\n              (current = workInProgress.pendingProps),\n              (lazyComponent = getOwnerDocumentFromRootContainer(\n                rootInstanceStackCursor.current\n              ).createElement(renderLanes)),\n              (lazyComponent[internalInstanceKey] = workInProgress),\n              (lazyComponent[internalPropsKey] = current),\n              setInitialProperties(lazyComponent, renderLanes, current),\n              markNodeAsHoistable(lazyComponent),\n              (workInProgress.stateNode = lazyComponent))\n          : (workInProgress.memoizedState = getResource(\n              workInProgress.type,\n              current.memoizedProps,\n              workInProgress.pendingProps,\n              current.memoizedState\n            )),\n        null\n      );\n    case 27:\n      return (\n        pushHostContext(workInProgress),\n        null === current &&\n          isHydrating &&\n          ((lazyComponent = workInProgress.stateNode =\n            resolveSingletonInstance(\n              workInProgress.type,\n              workInProgress.pendingProps,\n              rootInstanceStackCursor.current\n            )),\n          (hydrationParentFiber = workInProgress),\n          (rootOrSingletonContext = !0),\n          (nextHydratableInstance = getNextHydratable(\n            lazyComponent.firstChild\n          ))),\n        (lazyComponent = workInProgress.pendingProps.children),\n        null !== current || isHydrating\n          ? reconcileChildren(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            )\n          : (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            )),\n        markRef(current, workInProgress),\n        workInProgress.child\n      );\n    case 5:\n      if (null === current && isHydrating) {\n        if ((init = lazyComponent = nextHydratableInstance))\n          (lazyComponent = canHydrateInstance(\n            lazyComponent,\n            workInProgress.type,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== lazyComponent\n              ? ((workInProgress.stateNode = lazyComponent),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = getNextHydratable(\n                  lazyComponent.firstChild\n                )),\n                (rootOrSingletonContext = !1),\n                (init = !0))\n              : (init = !1);\n        init || throwOnHydrationMismatch(workInProgress);\n      }\n      pushHostContext(workInProgress);\n      init = workInProgress.type;\n      nextProps = workInProgress.pendingProps;\n      nextState = null !== current ? current.memoizedProps : null;\n      lazyComponent = nextProps.children;\n      shouldSetTextContent(init, nextProps)\n        ? (lazyComponent = null)\n        : null !== nextState &&\n          shouldSetTextContent(init, nextState) &&\n          (workInProgress.flags |= 32);\n      null !== workInProgress.memoizedState &&\n        ((init = renderWithHooks(\n          current,\n          workInProgress,\n          TransitionAwareHostComponent,\n          null,\n          null,\n          renderLanes\n        )),\n        (HostTransitionContext._currentValue = init));\n      markRef(current, workInProgress);\n      reconcileChildren(current, workInProgress, lazyComponent, renderLanes);\n      return workInProgress.child;\n    case 6:\n      if (null === current && isHydrating) {\n        if ((current = renderLanes = nextHydratableInstance))\n          (renderLanes = canHydrateTextInstance(\n            renderLanes,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== renderLanes\n              ? ((workInProgress.stateNode = renderLanes),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = null),\n                (current = !0))\n              : (current = !1);\n        current || throwOnHydrationMismatch(workInProgress);\n      }\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (lazyComponent = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return (\n        (lazyComponent = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n        reconcileChildren(\n          current,\n          workInProgress,\n          lazyComponent.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        (init = workInProgress.type._context),\n        (lazyComponent = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        (init = readContext(init)),\n        (lazyComponent = lazyComponent(init)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return updateMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 22:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (lazyComponent = readContext(CacheContext)),\n        null === current\n          ? ((init = peekCacheFromPool()),\n            null === init &&\n              ((init = workInProgressRoot),\n              (nextProps = createCache()),\n              (init.pooledCache = nextProps),\n              nextProps.refCount++,\n              null !== nextProps && (init.pooledCacheLanes |= renderLanes),\n              (init = nextProps)),\n            (workInProgress.memoizedState = {\n              parent: lazyComponent,\n              cache: init\n            }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, init))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            (init = current.memoizedState),\n            (nextProps = workInProgress.memoizedState),\n            init.parent !== lazyComponent\n              ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n                (workInProgress.memoizedState = init),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      init),\n                pushProvider(workInProgress, CacheContext, lazyComponent))\n              : ((lazyComponent = nextProps.cache),\n                pushProvider(workInProgress, CacheContext, lazyComponent),\n                lazyComponent !== init.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber = null,\n  lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n  push(valueCursor, context._currentValue);\n  context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n  context._currentValue = valueCursor.current;\n  pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    (parent.childLanes & renderLanes) !== renderLanes\n      ? ((parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes))\n      : null !== alternate &&\n        (alternate.childLanes & renderLanes) !== renderLanes &&\n        (alternate.childLanes |= renderLanes);\n    if (parent === propagationRoot) break;\n    parent = parent.return;\n  }\n}\nfunction propagateContextChanges(\n  workInProgress,\n  contexts,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  var fiber = workInProgress.child;\n  null !== fiber && (fiber.return = workInProgress);\n  for (; null !== fiber; ) {\n    var list = fiber.dependencies;\n    if (null !== list) {\n      var nextFiber = fiber.child;\n      list = list.firstContext;\n      a: for (; null !== list; ) {\n        var dependency = list;\n        list = fiber;\n        for (var i = 0; i < contexts.length; i++)\n          if (dependency.context === contexts[i]) {\n            list.lanes |= renderLanes;\n            dependency = list.alternate;\n            null !== dependency && (dependency.lanes |= renderLanes);\n            scheduleContextWorkOnParentPath(\n              list.return,\n              renderLanes,\n              workInProgress\n            );\n            forcePropagateEntireTree || (nextFiber = null);\n            break a;\n          }\n        list = dependency.next;\n      }\n    } else if (18 === fiber.tag) {\n      nextFiber = fiber.return;\n      if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n      nextFiber.lanes |= renderLanes;\n      list = nextFiber.alternate;\n      null !== list && (list.lanes |= renderLanes);\n      scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n      nextFiber = null;\n    } else nextFiber = fiber.child;\n    if (null !== nextFiber) nextFiber.return = fiber;\n    else\n      for (nextFiber = fiber; null !== nextFiber; ) {\n        if (nextFiber === workInProgress) {\n          nextFiber = null;\n          break;\n        }\n        fiber = nextFiber.sibling;\n        if (null !== fiber) {\n          fiber.return = nextFiber.return;\n          nextFiber = fiber;\n          break;\n        }\n        nextFiber = nextFiber.return;\n      }\n    fiber = nextFiber;\n  }\n}\nfunction propagateParentContextChanges(\n  current,\n  workInProgress,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  current = null;\n  for (\n    var parent = workInProgress, isInsidePropagationBailout = !1;\n    null !== parent;\n\n  ) {\n    if (!isInsidePropagationBailout)\n      if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n      else if (0 !== (parent.flags & 262144)) break;\n    if (10 === parent.tag) {\n      var currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent = currentParent.memoizedProps;\n      if (null !== currentParent) {\n        var context = parent.type;\n        objectIs(parent.pendingProps.value, currentParent.value) ||\n          (null !== current ? current.push(context) : (current = [context]));\n      }\n    } else if (parent === hostTransitionProviderCursor.current) {\n      currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent.memoizedState.memoizedState !==\n        parent.memoizedState.memoizedState &&\n        (null !== current\n          ? current.push(HostTransitionContext)\n          : (current = [HostTransitionContext]));\n    }\n    parent = parent.return;\n  }\n  null !== current &&\n    propagateContextChanges(\n      workInProgress,\n      current,\n      renderLanes,\n      forcePropagateEntireTree\n    );\n  workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n  for (\n    currentDependencies = currentDependencies.firstContext;\n    null !== currentDependencies;\n\n  ) {\n    if (\n      !objectIs(\n        currentDependencies.context._currentValue,\n        currentDependencies.memoizedValue\n      )\n    )\n      return !0;\n    currentDependencies = currentDependencies.next;\n  }\n  return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n  currentlyRenderingFiber = workInProgress;\n  lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n  return readContextForConsumer(currentlyRenderingFiber, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n  null === currentlyRenderingFiber && prepareToReadContext(consumer);\n  return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n  var value = context._currentValue;\n  context = { context: context, memoizedValue: value, next: null };\n  if (null === lastContextDependency) {\n    if (null === consumer) throw Error(formatProdErrorMessage(308));\n    lastContextDependency = context;\n    consumer.dependencies = { lanes: 0, firstContext: context };\n    consumer.flags |= 524288;\n  } else lastContextDependency = lastContextDependency.next = context;\n  return value;\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n    callbacks: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      callbacks: null\n    });\n}\nfunction createUpdate(lane) {\n  return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n  if (null === updateQueue) return null;\n  updateQueue = updateQueue.shared;\n  if (0 !== (executionContext & 2)) {\n    var pending = updateQueue.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    updateQueue.pending = update;\n    update = getRootForUpdatedFiber(fiber);\n    markUpdateLaneFromFiberToRoot(fiber, null, lane);\n    return update;\n  }\n  enqueueUpdate$1(fiber, updateQueue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194176))) {\n    var queueLanes = fiber.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    fiber.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: null,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      callbacks: current.callbacks\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n  if (didReadFromEntangledAsyncAction) {\n    var entangledActionThenable = currentEntangledActionThenable;\n    if (null !== entangledActionThenable) throw entangledActionThenable;\n  }\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance$jscomp$0,\n  renderLanes\n) {\n  didReadFromEntangledAsyncAction = !1;\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      (pendingQueue = current.lastBaseUpdate),\n      pendingQueue !== lastBaseUpdate &&\n        (null === pendingQueue\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (pendingQueue.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate)));\n  }\n  if (null !== firstBaseUpdate) {\n    var newState = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    pendingQueue = firstBaseUpdate;\n    do {\n      var updateLane = pendingQueue.lane & -536870913,\n        isHiddenUpdate = updateLane !== pendingQueue.lane;\n      if (\n        isHiddenUpdate\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        0 !== updateLane &&\n          updateLane === currentEntangledLane &&\n          (didReadFromEntangledAsyncAction = !0);\n        null !== current &&\n          (current = current.next =\n            {\n              lane: 0,\n              tag: pendingQueue.tag,\n              payload: pendingQueue.payload,\n              callback: null,\n              next: null\n            });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = pendingQueue;\n          updateLane = props;\n          var instance = instance$jscomp$0;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                newState = workInProgress.call(instance, newState, updateLane);\n                break a;\n              }\n              newState = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -65537) | 128;\n            case 0:\n              workInProgress = update.payload;\n              updateLane =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(instance, newState, updateLane)\n                  : workInProgress;\n              if (null === updateLane || void 0 === updateLane) break a;\n              newState = assign({}, newState, updateLane);\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        updateLane = pendingQueue.callback;\n        null !== updateLane &&\n          ((workInProgress$jscomp$0.flags |= 64),\n          isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n          (isHiddenUpdate = queue.callbacks),\n          null === isHiddenUpdate\n            ? (queue.callbacks = [updateLane])\n            : isHiddenUpdate.push(updateLane));\n      } else\n        (isHiddenUpdate = {\n          lane: updateLane,\n          tag: pendingQueue.tag,\n          payload: pendingQueue.payload,\n          callback: pendingQueue.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = isHiddenUpdate),\n              (lastPendingUpdate = newState))\n            : (current = current.next = isHiddenUpdate),\n          (lastBaseUpdate |= updateLane);\n      pendingQueue = pendingQueue.next;\n      if (null === pendingQueue)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (isHiddenUpdate = pendingQueue),\n            (pendingQueue = isHiddenUpdate.next),\n            (isHiddenUpdate.next = null),\n            (queue.lastBaseUpdate = isHiddenUpdate),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = newState);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    null === firstBaseUpdate && (queue.shared.lanes = 0);\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = newState;\n  }\n}\nfunction callCallback(callback, context) {\n  if (\"function\" !== typeof callback)\n    throw Error(formatProdErrorMessage(191, callback));\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create();\n          inst.destroy = lastEffect;\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHookEffectListUnmount(\n  flags,\n  finishedWork,\n  nearestMountedAncestor$jscomp$0\n) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          var inst = updateQueue.inst,\n            destroy = inst.destroy;\n          if (void 0 !== destroy) {\n            inst.destroy = void 0;\n            lastEffect = finishedWork;\n            var nearestMountedAncestor = nearestMountedAncestor$jscomp$0;\n            try {\n              destroy();\n            } catch (error) {\n              captureCommitPhaseError(\n                lastEffect,\n                nearestMountedAncestor,\n                error\n              );\n            }\n          }\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitClassCallbacks(finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  if (null !== updateQueue) {\n    var instance = finishedWork.stateNode;\n    try {\n      commitCallbacks(updateQueue, instance);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction safelyCallComponentWillUnmount(\n  current,\n  nearestMountedAncestor,\n  instance\n) {\n  instance.props = resolveClassComponentProps(\n    current.type,\n    current.memoizedProps\n  );\n  instance.state = current.memoizedState;\n  try {\n    instance.componentWillUnmount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    var ref = current.ref;\n    if (null !== ref) {\n      var instance = current.stateNode;\n      switch (current.tag) {\n        case 26:\n        case 27:\n        case 5:\n          var instanceToUse = instance;\n          break;\n        default:\n          instanceToUse = instance;\n      }\n      \"function\" === typeof ref\n        ? (current.refCleanup = ref(instanceToUse))\n        : (ref.current = instanceToUse);\n    }\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref,\n    refCleanup = current.refCleanup;\n  if (null !== ref)\n    if (\"function\" === typeof refCleanup)\n      try {\n        refCleanup();\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      } finally {\n        (current.refCleanup = null),\n          (current = current.alternate),\n          null != current && (current.refCleanup = null);\n      }\n    else if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (error$112) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$112);\n      }\n    else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n  var type = finishedWork.type,\n    props = finishedWork.memoizedProps,\n    instance = finishedWork.stateNode;\n  try {\n    a: switch (type) {\n      case \"button\":\n      case \"input\":\n      case \"select\":\n      case \"textarea\":\n        props.autoFocus && instance.focus();\n        break a;\n      case \"img\":\n        props.src\n          ? (instance.src = props.src)\n          : props.srcSet && (instance.srcset = props.srcSet);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n  try {\n    var domElement = finishedWork.stateNode;\n    updateProperties(domElement, finishedWork.type, oldProps, newProps);\n    domElement[internalPropsKey] = newProps;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction isHostParent(fiber) {\n  return (\n    5 === fiber.tag ||\n    3 === fiber.tag ||\n    26 === fiber.tag ||\n    27 === fiber.tag ||\n    4 === fiber.tag\n  );\n}\nfunction getHostSibling(fiber) {\n  a: for (;;) {\n    for (; null === fiber.sibling; ) {\n      if (null === fiber.return || isHostParent(fiber.return)) return null;\n      fiber = fiber.return;\n    }\n    fiber.sibling.return = fiber.return;\n    for (\n      fiber = fiber.sibling;\n      5 !== fiber.tag &&\n      6 !== fiber.tag &&\n      27 !== fiber.tag &&\n      18 !== fiber.tag;\n\n    ) {\n      if (fiber.flags & 2) continue a;\n      if (null === fiber.child || 4 === fiber.tag) continue a;\n      else (fiber.child.return = fiber), (fiber = fiber.child);\n    }\n    if (!(fiber.flags & 2)) return fiber.stateNode;\n  }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before\n        ? 8 === parent.nodeType\n          ? parent.parentNode.insertBefore(node, before)\n          : parent.insertBefore(node, before)\n        : (8 === parent.nodeType\n            ? ((before = parent.parentNode), before.insertBefore(node, parent))\n            : ((before = parent), before.appendChild(node)),\n          (parent = parent._reactRootContainer),\n          (null !== parent && void 0 !== parent) ||\n            null !== before.onclick ||\n            (before.onclick = noop$1));\n  else if (4 !== tag && 27 !== tag && ((node = node.child), null !== node))\n    for (\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before ? parent.insertBefore(node, before) : parent.appendChild(node);\n  else if (4 !== tag && 27 !== tag && ((node = node.child), null !== node))\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  needsFormReset = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null,\n  shouldFireAfterActiveInstanceBlur = !1;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  root = root.containerInfo;\n  eventsEnabled = _enabled;\n  root = getActiveElementDeep(root);\n  if (hasSelectionCapabilities(root)) {\n    if (\"selectionStart\" in root)\n      var JSCompiler_temp = {\n        start: root.selectionStart,\n        end: root.selectionEnd\n      };\n    else\n      a: {\n        JSCompiler_temp =\n          ((JSCompiler_temp = root.ownerDocument) &&\n            JSCompiler_temp.defaultView) ||\n          window;\n        var selection =\n          JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n        if (selection && 0 !== selection.rangeCount) {\n          JSCompiler_temp = selection.anchorNode;\n          var anchorOffset = selection.anchorOffset,\n            focusNode = selection.focusNode;\n          selection = selection.focusOffset;\n          try {\n            JSCompiler_temp.nodeType, focusNode.nodeType;\n          } catch (e$20) {\n            JSCompiler_temp = null;\n            break a;\n          }\n          var length = 0,\n            start = -1,\n            end = -1,\n            indexWithinAnchor = 0,\n            indexWithinFocus = 0,\n            node = root,\n            parentNode = null;\n          b: for (;;) {\n            for (var next; ; ) {\n              node !== JSCompiler_temp ||\n                (0 !== anchorOffset && 3 !== node.nodeType) ||\n                (start = length + anchorOffset);\n              node !== focusNode ||\n                (0 !== selection && 3 !== node.nodeType) ||\n                (end = length + selection);\n              3 === node.nodeType && (length += node.nodeValue.length);\n              if (null === (next = node.firstChild)) break;\n              parentNode = node;\n              node = next;\n            }\n            for (;;) {\n              if (node === root) break b;\n              parentNode === JSCompiler_temp &&\n                ++indexWithinAnchor === anchorOffset &&\n                (start = length);\n              parentNode === focusNode &&\n                ++indexWithinFocus === selection &&\n                (end = length);\n              if (null !== (next = node.nextSibling)) break;\n              node = parentNode;\n              parentNode = node.parentNode;\n            }\n            node = next;\n          }\n          JSCompiler_temp =\n            -1 === start || -1 === end ? null : { start: start, end: end };\n        } else JSCompiler_temp = null;\n      }\n    JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n  } else JSCompiler_temp = null;\n  selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n  _enabled = !1;\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((firstChild = nextEffect),\n      (root = firstChild.child),\n      0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n    )\n      (root.return = firstChild), (nextEffect = root);\n    else\n      for (; null !== nextEffect; ) {\n        firstChild = nextEffect;\n        focusNode = firstChild.alternate;\n        root = firstChild.flags;\n        switch (firstChild.tag) {\n          case 0:\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (root & 1024) && null !== focusNode) {\n              root = void 0;\n              JSCompiler_temp = firstChild;\n              anchorOffset = focusNode.memoizedProps;\n              focusNode = focusNode.memoizedState;\n              selection = JSCompiler_temp.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  JSCompiler_temp.type,\n                  anchorOffset,\n                  JSCompiler_temp.elementType === JSCompiler_temp.type\n                );\n                root = selection.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  focusNode\n                );\n                selection.__reactInternalSnapshotBeforeUpdate = root;\n              } catch (error) {\n                captureCommitPhaseError(\n                  JSCompiler_temp,\n                  JSCompiler_temp.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\n            if (0 !== (root & 1024))\n              if (\n                ((root = firstChild.stateNode.containerInfo),\n                (JSCompiler_temp = root.nodeType),\n                9 === JSCompiler_temp)\n              )\n                clearContainerSparingly(root);\n              else if (1 === JSCompiler_temp)\n                switch (root.nodeName) {\n                  case \"HEAD\":\n                  case \"HTML\":\n                  case \"BODY\":\n                    clearContainerSparingly(root);\n                    break;\n                  default:\n                    root.textContent = \"\";\n                }\n            break;\n          case 5:\n          case 26:\n          case 27:\n          case 6:\n          case 4:\n          case 17:\n            break;\n          default:\n            if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n        }\n        root = firstChild.sibling;\n        if (null !== root) {\n          root.return = firstChild.return;\n          nextEffect = root;\n          break;\n        }\n        nextEffect = firstChild.return;\n      }\n  resolvedPrevProps = shouldFireAfterActiveInstanceBlur;\n  shouldFireAfterActiveInstanceBlur = !1;\n  return resolvedPrevProps;\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitHookEffectListMount(5, finishedWork);\n      break;\n    case 1:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 4)\n        if (((finishedRoot = finishedWork.stateNode), null === current))\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        else {\n          var prevProps = resolveClassComponentProps(\n            finishedWork.type,\n            current.memoizedProps\n          );\n          current = current.memoizedState;\n          try {\n            finishedRoot.componentDidUpdate(\n              prevProps,\n              current,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            );\n          } catch (error$111) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$111\n            );\n          }\n        }\n      flags & 64 && commitClassCallbacks(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 64 && ((flags = finishedWork.updateQueue), null !== flags)) {\n        finishedRoot = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 27:\n            case 5:\n              finishedRoot = finishedWork.child.stateNode;\n              break;\n            case 1:\n              finishedRoot = finishedWork.child.stateNode;\n          }\n        try {\n          commitCallbacks(flags, finishedRoot);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 26:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 27:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      null === current && flags & 4 && commitHostMount(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n      break;\n    case 22:\n      prevProps =\n        null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n      if (!prevProps) {\n        current =\n          (null !== current && null !== current.memoizedState) ||\n          offscreenSubtreeWasHidden;\n        var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n          prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = prevProps;\n        (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n          ? recursivelyTraverseReappearLayoutEffects(\n              finishedRoot,\n              finishedWork,\n              0 !== (finishedWork.subtreeFlags & 8772)\n            )\n          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n        offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      }\n      flags & 512 &&\n        (\"manual\" === finishedWork.memoizedProps.mode\n          ? safelyAttachRef(finishedWork, finishedWork.return)\n          : safelyDetachRef(finishedWork, finishedWork.return));\n      break;\n    default:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n  }\n}\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n  null !== alternate &&\n    ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n  fiber.child = null;\n  fiber.deletions = null;\n  fiber.sibling = null;\n  5 === fiber.tag &&\n    ((alternate = fiber.stateNode),\n    null !== alternate && detachDeletedInstance(alternate));\n  fiber.stateNode = null;\n  fiber.return = null;\n  fiber.dependencies = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.stateNode = null;\n  fiber.updateQueue = null;\n}\nvar hostParent = null,\n  hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n  finishedRoot,\n  nearestMountedAncestor,\n  parent\n) {\n  for (parent = parent.child; null !== parent; )\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n      (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n  finishedRoot,\n  nearestMountedAncestor,\n  deletedFiber\n) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n    } catch (err) {}\n  switch (deletedFiber.tag) {\n    case 26:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber.memoizedState\n        ? deletedFiber.memoizedState.count--\n        : deletedFiber.stateNode &&\n          ((deletedFiber = deletedFiber.stateNode),\n          deletedFiber.parentNode.removeChild(deletedFiber));\n      break;\n    case 27:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      var prevHostParent = hostParent,\n        prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber = deletedFiber.stateNode;\n      for (\n        nearestMountedAncestor = deletedFiber.attributes;\n        nearestMountedAncestor.length;\n\n      )\n        deletedFiber.removeAttributeNode(nearestMountedAncestor[0]);\n      detachDeletedInstance(deletedFiber);\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      prevHostParentIsContainer = hostParent;\n      var prevHostParentIsContainer$119 = hostParentIsContainer;\n      hostParent = null;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParentIsContainer;\n      hostParentIsContainer = prevHostParentIsContainer$119;\n      if (null !== hostParent)\n        if (hostParentIsContainer)\n          try {\n            (finishedRoot = hostParent),\n              (prevHostParent = deletedFiber.stateNode),\n              8 === finishedRoot.nodeType\n                ? finishedRoot.parentNode.removeChild(prevHostParent)\n                : finishedRoot.removeChild(prevHostParent);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            hostParent.removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent &&\n        (hostParentIsContainer\n          ? ((nearestMountedAncestor = hostParent),\n            (deletedFiber = deletedFiber.stateNode),\n            8 === nearestMountedAncestor.nodeType\n              ? clearSuspenseBoundary(\n                  nearestMountedAncestor.parentNode,\n                  deletedFiber\n                )\n              : 1 === nearestMountedAncestor.nodeType &&\n                clearSuspenseBoundary(nearestMountedAncestor, deletedFiber),\n            retryIfBlockedOn(nearestMountedAncestor))\n          : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n      break;\n    case 4:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode.containerInfo;\n      hostParentIsContainer = !0;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      offscreenSubtreeWasHidden ||\n        (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        (prevHostParent = deletedFiber.stateNode),\n        \"function\" === typeof prevHostParent.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            prevHostParent\n          ));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 21:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 22:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden =\n        (prevHostParent = offscreenSubtreeWasHidden) ||\n        null !== deletedFiber.memoizedState;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      offscreenSubtreeWasHidden = prevHostParent;\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState),\n      null !== finishedRoot &&\n        ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n  )\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(formatProdErrorMessage(435, finishedWork.tag));\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n    retryCache.has(wakeable) ||\n      (retryCache.add(wakeable), wakeable.then(retry, retry));\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (null !== deletions)\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i],\n        root = root$jscomp$0,\n        returnFiber = parentFiber,\n        parent = returnFiber;\n      a: for (; null !== parent; ) {\n        switch (parent.tag) {\n          case 27:\n          case 5:\n            hostParent = parent.stateNode;\n            hostParentIsContainer = !1;\n            break a;\n          case 3:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n          case 4:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n        }\n        parent = parent.return;\n      }\n      if (null === hostParent) throw Error(formatProdErrorMessage(160));\n      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n      hostParent = null;\n      hostParentIsContainer = !1;\n      root = childToDelete.alternate;\n      null !== root && (root.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13878)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n        (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n  var current = finishedWork.alternate,\n    flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n        commitHookEffectListMount(3, finishedWork),\n        commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n      break;\n    case 1:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      flags & 64 &&\n        offscreenSubtreeIsHidden &&\n        ((finishedWork = finishedWork.updateQueue),\n        null !== finishedWork &&\n          ((flags = finishedWork.callbacks),\n          null !== flags &&\n            ((current = finishedWork.shared.hiddenCallbacks),\n            (finishedWork.shared.hiddenCallbacks =\n              null === current ? flags : current.concat(flags)))));\n      break;\n    case 26:\n      var hoistableRoot = currentHoistableRoot;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (flags & 4) {\n        var currentResource = null !== current ? current.memoizedState : null;\n        flags = finishedWork.memoizedState;\n        if (null === current)\n          if (null === flags)\n            if (null === finishedWork.stateNode) {\n              a: {\n                flags = finishedWork.type;\n                current = finishedWork.memoizedProps;\n                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n                b: switch (flags) {\n                  case \"title\":\n                    currentResource =\n                      hoistableRoot.getElementsByTagName(\"title\")[0];\n                    if (\n                      !currentResource ||\n                      currentResource[internalHoistableMarker] ||\n                      currentResource[internalInstanceKey] ||\n                      \"http://www.w3.org/2000/svg\" ===\n                        currentResource.namespaceURI ||\n                      currentResource.hasAttribute(\"itemprop\")\n                    )\n                      (currentResource = hoistableRoot.createElement(flags)),\n                        hoistableRoot.head.insertBefore(\n                          currentResource,\n                          hoistableRoot.querySelector(\"head > title\")\n                        );\n                    setInitialProperties(currentResource, flags, current);\n                    currentResource[internalInstanceKey] = finishedWork;\n                    markNodeAsHoistable(currentResource);\n                    flags = currentResource;\n                    break a;\n                  case \"link\":\n                    var maybeNodes = getHydratableHoistableCache(\n                      \"link\",\n                      \"href\",\n                      hoistableRoot\n                    ).get(flags + (current.href || \"\"));\n                    if (maybeNodes)\n                      for (var i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"href\") ===\n                            (null == current.href ? null : current.href) &&\n                            currentResource.getAttribute(\"rel\") ===\n                              (null == current.rel ? null : current.rel) &&\n                            currentResource.getAttribute(\"title\") ===\n                              (null == current.title ? null : current.title) &&\n                            currentResource.getAttribute(\"crossorigin\") ===\n                              (null == current.crossOrigin\n                                ? null\n                                : current.crossOrigin))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  case \"meta\":\n                    if (\n                      (maybeNodes = getHydratableHoistableCache(\n                        \"meta\",\n                        \"content\",\n                        hoistableRoot\n                      ).get(flags + (current.content || \"\")))\n                    )\n                      for (i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"content\") ===\n                            (null == current.content\n                              ? null\n                              : \"\" + current.content) &&\n                            currentResource.getAttribute(\"name\") ===\n                              (null == current.name ? null : current.name) &&\n                            currentResource.getAttribute(\"property\") ===\n                              (null == current.property\n                                ? null\n                                : current.property) &&\n                            currentResource.getAttribute(\"http-equiv\") ===\n                              (null == current.httpEquiv\n                                ? null\n                                : current.httpEquiv) &&\n                            currentResource.getAttribute(\"charset\") ===\n                              (null == current.charSet\n                                ? null\n                                : current.charSet))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  default:\n                    throw Error(formatProdErrorMessage(468, flags));\n                }\n                currentResource[internalInstanceKey] = finishedWork;\n                markNodeAsHoistable(currentResource);\n                flags = currentResource;\n              }\n              finishedWork.stateNode = flags;\n            } else\n              mountHoistable(\n                hoistableRoot,\n                finishedWork.type,\n                finishedWork.stateNode\n              );\n          else\n            finishedWork.stateNode = acquireResource(\n              hoistableRoot,\n              flags,\n              finishedWork.memoizedProps\n            );\n        else\n          currentResource !== flags\n            ? (null === currentResource\n                ? null !== current.stateNode &&\n                  ((current = current.stateNode),\n                  current.parentNode.removeChild(current))\n                : currentResource.count--,\n              null === flags\n                ? mountHoistable(\n                    hoistableRoot,\n                    finishedWork.type,\n                    finishedWork.stateNode\n                  )\n                : acquireResource(\n                    hoistableRoot,\n                    flags,\n                    finishedWork.memoizedProps\n                  ))\n            : null === flags &&\n              null !== finishedWork.stateNode &&\n              commitHostUpdate(\n                finishedWork,\n                finishedWork.memoizedProps,\n                current.memoizedProps\n              );\n      }\n      break;\n    case 27:\n      if (flags & 4 && null === finishedWork.alternate) {\n        hoistableRoot = finishedWork.stateNode;\n        currentResource = finishedWork.memoizedProps;\n        try {\n          for (var node = hoistableRoot.firstChild; node; ) {\n            var nextNode = node.nextSibling,\n              nodeName = node.nodeName;\n            node[internalHoistableMarker] ||\n              \"HEAD\" === nodeName ||\n              \"BODY\" === nodeName ||\n              \"SCRIPT\" === nodeName ||\n              \"STYLE\" === nodeName ||\n              (\"LINK\" === nodeName &&\n                \"stylesheet\" === node.rel.toLowerCase()) ||\n              hoistableRoot.removeChild(node);\n            node = nextNode;\n          }\n          for (\n            var type = finishedWork.type, attributes = hoistableRoot.attributes;\n            attributes.length;\n\n          )\n            hoistableRoot.removeAttributeNode(attributes[0]);\n          setInitialProperties(hoistableRoot, type, currentResource);\n          hoistableRoot[internalInstanceKey] = finishedWork;\n          hoistableRoot[internalPropsKey] = currentResource;\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n    case 5:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (finishedWork.flags & 32) {\n        hoistableRoot = finishedWork.stateNode;\n        try {\n          setTextContent(hoistableRoot, \"\");\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      flags & 4 &&\n        null != finishedWork.stateNode &&\n        ((hoistableRoot = finishedWork.memoizedProps),\n        commitHostUpdate(\n          finishedWork,\n          hoistableRoot,\n          null !== current ? current.memoizedProps : hoistableRoot\n        ));\n      flags & 1024 && (needsFormReset = !0);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4) {\n        if (null === finishedWork.stateNode)\n          throw Error(formatProdErrorMessage(162));\n        flags = finishedWork.memoizedProps;\n        current = finishedWork.stateNode;\n        try {\n          current.nodeValue = flags;\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 3:\n      tagCaches = null;\n      hoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(root.containerInfo);\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      currentHoistableRoot = hoistableRoot;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n        try {\n          retryIfBlockedOn(root.containerInfo);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      needsFormReset &&\n        ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n      break;\n    case 4:\n      flags = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(\n        finishedWork.stateNode.containerInfo\n      );\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      currentHoistableRoot = flags;\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        (null !== finishedWork.memoizedState) !==\n          (null !== current && null !== current.memoizedState) &&\n        (globalMostRecentFallbackTime = now());\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 22:\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      node = null !== finishedWork.memoizedState;\n      nextNode = null !== current && null !== current.memoizedState;\n      nodeName = offscreenSubtreeIsHidden;\n      type = offscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = nodeName || node;\n      offscreenSubtreeWasHidden = type || nextNode;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      offscreenSubtreeWasHidden = type;\n      offscreenSubtreeIsHidden = nodeName;\n      commitReconciliationEffects(finishedWork);\n      root = finishedWork.stateNode;\n      root._current = finishedWork;\n      root._visibility &= -3;\n      root._visibility |= root._pendingVisibility & 2;\n      if (\n        flags & 8192 &&\n        ((root._visibility = node\n          ? root._visibility & -2\n          : root._visibility | 1),\n        node &&\n          ((root = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),\n          null === current ||\n            nextNode ||\n            root ||\n            recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n        null === finishedWork.memoizedProps ||\n          \"manual\" !== finishedWork.memoizedProps.mode)\n      )\n        a: for (current = null, root = finishedWork; ; ) {\n          if (5 === root.tag || 26 === root.tag || 27 === root.tag) {\n            if (null === current) {\n              nextNode = current = root;\n              try {\n                if (((hoistableRoot = nextNode.stateNode), node))\n                  (currentResource = hoistableRoot.style),\n                    \"function\" === typeof currentResource.setProperty\n                      ? currentResource.setProperty(\n                          \"display\",\n                          \"none\",\n                          \"important\"\n                        )\n                      : (currentResource.display = \"none\");\n                else {\n                  maybeNodes = nextNode.stateNode;\n                  i = nextNode.memoizedProps.style;\n                  var display =\n                    void 0 !== i && null !== i && i.hasOwnProperty(\"display\")\n                      ? i.display\n                      : null;\n                  maybeNodes.style.display =\n                    null == display || \"boolean\" === typeof display\n                      ? \"\"\n                      : (\"\" + display).trim();\n                }\n              } catch (error) {\n                captureCommitPhaseError(nextNode, nextNode.return, error);\n              }\n            }\n          } else if (6 === root.tag) {\n            if (null === current) {\n              nextNode = root;\n              try {\n                nextNode.stateNode.nodeValue = node\n                  ? \"\"\n                  : nextNode.memoizedProps;\n              } catch (error) {\n                captureCommitPhaseError(nextNode, nextNode.return, error);\n              }\n            }\n          } else if (\n            ((22 !== root.tag && 23 !== root.tag) ||\n              null === root.memoizedState ||\n              root === finishedWork) &&\n            null !== root.child\n          ) {\n            root.child.return = root;\n            root = root.child;\n            continue;\n          }\n          if (root === finishedWork) break a;\n          for (; null === root.sibling; ) {\n            if (null === root.return || root.return === finishedWork) break a;\n            current === root && (current = null);\n            root = root.return;\n          }\n          current === root && (current = null);\n          root.sibling.return = root.return;\n          root = root.sibling;\n        }\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((current = flags.retryQueue),\n          null !== current &&\n            ((flags.retryQueue = null),\n            attachSuspenseRetryListeners(finishedWork, current))));\n      break;\n    case 19:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 21:\n      break;\n    default:\n      recursivelyTraverseMutationEffects(root, finishedWork),\n        commitReconciliationEffects(finishedWork);\n  }\n}\nfunction commitReconciliationEffects(finishedWork) {\n  var flags = finishedWork.flags;\n  if (flags & 2) {\n    try {\n      if (27 !== finishedWork.tag) {\n        a: {\n          for (var parent = finishedWork.return; null !== parent; ) {\n            if (isHostParent(parent)) {\n              var JSCompiler_inline_result = parent;\n              break a;\n            }\n            parent = parent.return;\n          }\n          throw Error(formatProdErrorMessage(160));\n        }\n        switch (JSCompiler_inline_result.tag) {\n          case 27:\n            var parent$jscomp$0 = JSCompiler_inline_result.stateNode,\n              before = getHostSibling(finishedWork);\n            insertOrAppendPlacementNode(finishedWork, before, parent$jscomp$0);\n            break;\n          case 5:\n            var parent$113 = JSCompiler_inline_result.stateNode;\n            JSCompiler_inline_result.flags & 32 &&\n              (setTextContent(parent$113, \"\"),\n              (JSCompiler_inline_result.flags &= -33));\n            var before$114 = getHostSibling(finishedWork);\n            insertOrAppendPlacementNode(finishedWork, before$114, parent$113);\n            break;\n          case 3:\n          case 4:\n            var parent$115 = JSCompiler_inline_result.stateNode.containerInfo,\n              before$116 = getHostSibling(finishedWork);\n            insertOrAppendPlacementNodeIntoContainer(\n              finishedWork,\n              before$116,\n              parent$115\n            );\n            break;\n          default:\n            throw Error(formatProdErrorMessage(161));\n        }\n      }\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n    finishedWork.flags &= -3;\n  }\n  flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n  if (parentFiber.subtreeFlags & 1024)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var fiber = parentFiber;\n      recursivelyResetForms(fiber);\n      5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n      parentFiber = parentFiber.sibling;\n    }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n  if (parentFiber.subtreeFlags & 8772)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedWork = parentFiber;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 14:\n      case 15:\n        commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 1:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        var instance = finishedWork.stateNode;\n        \"function\" === typeof instance.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            finishedWork,\n            finishedWork.return,\n            instance\n          );\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 26:\n      case 27:\n      case 5:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 22:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      default:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var current = parentFiber.alternate,\n      finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(4, finishedWork);\n        break;\n      case 1:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        current = finishedWork;\n        finishedRoot = current.stateNode;\n        if (\"function\" === typeof finishedRoot.componentDidMount)\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        current = finishedWork;\n        finishedRoot = current.updateQueue;\n        if (null !== finishedRoot) {\n          var instance = current.stateNode;\n          try {\n            var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n            if (null !== hiddenCallbacks)\n              for (\n                finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n                finishedRoot < hiddenCallbacks.length;\n                finishedRoot++\n              )\n                callCallback(hiddenCallbacks[finishedRoot], instance);\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        }\n        includeWorkInProgressEffects &&\n          flags & 64 &&\n          commitClassCallbacks(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 26:\n      case 27:\n      case 5:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            includeWorkInProgressEffects\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              finishedRoot.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      null !== finishedWork.memoizedState\n        ? _finishedWork$memoize2._visibility & 4\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n        : _finishedWork$memoize2._visibility & 4\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 4),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256)\n            ));\n      flags & 2048 &&\n        commitOffscreenPassiveMountEffects(\n          finishedWork.alternate,\n          finishedWork\n        );\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 4\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n          : ((instance._visibility |= 4),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        suspendResource(\n          currentHoistableRoot,\n          fiber.memoizedState,\n          fiber.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 3:\n    case 4:\n      var previousHoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      currentHoistableRoot = previousHoistableRoot;\n      break;\n    case 22:\n      null === fiber.memoizedState &&\n        ((previousHoistableRoot = fiber.alternate),\n        null !== previousHoistableRoot &&\n        null !== previousHoistableRoot.memoizedState\n          ? ((previousHoistableRoot = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(fiber),\n            (suspenseyCommitFlag = previousHoistableRoot))\n          : recursivelyAccumulateSuspenseyCommit(fiber));\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 4 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -5),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 4 &&\n          ((i._visibility &= -5),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling =\n    this.child =\n    this.return =\n    this.stateNode =\n    this.type =\n    this.elementType =\n      null;\n  this.index = 0;\n  this.refCleanup = this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies =\n    this.memoizedState =\n    this.updateQueue =\n    this.memoizedProps =\n      null;\n  this.mode = mode;\n  this.subtreeFlags = this.flags = 0;\n  this.deletions = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiberImplClass(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null));\n  workInProgress.flags = current.flags & 31457280;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  workInProgress.refCleanup = current.refCleanup;\n  return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  workInProgress.flags &= 31457282;\n  var current = workInProgress.alternate;\n  null === current\n    ? ((workInProgress.childLanes = 0),\n      (workInProgress.lanes = renderLanes),\n      (workInProgress.child = null),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.memoizedProps = null),\n      (workInProgress.memoizedState = null),\n      (workInProgress.updateQueue = null),\n      (workInProgress.dependencies = null),\n      (workInProgress.stateNode = null))\n    : ((workInProgress.childLanes = current.childLanes),\n      (workInProgress.lanes = current.lanes),\n      (workInProgress.child = current.child),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null),\n      (workInProgress.memoizedProps = current.memoizedProps),\n      (workInProgress.memoizedState = current.memoizedState),\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.type = current.type),\n      (renderLanes = current.dependencies),\n      (workInProgress.dependencies =\n        null === renderLanes\n          ? null\n          : {\n              lanes: renderLanes.lanes,\n              firstContext: renderLanes.firstContext\n            }));\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 0;\n  owner = type;\n  if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n  else if (\"string\" === typeof type)\n    fiberTag = isHostHoistableType(\n      type,\n      pendingProps,\n      contextStackCursor.current\n    )\n      ? 26\n      : \"html\" === type || \"head\" === type || \"body\" === type\n        ? 27\n        : 5;\n  else\n    a: switch (type) {\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 24;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_OFFSCREEN_TYPE:\n        return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n  pendingProps = createFiberImplClass(22, pendingProps, key, mode);\n  pendingProps.elementType = REACT_OFFSCREEN_TYPE;\n  pendingProps.lanes = lanes;\n  var primaryChildInstance = {\n    _visibility: 1,\n    _pendingVisibility: 1,\n    _pendingMarkers: null,\n    _retryCache: null,\n    _transitions: null,\n    _current: null,\n    detach: function () {\n      var fiber = primaryChildInstance._current;\n      if (null === fiber) throw Error(formatProdErrorMessage(456));\n      if (0 === (primaryChildInstance._pendingVisibility & 2)) {\n        var root = enqueueConcurrentRenderForLane(fiber, 2);\n        null !== root &&\n          ((primaryChildInstance._pendingVisibility |= 2),\n          scheduleUpdateOnFiber(root, fiber, 2));\n      }\n    },\n    attach: function () {\n      var fiber = primaryChildInstance._current;\n      if (null === fiber) throw Error(formatProdErrorMessage(456));\n      if (0 !== (primaryChildInstance._pendingVisibility & 2)) {\n        var root = enqueueConcurrentRenderForLane(fiber, 2);\n        null !== root &&\n          ((primaryChildInstance._pendingVisibility &= -3),\n          scheduleUpdateOnFiber(root, fiber, 2));\n      }\n    }\n  };\n  pendingProps.stateNode = primaryChildInstance;\n  return pendingProps;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nfunction markUpdate(workInProgress) {\n  workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n  if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n    workInProgress.flags &= -16777217;\n  else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n    resource = suspenseHandlerStackCursor.current;\n    if (\n      null !== resource &&\n      ((workInProgressRootRenderLanes & 4194176) ===\n      workInProgressRootRenderLanes\n        ? null !== shellBoundary\n        : ((workInProgressRootRenderLanes & 62914560) !==\n            workInProgressRootRenderLanes &&\n            0 === (workInProgressRootRenderLanes & 536870912)) ||\n          resource !== shellBoundary)\n    )\n      throw (\n        ((suspendedThenable = noopSuspenseyCommitThenable),\n        SuspenseyCommitException)\n      );\n    workInProgress.flags |= 8192;\n  }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n  null !== retryQueue && (workInProgress.flags |= 4);\n  workInProgress.flags & 16384 &&\n    ((retryQueue =\n      22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n    (workInProgress.lanes |= retryQueue),\n    (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (!isHydrating)\n    switch (renderState.tailMode) {\n      case \"hidden\":\n        hasRenderedATailFallback = renderState.tail;\n        for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n          null !== hasRenderedATailFallback.alternate &&\n            (lastTailNode = hasRenderedATailFallback),\n            (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n        null === lastTailNode\n          ? (renderState.tail = null)\n          : (lastTailNode.sibling = null);\n        break;\n      case \"collapsed\":\n        lastTailNode = renderState.tail;\n        for (var lastTailNode$131 = null; null !== lastTailNode; )\n          null !== lastTailNode.alternate && (lastTailNode$131 = lastTailNode),\n            (lastTailNode = lastTailNode.sibling);\n        null === lastTailNode$131\n          ? hasRenderedATailFallback || null === renderState.tail\n            ? (renderState.tail = null)\n            : (renderState.tail.sibling = null)\n          : (lastTailNode$131.sibling = null);\n    }\n}\nfunction bubbleProperties(completedWork) {\n  var didBailout =\n      null !== completedWork.alternate &&\n      completedWork.alternate.child === completedWork.child,\n    newChildLanes = 0,\n    subtreeFlags = 0;\n  if (didBailout)\n    for (var child$132 = completedWork.child; null !== child$132; )\n      (newChildLanes |= child$132.lanes | child$132.childLanes),\n        (subtreeFlags |= child$132.subtreeFlags & 31457280),\n        (subtreeFlags |= child$132.flags & 31457280),\n        (child$132.return = completedWork),\n        (child$132 = child$132.sibling);\n  else\n    for (child$132 = completedWork.child; null !== child$132; )\n      (newChildLanes |= child$132.lanes | child$132.childLanes),\n        (subtreeFlags |= child$132.subtreeFlags),\n        (subtreeFlags |= child$132.flags),\n        (child$132.return = completedWork),\n        (child$132 = child$132.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      renderLanes = workInProgress.stateNode;\n      newProps = null;\n      null !== current && (newProps = current.memoizedState.cache);\n      workInProgress.memoizedState.cache !== newProps &&\n        (workInProgress.flags |= 2048);\n      popProvider(CacheContext);\n      popHostContainer();\n      renderLanes.pendingContext &&\n        ((renderLanes.context = renderLanes.pendingContext),\n        (renderLanes.pendingContext = null));\n      if (null === current || null === current.child)\n        popHydrationState(workInProgress)\n          ? markUpdate(workInProgress)\n          : null === current ||\n            (current.memoizedState.isDehydrated &&\n              0 === (workInProgress.flags & 256)) ||\n            ((workInProgress.flags |= 1024),\n            null !== hydrationErrors &&\n              (queueRecoverableErrors(hydrationErrors),\n              (hydrationErrors = null)));\n      bubbleProperties(workInProgress);\n      return null;\n    case 26:\n      return (\n        (renderLanes = workInProgress.memoizedState),\n        null === current\n          ? (markUpdate(workInProgress),\n            null !== renderLanes\n              ? (bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217)))\n          : renderLanes\n            ? renderLanes !== current.memoizedState\n              ? (markUpdate(workInProgress),\n                bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217))\n            : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n              bubbleProperties(workInProgress),\n              (workInProgress.flags &= -16777217)),\n        null\n      );\n    case 27:\n      popHostContext(workInProgress);\n      renderLanes = rootInstanceStackCursor.current;\n      var type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        popHydrationState(workInProgress)\n          ? prepareToHydrateHostInstance(workInProgress, current)\n          : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n            (workInProgress.stateNode = current),\n            markUpdate(workInProgress));\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 5:\n      popHostContext(workInProgress);\n      renderLanes = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        if (popHydrationState(workInProgress))\n          prepareToHydrateHostInstance(workInProgress, current);\n        else {\n          type = getOwnerDocumentFromRootContainer(\n            rootInstanceStackCursor.current\n          );\n          switch (current) {\n            case 1:\n              current = type.createElementNS(\n                \"http://www.w3.org/2000/svg\",\n                renderLanes\n              );\n              break;\n            case 2:\n              current = type.createElementNS(\n                \"http://www.w3.org/1998/Math/MathML\",\n                renderLanes\n              );\n              break;\n            default:\n              switch (renderLanes) {\n                case \"svg\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/2000/svg\",\n                    renderLanes\n                  );\n                  break;\n                case \"math\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/1998/Math/MathML\",\n                    renderLanes\n                  );\n                  break;\n                case \"script\":\n                  current = type.createElement(\"div\");\n                  current.innerHTML = \"<script>\\x3c/script>\";\n                  current = current.removeChild(current.firstChild);\n                  break;\n                case \"select\":\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(\"select\", { is: newProps.is })\n                      : type.createElement(\"select\");\n                  newProps.multiple\n                    ? (current.multiple = !0)\n                    : newProps.size && (current.size = newProps.size);\n                  break;\n                default:\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(renderLanes, { is: newProps.is })\n                      : type.createElement(renderLanes);\n              }\n          }\n          current[internalInstanceKey] = workInProgress;\n          current[internalPropsKey] = newProps;\n          a: for (type = workInProgress.child; null !== type; ) {\n            if (5 === type.tag || 6 === type.tag)\n              current.appendChild(type.stateNode);\n            else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {\n              type.child.return = type;\n              type = type.child;\n              continue;\n            }\n            if (type === workInProgress) break a;\n            for (; null === type.sibling; ) {\n              if (null === type.return || type.return === workInProgress)\n                break a;\n              type = type.return;\n            }\n            type.sibling.return = type.return;\n            type = type.sibling;\n          }\n          workInProgress.stateNode = current;\n          a: switch (\n            (setInitialProperties(current, renderLanes, newProps), renderLanes)\n          ) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              current = !!newProps.autoFocus;\n              break a;\n            case \"img\":\n              current = !0;\n              break a;\n            default:\n              current = !1;\n          }\n          current && markUpdate(workInProgress);\n        }\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.flags &= -16777217;\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(formatProdErrorMessage(166));\n        current = rootInstanceStackCursor.current;\n        if (popHydrationState(workInProgress)) {\n          current = workInProgress.stateNode;\n          renderLanes = workInProgress.memoizedProps;\n          newProps = null;\n          type = hydrationParentFiber;\n          if (null !== type)\n            switch (type.tag) {\n              case 27:\n              case 5:\n                newProps = type.memoizedProps;\n            }\n          current[internalInstanceKey] = workInProgress;\n          current =\n            current.nodeValue === renderLanes ||\n            (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n            checkForUnmatchedText(current.nodeValue, renderLanes)\n              ? !0\n              : !1;\n          current || throwOnHydrationMismatch(workInProgress);\n        } else\n          (current =\n            getOwnerDocumentFromRootContainer(current).createTextNode(\n              newProps\n            )),\n            (current[internalInstanceKey] = workInProgress),\n            (workInProgress.stateNode = current);\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 13:\n      newProps = workInProgress.memoizedState;\n      if (\n        null === current ||\n        (null !== current.memoizedState &&\n          null !== current.memoizedState.dehydrated)\n      ) {\n        type = popHydrationState(workInProgress);\n        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            if (!type) throw Error(formatProdErrorMessage(318));\n            type = workInProgress.memoizedState;\n            type = null !== type ? type.dehydrated : null;\n            if (!type) throw Error(formatProdErrorMessage(317));\n            type[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          type = !1;\n        } else\n          null !== hydrationErrors &&\n            (queueRecoverableErrors(hydrationErrors), (hydrationErrors = null)),\n            (type = !0);\n        if (!type) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n      }\n      popSuspenseHandler(workInProgress);\n      if (0 !== (workInProgress.flags & 128))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      renderLanes = null !== newProps;\n      current = null !== current && null !== current.memoizedState;\n      if (renderLanes) {\n        newProps = workInProgress.child;\n        type = null;\n        null !== newProps.alternate &&\n          null !== newProps.alternate.memoizedState &&\n          null !== newProps.alternate.memoizedState.cachePool &&\n          (type = newProps.alternate.memoizedState.cachePool.pool);\n        var cache$144 = null;\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (cache$144 = newProps.memoizedState.cachePool.pool);\n        cache$144 !== type && (newProps.flags |= 2048);\n      }\n      renderLanes !== current &&\n        renderLanes &&\n        (workInProgress.child.flags |= 8192);\n      scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n      bubbleProperties(workInProgress);\n      return null;\n    case 4:\n      return (\n        popHostContainer(),\n        null === current &&\n          listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 19:\n      pop(suspenseStackCursor);\n      type = workInProgress.memoizedState;\n      if (null === type) return bubbleProperties(workInProgress), null;\n      newProps = 0 !== (workInProgress.flags & 128);\n      cache$144 = type.rendering;\n      if (null === cache$144)\n        if (newProps) cutOffTailIfNeeded(type, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              cache$144 = findFirstSuspended(current);\n              if (null !== cache$144) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(type, !1);\n                current = cache$144.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== type.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (newProps = !0),\n            cutOffTailIfNeeded(type, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!newProps)\n          if (((current = findFirstSuspended(cache$144)), null !== current)) {\n            if (\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(type, !0),\n              null === type.tail &&\n                \"hidden\" === type.tailMode &&\n                !cache$144.alternate &&\n                !isHydrating)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - type.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              cutOffTailIfNeeded(type, !1),\n              (workInProgress.lanes = 4194304));\n        type.isBackwards\n          ? ((cache$144.sibling = workInProgress.child),\n            (workInProgress.child = cache$144))\n          : ((current = type.last),\n            null !== current\n              ? (current.sibling = cache$144)\n              : (workInProgress.child = cache$144),\n            (type.last = cache$144));\n      }\n      if (null !== type.tail)\n        return (\n          (workInProgress = type.tail),\n          (type.rendering = workInProgress),\n          (type.tail = workInProgress.sibling),\n          (type.renderingStartTime = now()),\n          (workInProgress.sibling = null),\n          (current = suspenseStackCursor.current),\n          push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n          workInProgress\n        );\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps\n          ? 0 !== (renderLanes & 536870912) &&\n            0 === (workInProgress.flags & 128) &&\n            (bubbleProperties(workInProgress),\n            workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n          : bubbleProperties(workInProgress),\n        (renderLanes = workInProgress.updateQueue),\n        null !== renderLanes &&\n          scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n        (renderLanes = null),\n        null !== current &&\n          null !== current.memoizedState &&\n          null !== current.memoizedState.cachePool &&\n          (renderLanes = current.memoizedState.cachePool.pool),\n        (newProps = null),\n        null !== workInProgress.memoizedState &&\n          null !== workInProgress.memoizedState.cachePool &&\n          (newProps = workInProgress.memoizedState.cachePool.pool),\n        newProps !== renderLanes && (workInProgress.flags |= 2048),\n        null !== current && pop(resumedCache),\n        null\n      );\n    case 24:\n      return (\n        (renderLanes = null),\n        null !== current && (renderLanes = current.memoizedState.cache),\n        workInProgress.memoizedState.cache !== renderLanes &&\n          (workInProgress.flags |= 2048),\n        popProvider(CacheContext),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 25:\n      return null;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (null !== current && null !== current.dehydrated) {\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 19:\n      return pop(suspenseStackCursor), null;\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress.type), null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        null !== current && pop(resumedCache),\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 24:\n      return popProvider(CacheContext), null;\n    case 25:\n      return null;\n    default:\n      return null;\n  }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n  popTreeContext(interruptedWork);\n  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      pop(suspenseStackCursor);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  rootDoesHavePassiveEffects = !1,\n  rootWithPendingPassiveEffects = null,\n  pendingPassiveEffectsLanes = 0,\n  pendingPassiveEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n  if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n    return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n  if (null !== ReactSharedInternals.T) {\n    var actionScopeLane = currentEntangledLane;\n    return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();\n  }\n  return resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  0 === workInProgressDeferredLane &&\n    (workInProgressDeferredLane =\n      0 === (workInProgressRootRenderLanes & 536870912) || isHydrating\n        ? claimNextTransitionLane()\n        : 536870912);\n  var suspenseHandler = suspenseHandlerStackCursor.current;\n  null !== suspenseHandler && (suspenseHandler.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot && 2 === workInProgressSuspendedReason) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 60) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else if (6 === exitStatus)\n      markRootSuspended(\n        root$jscomp$0,\n        lanes,\n        0,\n        !workInProgressRootDidSkipSuspendedSiblings\n      );\n    else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (2 === exitStatus) {\n        renderWasConcurrent = lanes;\n        if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n          var JSCompiler_inline_result = 0;\n        else\n          (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n            (JSCompiler_inline_result =\n              0 !== JSCompiler_inline_result\n                ? JSCompiler_inline_result\n                : JSCompiler_inline_result & 536870912\n                  ? 536870912\n                  : 0);\n        if (0 !== JSCompiler_inline_result) {\n          lanes = JSCompiler_inline_result;\n          a: {\n            var root = root$jscomp$0;\n            exitStatus = workInProgressRootConcurrentErrors;\n            var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n            wasRootDehydrated &&\n              (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (2 !== JSCompiler_inline_result) {\n              if (\n                workInProgressRootDidAttachPingListener &&\n                !wasRootDehydrated\n              ) {\n                root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n                workInProgressRootInterleavedUpdatedLanes |=\n                  renderWasConcurrent;\n                exitStatus = 4;\n                break a;\n              }\n              renderWasConcurrent = workInProgressRootRecoverableErrors;\n              workInProgressRootRecoverableErrors = exitStatus;\n              null !== renderWasConcurrent &&\n                queueRecoverableErrors(renderWasConcurrent);\n            }\n            exitStatus = JSCompiler_inline_result;\n          }\n          renderWasConcurrent = !1;\n          if (2 !== exitStatus) continue;\n        }\n      }\n      if (1 === exitStatus) {\n        prepareFreshStack(root$jscomp$0, 0);\n        markRootSuspended(root$jscomp$0, lanes, 0, !0);\n        break;\n      }\n      a: {\n        shouldTimeSlice = root$jscomp$0;\n        switch (exitStatus) {\n          case 0:\n          case 1:\n            throw Error(formatProdErrorMessage(345));\n          case 4:\n            if ((lanes & 4194176) === lanes) {\n              markRootSuspended(\n                shouldTimeSlice,\n                lanes,\n                workInProgressDeferredLane,\n                !workInProgressRootDidSkipSuspendedSiblings\n              );\n              break a;\n            }\n            break;\n          case 2:\n            workInProgressRootRecoverableErrors = null;\n            break;\n          case 3:\n          case 5:\n            break;\n          default:\n            throw Error(formatProdErrorMessage(329));\n        }\n        shouldTimeSlice.finishedWork = forceSync;\n        shouldTimeSlice.finishedLanes = lanes;\n        if (\n          (lanes & 62914560) === lanes &&\n          ((renderWasConcurrent = globalMostRecentFallbackTime + 300 - now()),\n          10 < renderWasConcurrent)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0)) break a;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              2,\n              -0,\n              0\n            ),\n            renderWasConcurrent\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes,\n          workInProgressRootDidSkipSuspendedSiblings,\n          0,\n          -0,\n          0\n        );\n      }\n    }\n    break;\n  } while (1);\n  ensureRootIsScheduled(root$jscomp$0);\n}\nfunction queueRecoverableErrors(errors) {\n  null === workInProgressRootRecoverableErrors\n    ? (workInProgressRootRecoverableErrors = errors)\n    : workInProgressRootRecoverableErrors.push.apply(\n        workInProgressRootRecoverableErrors,\n        errors\n      );\n}\nfunction commitRootWhenReady(\n  root,\n  finishedWork,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  lanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  didSkipSuspendedSiblings,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  var subtreeFlags = finishedWork.subtreeFlags;\n  if (subtreeFlags & 8192 || 16785408 === (subtreeFlags & 16785408))\n    if (\n      ((suspendedState = { stylesheets: null, count: 0, unsuspend: noop }),\n      accumulateSuspenseyCommitOnFiber(finishedWork),\n      (finishedWork = waitForCommitToBeReady()),\n      null !== finishedWork)\n    ) {\n      root.cancelPendingCommit = finishedWork(\n        commitRoot.bind(\n          null,\n          root,\n          recoverableErrors,\n          transitions,\n          didIncludeRenderPhaseUpdate,\n          spawnedLane,\n          updatedLanes,\n          suspendedRetryLanes,\n          1,\n          completedRenderStartTime,\n          completedRenderEndTime\n        )\n      );\n      markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n      return;\n    }\n  commitRoot(\n    root,\n    recoverableErrors,\n    transitions,\n    didIncludeRenderPhaseUpdate,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes,\n    suspendedCommitReason,\n    completedRenderStartTime,\n    completedRenderEndTime\n  );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  for (var node = finishedWork; ; ) {\n    var tag = node.tag;\n    if (\n      (0 === tag || 11 === tag || 15 === tag) &&\n      node.flags & 16384 &&\n      ((tag = node.updateQueue),\n      null !== tag && ((tag = tag.stores), null !== tag))\n    )\n      for (var i = 0; i < tag.length; i++) {\n        var check = tag[i],\n          getSnapshot = check.getSnapshot;\n        check = check.value;\n        try {\n          if (!objectIs(getSnapshot(), check)) return !1;\n        } catch (error) {\n          return !1;\n        }\n      }\n    tag = node.child;\n    if (node.subtreeFlags & 16384 && null !== tag)\n      (tag.return = node), (node = tag);\n    else {\n      if (node === finishedWork) break;\n      for (; null === node.sibling; ) {\n        if (null === node.return || node.return === finishedWork) return !0;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return !0;\n}\nfunction markRootSuspended(\n  root,\n  suspendedLanes,\n  spawnedLane,\n  didAttemptEntireTree\n) {\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n  didAttemptEntireTree = root.expirationTimes;\n  for (var lanes = suspendedLanes; 0 < lanes; ) {\n    var index$6 = 31 - clz32(lanes),\n      lane = 1 << index$6;\n    didAttemptEntireTree[index$6] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n  return 0 === (executionContext & 6)\n    ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n    : !0;\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState$1 = null),\n        (thenableIndexCounter$1 = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  root.finishedWork = null;\n  root.finishedLanes = 0;\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  0 !== (lanes & 8) && (lanes |= lanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= lanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$4 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$4;\n      lanes |= root[index$4];\n      allEntangledLanes &= ~lane;\n    }\n  entangledRenderLanes = lanes;\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194176) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$164) {\n      handleThrow(root, thrownValue$164);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              2 === workInProgressSuspendedReason &&\n                workInProgressRoot === root &&\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (resource ? preloadResource(resource) : 1) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(formatProdErrorMessage(462));\n        }\n      }\n      workLoopConcurrent();\n      break;\n    } catch (thrownValue$166) {\n      handleThrow(root, thrownValue$166);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrent() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState$1 = null;\n  thenableIndexCounter$1 = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (isHydrating || 1 === suspendedReason) root = !0;\n    else if (\n      workInProgressRootIsPrerendering ||\n      0 !== (workInProgressRootRenderLanes & 536870912)\n    )\n      root = !1;\n    else if (\n      ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n      2 === suspendedReason || 3 === suspendedReason || 6 === suspendedReason)\n    )\n      (suspendedReason = suspenseHandlerStackCursor.current),\n        null !== suspendedReason &&\n          13 === suspendedReason.tag &&\n          (suspendedReason.flags |= 16384);\n    unwindUnitOfWork(unitOfWork, root);\n  } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    if (0 !== (completedWork.flags & 32768)) {\n      unwindUnitOfWork(\n        completedWork,\n        workInProgressRootDidSkipSuspendedSiblings\n      );\n      return;\n    }\n    unitOfWork = completedWork.return;\n    var next = completeWork(\n      completedWork.alternate,\n      completedWork,\n      entangledRenderLanes\n    );\n    if (null !== next) {\n      workInProgress = next;\n      return;\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n  do {\n    var next = unwindWork(unitOfWork.alternate, unitOfWork);\n    if (null !== next) {\n      next.flags &= 32767;\n      workInProgress = next;\n      return;\n    }\n    next = unitOfWork.return;\n    null !== next &&\n      ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n    if (\n      !skipSiblings &&\n      ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n    ) {\n      workInProgress = unitOfWork;\n      return;\n    }\n    workInProgress = unitOfWork = next;\n  } while (null !== unitOfWork);\n  workInProgressRootExitStatus = 6;\n  workInProgress = null;\n}\nfunction commitRoot(\n  root,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  var prevTransition = ReactSharedInternals.T,\n    previousUpdateLanePriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      (ReactSharedInternals.T = null),\n      commitRootImpl(\n        root,\n        recoverableErrors,\n        transitions,\n        didIncludeRenderPhaseUpdate,\n        previousUpdateLanePriority,\n        spawnedLane,\n        updatedLanes,\n        suspendedRetryLanes,\n        suspendedCommitReason,\n        completedRenderStartTime,\n        completedRenderEndTime\n      );\n  } finally {\n    (ReactSharedInternals.T = prevTransition),\n      (ReactDOMSharedInternals.p = previousUpdateLanePriority);\n  }\n}\nfunction commitRootImpl(\n  root,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  renderPriorityLevel,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  do flushPassiveEffects();\n  while (null !== rootWithPendingPassiveEffects);\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var finishedWork = root.finishedWork;\n  didIncludeRenderPhaseUpdate = root.finishedLanes;\n  if (null === finishedWork) return null;\n  root.finishedWork = null;\n  root.finishedLanes = 0;\n  if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n  root.callbackNode = null;\n  root.callbackPriority = 0;\n  root.cancelPendingCommit = null;\n  var remainingLanes = finishedWork.lanes | finishedWork.childLanes;\n  remainingLanes |= concurrentlyUpdatedLanes;\n  markRootFinished(\n    root,\n    didIncludeRenderPhaseUpdate,\n    remainingLanes,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes\n  );\n  root === workInProgressRoot &&\n    ((workInProgress = workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0));\n  (0 === (finishedWork.subtreeFlags & 10256) &&\n    0 === (finishedWork.flags & 10256)) ||\n    rootDoesHavePassiveEffects ||\n    ((rootDoesHavePassiveEffects = !0),\n    (pendingPassiveEffectsRemainingLanes = remainingLanes),\n    (pendingPassiveTransitions = transitions),\n    scheduleCallback$1(NormalPriority$1, function () {\n      flushPassiveEffects(!0);\n      return null;\n    }));\n  transitions = 0 !== (finishedWork.flags & 15990);\n  0 !== (finishedWork.subtreeFlags & 15990) || transitions\n    ? ((transitions = ReactSharedInternals.T),\n      (ReactSharedInternals.T = null),\n      (spawnedLane = ReactDOMSharedInternals.p),\n      (ReactDOMSharedInternals.p = 2),\n      (updatedLanes = executionContext),\n      (executionContext |= 4),\n      commitBeforeMutationEffects(root, finishedWork),\n      commitMutationEffectsOnFiber(finishedWork, root),\n      restoreSelection(selectionInformation, root.containerInfo),\n      (_enabled = !!eventsEnabled),\n      (selectionInformation = eventsEnabled = null),\n      (root.current = finishedWork),\n      commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork),\n      requestPaint(),\n      (executionContext = updatedLanes),\n      (ReactDOMSharedInternals.p = spawnedLane),\n      (ReactSharedInternals.T = transitions))\n    : (root.current = finishedWork);\n  rootDoesHavePassiveEffects\n    ? ((rootDoesHavePassiveEffects = !1),\n      (rootWithPendingPassiveEffects = root),\n      (pendingPassiveEffectsLanes = didIncludeRenderPhaseUpdate))\n    : releaseRootPooledCache(root, remainingLanes);\n  remainingLanes = root.pendingLanes;\n  0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n  onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n  ensureRootIsScheduled(root);\n  if (null !== recoverableErrors)\n    for (\n      renderPriorityLevel = root.onRecoverableError, finishedWork = 0;\n      finishedWork < recoverableErrors.length;\n      finishedWork++\n    )\n      (remainingLanes = recoverableErrors[finishedWork]),\n        renderPriorityLevel(remainingLanes.value, {\n          componentStack: remainingLanes.stack\n        });\n  0 !== (pendingPassiveEffectsLanes & 3) && flushPassiveEffects();\n  remainingLanes = root.pendingLanes;\n  0 !== (didIncludeRenderPhaseUpdate & 4194218) && 0 !== (remainingLanes & 42)\n    ? root === rootWithNestedUpdates\n      ? nestedUpdateCount++\n      : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n    : (nestedUpdateCount = 0);\n  flushSyncWorkAcrossRoots_impl(0, !1);\n  return null;\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPassiveEffects() {\n  if (null !== rootWithPendingPassiveEffects) {\n    var root$170 = rootWithPendingPassiveEffects,\n      remainingLanes = pendingPassiveEffectsRemainingLanes;\n    pendingPassiveEffectsRemainingLanes = 0;\n    var renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes),\n      prevTransition = ReactSharedInternals.T,\n      previousPriority = ReactDOMSharedInternals.p;\n    try {\n      ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n      ReactSharedInternals.T = null;\n      if (null === rootWithPendingPassiveEffects)\n        var JSCompiler_inline_result = !1;\n      else {\n        renderPriority = pendingPassiveTransitions;\n        pendingPassiveTransitions = null;\n        var root = rootWithPendingPassiveEffects,\n          lanes = pendingPassiveEffectsLanes;\n        rootWithPendingPassiveEffects = null;\n        pendingPassiveEffectsLanes = 0;\n        if (0 !== (executionContext & 6))\n          throw Error(formatProdErrorMessage(331));\n        var prevExecutionContext = executionContext;\n        executionContext |= 4;\n        commitPassiveUnmountOnFiber(root.current);\n        commitPassiveMountOnFiber(root, root.current, lanes, renderPriority);\n        executionContext = prevExecutionContext;\n        flushSyncWorkAcrossRoots_impl(0, !1);\n        if (\n          injectedHook &&\n          \"function\" === typeof injectedHook.onPostCommitFiberRoot\n        )\n          try {\n            injectedHook.onPostCommitFiberRoot(rendererID, root);\n          } catch (err) {}\n        JSCompiler_inline_result = !0;\n      }\n      return JSCompiler_inline_result;\n    } finally {\n      (ReactDOMSharedInternals.p = previousPriority),\n        (ReactSharedInternals.T = prevTransition),\n        releaseRootPooledCache(root$170, remainingLanes);\n    }\n  }\n  return !1;\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n  rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n  null !== rootFiber &&\n    (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (; null !== nearestMountedAncestor; ) {\n      if (3 === nearestMountedAncestor.tag) {\n        captureCommitPhaseErrorOnRoot(\n          nearestMountedAncestor,\n          sourceFiber,\n          error\n        );\n        break;\n      } else if (1 === nearestMountedAncestor.tag) {\n        var instance = nearestMountedAncestor.stateNode;\n        if (\n          \"function\" ===\n            typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n          error = createClassErrorUpdate(2);\n          instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n          null !== instance &&\n            (initializeClassErrorUpdate(\n              error,\n              instance,\n              nearestMountedAncestor,\n              sourceFiber\n            ),\n            markRootUpdated$1(instance, 2),\n            ensureRootIsScheduled(instance));\n          break;\n        }\n      }\n      nearestMountedAncestor = nearestMountedAncestor.return;\n    }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n  var pingCache = root.pingCache;\n  if (null === pingCache) {\n    pingCache = root.pingCache = new PossiblyWeakMap();\n    var threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else\n    (threadIDs = pingCache.get(wakeable)),\n      void 0 === threadIDs &&\n        ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n  threadIDs.has(lanes) ||\n    ((workInProgressRootDidAttachPingListener = !0),\n    threadIDs.add(lanes),\n    (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n    wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  root.warmLanes &= ~pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      300 > now() - globalMostRecentFallbackTime)\n      ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n      : (workInProgressRootPingedLanes |= pingedLanes),\n    workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n      (workInProgressSuspendedRetryLanes = 0));\n  ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  0 === retryLane && (retryLane = claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(formatProdErrorMessage(314));\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n  lastScheduledRoot = null,\n  didScheduleMicrotask = !1,\n  mightHavePendingSyncWork = !1,\n  isFlushingWork = !1,\n  currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n  root !== lastScheduledRoot &&\n    null === root.next &&\n    (null === lastScheduledRoot\n      ? (firstScheduledRoot = lastScheduledRoot = root)\n      : (lastScheduledRoot = lastScheduledRoot.next = root));\n  mightHavePendingSyncWork = !0;\n  didScheduleMicrotask ||\n    ((didScheduleMicrotask = !0),\n    scheduleImmediateTask(processRootScheduleInMicrotask));\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n  if (!isFlushingWork && mightHavePendingSyncWork) {\n    isFlushingWork = !0;\n    do {\n      var didPerformSomeWork = !1;\n      for (var root$172 = firstScheduledRoot; null !== root$172; ) {\n        if (!onlyLegacy)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root$172.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root$172.suspendedLanes,\n                pingedLanes = root$172.pingedLanes;\n              JSCompiler_inline_result =\n                (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n              JSCompiler_inline_result &=\n                pendingLanes & ~(suspendedLanes & ~pingedLanes);\n              JSCompiler_inline_result =\n                JSCompiler_inline_result & 201326677\n                  ? (JSCompiler_inline_result & 201326677) | 1\n                  : JSCompiler_inline_result\n                    ? JSCompiler_inline_result | 2\n                    : 0;\n            }\n            0 !== JSCompiler_inline_result &&\n              ((didPerformSomeWork = !0),\n              performSyncWorkOnRoot(root$172, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root$172,\n                root$172 === workInProgressRoot ? JSCompiler_inline_result : 0\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root$172, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root$172, JSCompiler_inline_result));\n        root$172 = root$172.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInMicrotask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  var syncTransitionLanes = 0;\n  0 !== currentEventTransitionLane &&\n    (shouldAttemptEagerTransition() &&\n      (syncTransitionLanes = currentEventTransitionLane),\n    (currentEventTransitionLane = 0));\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    if (0 === nextLanes)\n      (root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev);\n    else if (\n      ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n    )\n      mightHavePendingSyncWork = !0;\n    root = next;\n  }\n  flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$5 = 31 - clz32(lanes),\n      lane = 1 << index$5,\n      expirationTime = expirationTimes[index$5];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  currentTime = workInProgressRoot;\n  suspendedLanes = workInProgressRootRenderLanes;\n  suspendedLanes = getNextLanes(\n    root,\n    root === currentTime ? suspendedLanes : 0\n  );\n  pingedLanes = root.callbackNode;\n  if (\n    0 === suspendedLanes ||\n    (root === currentTime && 2 === workInProgressSuspendedReason) ||\n    null !== root.cancelPendingCommit\n  )\n    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0)\n    );\n  if (\n    0 === (suspendedLanes & 3) ||\n    checkIfRootIsPrerendering(root, suspendedLanes)\n  ) {\n    currentTime = suspendedLanes & -suspendedLanes;\n    if (currentTime === root.callbackPriority) return currentTime;\n    null !== pingedLanes && cancelCallback$1(pingedLanes);\n    switch (lanesToEventPriority(suspendedLanes)) {\n      case 2:\n      case 8:\n        suspendedLanes = UserBlockingPriority;\n        break;\n      case 32:\n        suspendedLanes = NormalPriority$1;\n        break;\n      case 268435456:\n        suspendedLanes = IdlePriority;\n        break;\n      default:\n        suspendedLanes = NormalPriority$1;\n    }\n    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n    root.callbackPriority = currentTime;\n    root.callbackNode = suspendedLanes;\n    return currentTime;\n  }\n  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n  root.callbackPriority = 2;\n  root.callbackNode = null;\n  return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  var originalCallbackNode = root.callbackNode;\n  if (flushPassiveEffects() && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPassiveEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateTask(cb) {\n  scheduleMicrotask(function () {\n    0 !== (executionContext & 6)\n      ? scheduleCallback$3(ImmediatePriority, cb)\n      : cb();\n  });\n}\nfunction requestTransitionLane() {\n  0 === currentEventTransitionLane &&\n    (currentEventTransitionLane = claimNextTransitionLane());\n  return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n  return null == actionProp ||\n    \"symbol\" === typeof actionProp ||\n    \"boolean\" === typeof actionProp\n    ? null\n    : \"function\" === typeof actionProp\n      ? actionProp\n      : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n  var temp = submitter.ownerDocument.createElement(\"input\");\n  temp.name = submitter.name;\n  temp.value = submitter.value;\n  form.id && temp.setAttribute(\"form\", form.id);\n  submitter.parentNode.insertBefore(temp, submitter);\n  form = new FormData(form);\n  temp.parentNode.removeChild(temp);\n  return form;\n}\nfunction extractEvents$1(\n  dispatchQueue,\n  domEventName,\n  maybeTargetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  if (\n    \"submit\" === domEventName &&\n    maybeTargetInst &&\n    maybeTargetInst.stateNode === nativeEventTarget\n  ) {\n    var action = coerceFormActionProp(\n        (nativeEventTarget[internalPropsKey] || null).action\n      ),\n      submitter = nativeEvent.submitter;\n    submitter &&\n      ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n        ? coerceFormActionProp(domEventName.formAction)\n        : submitter.getAttribute(\"formAction\")),\n      null !== domEventName && ((action = domEventName), (submitter = null)));\n    var event = new SyntheticEvent(\n      \"action\",\n      \"action\",\n      null,\n      nativeEvent,\n      nativeEventTarget\n    );\n    dispatchQueue.push({\n      event: event,\n      listeners: [\n        {\n          instance: null,\n          listener: function () {\n            if (nativeEvent.defaultPrevented) {\n              if (0 !== currentEventTransitionLane) {\n                var formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget);\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  null,\n                  formData\n                );\n              }\n            } else\n              \"function\" === typeof action &&\n                (event.preventDefault(),\n                (formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget)),\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  action,\n                  formData\n                ));\n          },\n          currentTarget: nativeEventTarget\n        }\n      ]\n    });\n  }\n}\nfor (\n  var i$jscomp$inline_1439 = 0;\n  i$jscomp$inline_1439 < simpleEventPluginEvents.length;\n  i$jscomp$inline_1439++\n) {\n  var eventName$jscomp$inline_1440 =\n      simpleEventPluginEvents[i$jscomp$inline_1439],\n    domEventName$jscomp$inline_1441 =\n      eventName$jscomp$inline_1440.toLowerCase(),\n    capitalizedEvent$jscomp$inline_1442 =\n      eventName$jscomp$inline_1440[0].toUpperCase() +\n      eventName$jscomp$inline_1440.slice(1);\n  registerSimpleEvent(\n    domEventName$jscomp$inline_1441,\n    \"on\" + capitalizedEvent$jscomp$inline_1442\n  );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n  \"onChange\",\n  \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onSelect\",\n  \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n    \" \"\n  )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n  \"compositionend\",\n  \"keypress\",\n  \"textInput\",\n  \"paste\"\n]);\nregisterTwoPhaseEvent(\n  \"onCompositionEnd\",\n  \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionStart\",\n  \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionUpdate\",\n  \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n    \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n      \" \"\n    ),\n  nonDelegatedEvents = new Set(\n    \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n      .split(\" \")\n      .concat(mediaEventTypes)\n  );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  eventSystemFlags = 0 !== (eventSystemFlags & 4);\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n      event = _dispatchQueue$i.event;\n    _dispatchQueue$i = _dispatchQueue$i.listeners;\n    a: {\n      var previousInstance = void 0;\n      if (eventSystemFlags)\n        for (\n          var i$jscomp$0 = _dispatchQueue$i.length - 1;\n          0 <= i$jscomp$0;\n          i$jscomp$0--\n        ) {\n          var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n            instance = _dispatchListeners$i.instance,\n            currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n      else\n        for (\n          i$jscomp$0 = 0;\n          i$jscomp$0 < _dispatchQueue$i.length;\n          i$jscomp$0++\n        ) {\n          _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n          instance = _dispatchListeners$i.instance;\n          currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n    }\n  }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n  void 0 === JSCompiler_inline_result &&\n    (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n      new Set());\n  var listenerSetKey = domEventName + \"__bubble\";\n  JSCompiler_inline_result.has(listenerSetKey) ||\n    (addTrappedEventListener(targetElement, domEventName, 2, !1),\n    JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  var eventSystemFlags = 0;\n  isCapturePhaseListener && (eventSystemFlags |= 4);\n  addTrappedEventListener(\n    target,\n    domEventName,\n    eventSystemFlags,\n    isCapturePhaseListener\n  );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = !0;\n    allNativeEvents.forEach(function (domEventName) {\n      \"selectionchange\" !== domEventName &&\n        (nonDelegatedEvents.has(domEventName) ||\n          listenToNativeEvent(domEventName, !1, rootContainerElement),\n        listenToNativeEvent(domEventName, !0, rootContainerElement));\n    });\n    var ownerDocument =\n      9 === rootContainerElement.nodeType\n        ? rootContainerElement\n        : rootContainerElement.ownerDocument;\n    null === ownerDocument ||\n      ownerDocument[listeningMarker] ||\n      ((ownerDocument[listeningMarker] = !0),\n      listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n  }\n}\nfunction addTrappedEventListener(\n  targetContainer,\n  domEventName,\n  eventSystemFlags,\n  isCapturePhaseListener\n) {\n  switch (getEventPriority(domEventName)) {\n    case 2:\n      var listenerWrapper = dispatchDiscreteEvent;\n      break;\n    case 8:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n    default:\n      listenerWrapper = dispatchEvent;\n  }\n  eventSystemFlags = listenerWrapper.bind(\n    null,\n    domEventName,\n    eventSystemFlags,\n    targetContainer\n  );\n  listenerWrapper = void 0;\n  !passiveBrowserEventsSupported ||\n    (\"touchstart\" !== domEventName &&\n      \"touchmove\" !== domEventName &&\n      \"wheel\" !== domEventName) ||\n    (listenerWrapper = !0);\n  isCapturePhaseListener\n    ? void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          capture: !0,\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n    : void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n  domEventName,\n  eventSystemFlags,\n  nativeEvent,\n  targetInst$jscomp$0,\n  targetContainer\n) {\n  var ancestorInst = targetInst$jscomp$0;\n  if (\n    0 === (eventSystemFlags & 1) &&\n    0 === (eventSystemFlags & 2) &&\n    null !== targetInst$jscomp$0\n  )\n    a: for (;;) {\n      if (null === targetInst$jscomp$0) return;\n      var nodeTag = targetInst$jscomp$0.tag;\n      if (3 === nodeTag || 4 === nodeTag) {\n        var container = targetInst$jscomp$0.stateNode.containerInfo;\n        if (\n          container === targetContainer ||\n          (8 === container.nodeType && container.parentNode === targetContainer)\n        )\n          break;\n        if (4 === nodeTag)\n          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n            var grandTag = nodeTag.tag;\n            if (3 === grandTag || 4 === grandTag)\n              if (\n                ((grandTag = nodeTag.stateNode.containerInfo),\n                grandTag === targetContainer ||\n                  (8 === grandTag.nodeType &&\n                    grandTag.parentNode === targetContainer))\n              )\n                return;\n            nodeTag = nodeTag.return;\n          }\n        for (; null !== container; ) {\n          nodeTag = getClosestInstanceFromNode(container);\n          if (null === nodeTag) return;\n          grandTag = nodeTag.tag;\n          if (\n            5 === grandTag ||\n            6 === grandTag ||\n            26 === grandTag ||\n            27 === grandTag\n          ) {\n            targetInst$jscomp$0 = ancestorInst = nodeTag;\n            continue a;\n          }\n          container = container.parentNode;\n        }\n      }\n      targetInst$jscomp$0 = targetInst$jscomp$0.return;\n    }\n  batchedUpdates$1(function () {\n    var targetInst = ancestorInst,\n      nativeEventTarget = getEventTarget(nativeEvent),\n      dispatchQueue = [];\n    a: {\n      var reactName = topLevelEventsToReactNames.get(domEventName);\n      if (void 0 !== reactName) {\n        var SyntheticEventCtor = SyntheticEvent,\n          reactEventType = domEventName;\n        switch (domEventName) {\n          case \"keypress\":\n            if (0 === getEventCharCode(nativeEvent)) break a;\n          case \"keydown\":\n          case \"keyup\":\n            SyntheticEventCtor = SyntheticKeyboardEvent;\n            break;\n          case \"focusin\":\n            reactEventType = \"focus\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"focusout\":\n            reactEventType = \"blur\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"beforeblur\":\n          case \"afterblur\":\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"click\":\n            if (2 === nativeEvent.button) break a;\n          case \"auxclick\":\n          case \"dblclick\":\n          case \"mousedown\":\n          case \"mousemove\":\n          case \"mouseup\":\n          case \"mouseout\":\n          case \"mouseover\":\n          case \"contextmenu\":\n            SyntheticEventCtor = SyntheticMouseEvent;\n            break;\n          case \"drag\":\n          case \"dragend\":\n          case \"dragenter\":\n          case \"dragexit\":\n          case \"dragleave\":\n          case \"dragover\":\n          case \"dragstart\":\n          case \"drop\":\n            SyntheticEventCtor = SyntheticDragEvent;\n            break;\n          case \"touchcancel\":\n          case \"touchend\":\n          case \"touchmove\":\n          case \"touchstart\":\n            SyntheticEventCtor = SyntheticTouchEvent;\n            break;\n          case ANIMATION_END:\n          case ANIMATION_ITERATION:\n          case ANIMATION_START:\n            SyntheticEventCtor = SyntheticAnimationEvent;\n            break;\n          case TRANSITION_END:\n            SyntheticEventCtor = SyntheticTransitionEvent;\n            break;\n          case \"scroll\":\n          case \"scrollend\":\n            SyntheticEventCtor = SyntheticUIEvent;\n            break;\n          case \"wheel\":\n            SyntheticEventCtor = SyntheticWheelEvent;\n            break;\n          case \"copy\":\n          case \"cut\":\n          case \"paste\":\n            SyntheticEventCtor = SyntheticClipboardEvent;\n            break;\n          case \"gotpointercapture\":\n          case \"lostpointercapture\":\n          case \"pointercancel\":\n          case \"pointerdown\":\n          case \"pointermove\":\n          case \"pointerout\":\n          case \"pointerover\":\n          case \"pointerup\":\n            SyntheticEventCtor = SyntheticPointerEvent;\n            break;\n          case \"toggle\":\n          case \"beforetoggle\":\n            SyntheticEventCtor = SyntheticToggleEvent;\n        }\n        var inCapturePhase = 0 !== (eventSystemFlags & 4),\n          accumulateTargetOnly =\n            !inCapturePhase &&\n            (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n          reactEventName = inCapturePhase\n            ? null !== reactName\n              ? reactName + \"Capture\"\n              : null\n            : reactName;\n        inCapturePhase = [];\n        for (\n          var instance = targetInst, lastHostComponent;\n          null !== instance;\n\n        ) {\n          var _instance = instance;\n          lastHostComponent = _instance.stateNode;\n          _instance = _instance.tag;\n          (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n            null === lastHostComponent ||\n            null === reactEventName ||\n            ((_instance = getListener(instance, reactEventName)),\n            null != _instance &&\n              inCapturePhase.push(\n                createDispatchListener(instance, _instance, lastHostComponent)\n              ));\n          if (accumulateTargetOnly) break;\n          instance = instance.return;\n        }\n        0 < inCapturePhase.length &&\n          ((reactName = new SyntheticEventCtor(\n            reactName,\n            reactEventType,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n      }\n    }\n    if (0 === (eventSystemFlags & 7)) {\n      a: {\n        reactName =\n          \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n        SyntheticEventCtor =\n          \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n        if (\n          reactName &&\n          nativeEvent !== currentReplayingEvent &&\n          (reactEventType =\n            nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n          (getClosestInstanceFromNode(reactEventType) ||\n            reactEventType[internalContainerInstanceKey])\n        )\n          break a;\n        if (SyntheticEventCtor || reactName) {\n          reactName =\n            nativeEventTarget.window === nativeEventTarget\n              ? nativeEventTarget\n              : (reactName = nativeEventTarget.ownerDocument)\n                ? reactName.defaultView || reactName.parentWindow\n                : window;\n          if (SyntheticEventCtor) {\n            if (\n              ((reactEventType =\n                nativeEvent.relatedTarget || nativeEvent.toElement),\n              (SyntheticEventCtor = targetInst),\n              (reactEventType = reactEventType\n                ? getClosestInstanceFromNode(reactEventType)\n                : null),\n              null !== reactEventType &&\n                ((accumulateTargetOnly =\n                  getNearestMountedFiber(reactEventType)),\n                (inCapturePhase = reactEventType.tag),\n                reactEventType !== accumulateTargetOnly ||\n                  (5 !== inCapturePhase &&\n                    27 !== inCapturePhase &&\n                    6 !== inCapturePhase)))\n            )\n              reactEventType = null;\n          } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n          if (SyntheticEventCtor !== reactEventType) {\n            inCapturePhase = SyntheticMouseEvent;\n            _instance = \"onMouseLeave\";\n            reactEventName = \"onMouseEnter\";\n            instance = \"mouse\";\n            if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n              (inCapturePhase = SyntheticPointerEvent),\n                (_instance = \"onPointerLeave\"),\n                (reactEventName = \"onPointerEnter\"),\n                (instance = \"pointer\");\n            accumulateTargetOnly =\n              null == SyntheticEventCtor\n                ? reactName\n                : getNodeFromInstance(SyntheticEventCtor);\n            lastHostComponent =\n              null == reactEventType\n                ? reactName\n                : getNodeFromInstance(reactEventType);\n            reactName = new inCapturePhase(\n              _instance,\n              instance + \"leave\",\n              SyntheticEventCtor,\n              nativeEvent,\n              nativeEventTarget\n            );\n            reactName.target = accumulateTargetOnly;\n            reactName.relatedTarget = lastHostComponent;\n            _instance = null;\n            getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n              ((inCapturePhase = new inCapturePhase(\n                reactEventName,\n                instance + \"enter\",\n                reactEventType,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (inCapturePhase.target = lastHostComponent),\n              (inCapturePhase.relatedTarget = accumulateTargetOnly),\n              (_instance = inCapturePhase));\n            accumulateTargetOnly = _instance;\n            if (SyntheticEventCtor && reactEventType)\n              b: {\n                inCapturePhase = SyntheticEventCtor;\n                reactEventName = reactEventType;\n                instance = 0;\n                for (\n                  lastHostComponent = inCapturePhase;\n                  lastHostComponent;\n                  lastHostComponent = getParent(lastHostComponent)\n                )\n                  instance++;\n                lastHostComponent = 0;\n                for (\n                  _instance = reactEventName;\n                  _instance;\n                  _instance = getParent(_instance)\n                )\n                  lastHostComponent++;\n                for (; 0 < instance - lastHostComponent; )\n                  (inCapturePhase = getParent(inCapturePhase)), instance--;\n                for (; 0 < lastHostComponent - instance; )\n                  (reactEventName = getParent(reactEventName)),\n                    lastHostComponent--;\n                for (; instance--; ) {\n                  if (\n                    inCapturePhase === reactEventName ||\n                    (null !== reactEventName &&\n                      inCapturePhase === reactEventName.alternate)\n                  )\n                    break b;\n                  inCapturePhase = getParent(inCapturePhase);\n                  reactEventName = getParent(reactEventName);\n                }\n                inCapturePhase = null;\n              }\n            else inCapturePhase = null;\n            null !== SyntheticEventCtor &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                reactName,\n                SyntheticEventCtor,\n                inCapturePhase,\n                !1\n              );\n            null !== reactEventType &&\n              null !== accumulateTargetOnly &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                accumulateTargetOnly,\n                reactEventType,\n                inCapturePhase,\n                !0\n              );\n          }\n        }\n      }\n      a: {\n        reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n        SyntheticEventCtor =\n          reactName.nodeName && reactName.nodeName.toLowerCase();\n        if (\n          \"select\" === SyntheticEventCtor ||\n          (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n        )\n          var getTargetInstFunc = getTargetInstForChangeEvent;\n        else if (isTextInputElement(reactName))\n          if (isInputEventSupported)\n            getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n          else {\n            getTargetInstFunc = getTargetInstForInputEventPolyfill;\n            var handleEventFunc = handleEventsForInputEventPolyfill;\n          }\n        else\n          (SyntheticEventCtor = reactName.nodeName),\n            !SyntheticEventCtor ||\n            \"input\" !== SyntheticEventCtor.toLowerCase() ||\n            (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n              ? targetInst &&\n                isCustomElement(targetInst.elementType) &&\n                (getTargetInstFunc = getTargetInstForChangeEvent)\n              : (getTargetInstFunc = getTargetInstForClickEvent);\n        if (\n          getTargetInstFunc &&\n          (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n        ) {\n          createAndAccumulateChangeEvent(\n            dispatchQueue,\n            getTargetInstFunc,\n            nativeEvent,\n            nativeEventTarget\n          );\n          break a;\n        }\n        handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n        \"focusout\" === domEventName &&\n          targetInst &&\n          \"number\" === reactName.type &&\n          null != targetInst.memoizedProps.value &&\n          setDefaultValue(reactName, \"number\", reactName.value);\n      }\n      handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n      switch (domEventName) {\n        case \"focusin\":\n          if (\n            isTextInputElement(handleEventFunc) ||\n            \"true\" === handleEventFunc.contentEditable\n          )\n            (activeElement = handleEventFunc),\n              (activeElementInst = targetInst),\n              (lastSelection = null);\n          break;\n        case \"focusout\":\n          lastSelection = activeElementInst = activeElement = null;\n          break;\n        case \"mousedown\":\n          mouseDown = !0;\n          break;\n        case \"contextmenu\":\n        case \"mouseup\":\n        case \"dragend\":\n          mouseDown = !1;\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n          break;\n        case \"selectionchange\":\n          if (skipSelectionChangeEvent) break;\n        case \"keydown\":\n        case \"keyup\":\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      }\n      var fallbackData;\n      if (canUseCompositionEvent)\n        b: {\n          switch (domEventName) {\n            case \"compositionstart\":\n              var eventType = \"onCompositionStart\";\n              break b;\n            case \"compositionend\":\n              eventType = \"onCompositionEnd\";\n              break b;\n            case \"compositionupdate\":\n              eventType = \"onCompositionUpdate\";\n              break b;\n          }\n          eventType = void 0;\n        }\n      else\n        isComposing\n          ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n            (eventType = \"onCompositionEnd\")\n          : \"keydown\" === domEventName &&\n            229 === nativeEvent.keyCode &&\n            (eventType = \"onCompositionStart\");\n      eventType &&\n        (useFallbackCompositionData &&\n          \"ko\" !== nativeEvent.locale &&\n          (isComposing || \"onCompositionStart\" !== eventType\n            ? \"onCompositionEnd\" === eventType &&\n              isComposing &&\n              (fallbackData = getData())\n            : ((root = nativeEventTarget),\n              (startText = \"value\" in root ? root.value : root.textContent),\n              (isComposing = !0))),\n        (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n        0 < handleEventFunc.length &&\n          ((eventType = new SyntheticCompositionEvent(\n            eventType,\n            domEventName,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n          fallbackData\n            ? (eventType.data = fallbackData)\n            : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n              null !== fallbackData && (eventType.data = fallbackData))));\n      if (\n        (fallbackData = canUseTextInputEvent\n          ? getNativeBeforeInputChars(domEventName, nativeEvent)\n          : getFallbackBeforeInputChars(domEventName, nativeEvent))\n      )\n        (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n          0 < eventType.length &&\n            ((handleEventFunc = new SyntheticCompositionEvent(\n              \"onBeforeInput\",\n              \"beforeinput\",\n              null,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            dispatchQueue.push({\n              event: handleEventFunc,\n              listeners: eventType\n            }),\n            (handleEventFunc.data = fallbackData));\n      extractEvents$1(\n        dispatchQueue,\n        domEventName,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      );\n    }\n    processDispatchQueue(dispatchQueue, eventSystemFlags);\n  });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  for (\n    var captureName = reactName + \"Capture\", listeners = [];\n    null !== targetFiber;\n\n  ) {\n    var _instance2 = targetFiber,\n      stateNode = _instance2.stateNode;\n    _instance2 = _instance2.tag;\n    (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n      null === stateNode ||\n      ((_instance2 = getListener(targetFiber, captureName)),\n      null != _instance2 &&\n        listeners.unshift(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ),\n      (_instance2 = getListener(targetFiber, reactName)),\n      null != _instance2 &&\n        listeners.push(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ));\n    targetFiber = targetFiber.return;\n  }\n  return listeners;\n}\nfunction getParent(inst) {\n  if (null === inst) return null;\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag && 27 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n  dispatchQueue,\n  event,\n  target,\n  common,\n  inCapturePhase\n) {\n  for (\n    var registrationName = event._reactName, listeners = [];\n    null !== target && target !== common;\n\n  ) {\n    var _instance3 = target,\n      alternate = _instance3.alternate,\n      stateNode = _instance3.stateNode;\n    _instance3 = _instance3.tag;\n    if (null !== alternate && alternate === common) break;\n    (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n      null === stateNode ||\n      ((alternate = stateNode),\n      inCapturePhase\n        ? ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.unshift(\n              createDispatchListener(target, stateNode, alternate)\n            ))\n        : inCapturePhase ||\n          ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.push(\n              createDispatchListener(target, stateNode, alternate)\n            )));\n    target = target.return;\n  }\n  0 !== listeners.length &&\n    dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n  NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  return (\"string\" === typeof markup ? markup : \"\" + markup)\n    .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n    .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n  clientText = normalizeMarkupForTextOrAttribute(clientText);\n  return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction noop$1() {}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"children\":\n      \"string\" === typeof value\n        ? \"body\" === tag ||\n          (\"textarea\" === tag && \"\" === value) ||\n          setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          \"body\" !== tag &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"className\":\n      setValueForKnownAttribute(domElement, \"class\", value);\n      break;\n    case \"tabIndex\":\n      setValueForKnownAttribute(domElement, \"tabindex\", value);\n      break;\n    case \"dir\":\n    case \"role\":\n    case \"viewBox\":\n    case \"width\":\n    case \"height\":\n      setValueForKnownAttribute(domElement, key, value);\n      break;\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"data\":\n      if (\"object\" !== tag) {\n        setValueForKnownAttribute(domElement, \"data\", value);\n        break;\n      }\n    case \"src\":\n    case \"href\":\n      if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"action\":\n    case \"formAction\":\n      if (\"function\" === typeof value) {\n        domElement.setAttribute(\n          key,\n          \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n        );\n        break;\n      } else\n        \"function\" === typeof prevValue &&\n          (\"formAction\" === key\n            ? (\"input\" !== tag &&\n                setProp(domElement, tag, \"name\", props.name, props, null),\n              setProp(\n                domElement,\n                tag,\n                \"formEncType\",\n                props.formEncType,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formMethod\",\n                props.formMethod,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formTarget\",\n                props.formTarget,\n                props,\n                null\n              ))\n            : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n              setProp(domElement, tag, \"method\", props.method, props, null),\n              setProp(domElement, tag, \"target\", props.target, props, null)));\n      if (\n        null == value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"multiple\":\n      domElement.multiple =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"muted\":\n      domElement.muted =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"defaultValue\":\n    case \"defaultChecked\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"autoFocus\":\n      break;\n    case \"xlinkHref\":\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"boolean\" === typeof value ||\n        \"symbol\" === typeof value\n      ) {\n        domElement.removeAttribute(\"xlink:href\");\n        break;\n      }\n      key = sanitizeURL(\"\" + value);\n      domElement.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        key\n      );\n      break;\n    case \"contentEditable\":\n    case \"spellCheck\":\n    case \"draggable\":\n    case \"value\":\n    case \"autoReverse\":\n    case \"externalResourcesRequired\":\n    case \"focusable\":\n    case \"preserveAlpha\":\n      null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\" + value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"inert\":\n    case \"allowFullScreen\":\n    case \"async\":\n    case \"autoPlay\":\n    case \"controls\":\n    case \"default\":\n    case \"defer\":\n    case \"disabled\":\n    case \"disablePictureInPicture\":\n    case \"disableRemotePlayback\":\n    case \"formNoValidate\":\n    case \"hidden\":\n    case \"loop\":\n    case \"noModule\":\n    case \"noValidate\":\n    case \"open\":\n    case \"playsInline\":\n    case \"readOnly\":\n    case \"required\":\n    case \"reversed\":\n    case \"scoped\":\n    case \"seamless\":\n    case \"itemScope\":\n      value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\")\n        : domElement.removeAttribute(key);\n      break;\n    case \"capture\":\n    case \"download\":\n      !0 === value\n        ? domElement.setAttribute(key, \"\")\n        : !1 !== value &&\n            null != value &&\n            \"function\" !== typeof value &&\n            \"symbol\" !== typeof value\n          ? domElement.setAttribute(key, value)\n          : domElement.removeAttribute(key);\n      break;\n    case \"cols\":\n    case \"rows\":\n    case \"size\":\n    case \"span\":\n      null != value &&\n      \"function\" !== typeof value &&\n      \"symbol\" !== typeof value &&\n      !isNaN(value) &&\n      1 <= value\n        ? domElement.setAttribute(key, value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"rowSpan\":\n    case \"start\":\n      null == value ||\n      \"function\" === typeof value ||\n      \"symbol\" === typeof value ||\n      isNaN(value)\n        ? domElement.removeAttribute(key)\n        : domElement.setAttribute(key, value);\n      break;\n    case \"popover\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      setValueForAttribute(domElement, \"popover\", value);\n      break;\n    case \"xlinkActuate\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:actuate\",\n        value\n      );\n      break;\n    case \"xlinkArcrole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:arcrole\",\n        value\n      );\n      break;\n    case \"xlinkRole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:role\",\n        value\n      );\n      break;\n    case \"xlinkShow\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:show\",\n        value\n      );\n      break;\n    case \"xlinkTitle\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:title\",\n        value\n      );\n      break;\n    case \"xlinkType\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:type\",\n        value\n      );\n      break;\n    case \"xmlBase\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:base\",\n        value\n      );\n      break;\n    case \"xmlLang\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:lang\",\n        value\n      );\n      break;\n    case \"xmlSpace\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:space\",\n        value\n      );\n      break;\n    case \"is\":\n      setValueForAttribute(domElement, \"is\", value);\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (\n        !(2 < key.length) ||\n        (\"o\" !== key[0] && \"O\" !== key[0]) ||\n        (\"n\" !== key[1] && \"N\" !== key[1])\n      )\n        (key = aliases.get(key) || key),\n          setValueForAttribute(domElement, key, value);\n  }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"children\":\n      \"string\" === typeof value\n        ? setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (!registrationNameDependencies.hasOwnProperty(key))\n        a: {\n          if (\n            \"o\" === key[0] &&\n            \"n\" === key[1] &&\n            ((props = key.endsWith(\"Capture\")),\n            (tag = key.slice(2, props ? key.length - 7 : void 0)),\n            (prevValue = domElement[internalPropsKey] || null),\n            (prevValue = null != prevValue ? prevValue[key] : null),\n            \"function\" === typeof prevValue &&\n              domElement.removeEventListener(tag, prevValue, props),\n            \"function\" === typeof value)\n          ) {\n            \"function\" !== typeof prevValue &&\n              null !== prevValue &&\n              (key in domElement\n                ? (domElement[key] = null)\n                : domElement.hasAttribute(key) &&\n                  domElement.removeAttribute(key));\n            domElement.addEventListener(tag, value, props);\n            break a;\n          }\n          key in domElement\n            ? (domElement[key] = value)\n            : !0 === value\n              ? domElement.setAttribute(key, \"\")\n              : setValueForAttribute(domElement, key, value);\n        }\n  }\n}\nfunction setInitialProperties(domElement, tag, props) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"img\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      var hasSrc = !1,\n        hasSrcSet = !1,\n        propKey;\n      for (propKey in props)\n        if (props.hasOwnProperty(propKey)) {\n          var propValue = props[propKey];\n          if (null != propValue)\n            switch (propKey) {\n              case \"src\":\n                hasSrc = !0;\n                break;\n              case \"srcSet\":\n                hasSrcSet = !0;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                throw Error(formatProdErrorMessage(137, tag));\n              default:\n                setProp(domElement, tag, propKey, propValue, props, null);\n            }\n        }\n      hasSrcSet &&\n        setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n      hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n      return;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      var defaultValue = (propKey = propValue = hasSrcSet = null),\n        checked = null,\n        defaultChecked = null;\n      for (hasSrc in props)\n        if (props.hasOwnProperty(hasSrc)) {\n          var propValue$186 = props[hasSrc];\n          if (null != propValue$186)\n            switch (hasSrc) {\n              case \"name\":\n                hasSrcSet = propValue$186;\n                break;\n              case \"type\":\n                propValue = propValue$186;\n                break;\n              case \"checked\":\n                checked = propValue$186;\n                break;\n              case \"defaultChecked\":\n                defaultChecked = propValue$186;\n                break;\n              case \"value\":\n                propKey = propValue$186;\n                break;\n              case \"defaultValue\":\n                defaultValue = propValue$186;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                if (null != propValue$186)\n                  throw Error(formatProdErrorMessage(137, tag));\n                break;\n              default:\n                setProp(domElement, tag, hasSrc, propValue$186, props, null);\n            }\n        }\n      initInput(\n        domElement,\n        propKey,\n        defaultValue,\n        checked,\n        defaultChecked,\n        propValue,\n        hasSrcSet,\n        !1\n      );\n      track(domElement);\n      return;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      hasSrc = propValue = propKey = null;\n      for (hasSrcSet in props)\n        if (\n          props.hasOwnProperty(hasSrcSet) &&\n          ((defaultValue = props[hasSrcSet]), null != defaultValue)\n        )\n          switch (hasSrcSet) {\n            case \"value\":\n              propKey = defaultValue;\n              break;\n            case \"defaultValue\":\n              propValue = defaultValue;\n              break;\n            case \"multiple\":\n              hasSrc = defaultValue;\n            default:\n              setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n          }\n      tag = propKey;\n      props = propValue;\n      domElement.multiple = !!hasSrc;\n      null != tag\n        ? updateOptions(domElement, !!hasSrc, tag, !1)\n        : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n      return;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      propKey = hasSrcSet = hasSrc = null;\n      for (propValue in props)\n        if (\n          props.hasOwnProperty(propValue) &&\n          ((defaultValue = props[propValue]), null != defaultValue)\n        )\n          switch (propValue) {\n            case \"value\":\n              hasSrc = defaultValue;\n              break;\n            case \"defaultValue\":\n              hasSrcSet = defaultValue;\n              break;\n            case \"children\":\n              propKey = defaultValue;\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              setProp(domElement, tag, propValue, defaultValue, props, null);\n          }\n      initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n      track(domElement);\n      return;\n    case \"option\":\n      for (checked in props)\n        if (\n          props.hasOwnProperty(checked) &&\n          ((hasSrc = props[checked]), null != hasSrc)\n        )\n          switch (checked) {\n            case \"selected\":\n              domElement.selected =\n                hasSrc &&\n                \"function\" !== typeof hasSrc &&\n                \"symbol\" !== typeof hasSrc;\n              break;\n            default:\n              setProp(domElement, tag, checked, hasSrc, props, null);\n          }\n      return;\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", domElement);\n      listenToNonDelegatedEvent(\"close\", domElement);\n      break;\n    case \"iframe\":\n    case \"object\":\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n        listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n      break;\n    case \"image\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      break;\n    case \"embed\":\n    case \"source\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", domElement),\n        listenToNonDelegatedEvent(\"load\", domElement);\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (defaultChecked in props)\n        if (\n          props.hasOwnProperty(defaultChecked) &&\n          ((hasSrc = props[defaultChecked]), null != hasSrc)\n        )\n          switch (defaultChecked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              throw Error(formatProdErrorMessage(137, tag));\n            default:\n              setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (propValue$186 in props)\n          props.hasOwnProperty(propValue$186) &&\n            ((hasSrc = props[propValue$186]),\n            void 0 !== hasSrc &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propValue$186,\n                hasSrc,\n                props,\n                void 0\n              ));\n        return;\n      }\n  }\n  for (defaultValue in props)\n    props.hasOwnProperty(defaultValue) &&\n      ((hasSrc = props[defaultValue]),\n      null != hasSrc &&\n        setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"input\":\n      var name = null,\n        type = null,\n        value = null,\n        defaultValue = null,\n        lastDefaultValue = null,\n        checked = null,\n        defaultChecked = null;\n      for (propKey in lastProps) {\n        var lastProp = lastProps[propKey];\n        if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n          switch (propKey) {\n            case \"checked\":\n              break;\n            case \"value\":\n              break;\n            case \"defaultValue\":\n              lastDefaultValue = lastProp;\n            default:\n              nextProps.hasOwnProperty(propKey) ||\n                setProp(domElement, tag, propKey, null, nextProps, lastProp);\n          }\n      }\n      for (var propKey$203 in nextProps) {\n        var propKey = nextProps[propKey$203];\n        lastProp = lastProps[propKey$203];\n        if (\n          nextProps.hasOwnProperty(propKey$203) &&\n          (null != propKey || null != lastProp)\n        )\n          switch (propKey$203) {\n            case \"type\":\n              type = propKey;\n              break;\n            case \"name\":\n              name = propKey;\n              break;\n            case \"checked\":\n              checked = propKey;\n              break;\n            case \"defaultChecked\":\n              defaultChecked = propKey;\n              break;\n            case \"value\":\n              value = propKey;\n              break;\n            case \"defaultValue\":\n              defaultValue = propKey;\n              break;\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              propKey !== lastProp &&\n                setProp(\n                  domElement,\n                  tag,\n                  propKey$203,\n                  propKey,\n                  nextProps,\n                  lastProp\n                );\n          }\n      }\n      updateInput(\n        domElement,\n        value,\n        defaultValue,\n        lastDefaultValue,\n        checked,\n        defaultChecked,\n        type,\n        name\n      );\n      return;\n    case \"select\":\n      propKey = value = defaultValue = propKey$203 = null;\n      for (type in lastProps)\n        if (\n          ((lastDefaultValue = lastProps[type]),\n          lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n        )\n          switch (type) {\n            case \"value\":\n              break;\n            case \"multiple\":\n              propKey = lastDefaultValue;\n            default:\n              nextProps.hasOwnProperty(type) ||\n                setProp(\n                  domElement,\n                  tag,\n                  type,\n                  null,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      for (name in nextProps)\n        if (\n          ((type = nextProps[name]),\n          (lastDefaultValue = lastProps[name]),\n          nextProps.hasOwnProperty(name) &&\n            (null != type || null != lastDefaultValue))\n        )\n          switch (name) {\n            case \"value\":\n              propKey$203 = type;\n              break;\n            case \"defaultValue\":\n              defaultValue = type;\n              break;\n            case \"multiple\":\n              value = type;\n            default:\n              type !== lastDefaultValue &&\n                setProp(\n                  domElement,\n                  tag,\n                  name,\n                  type,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      tag = defaultValue;\n      lastProps = value;\n      nextProps = propKey;\n      null != propKey$203\n        ? updateOptions(domElement, !!lastProps, propKey$203, !1)\n        : !!nextProps !== !!lastProps &&\n          (null != tag\n            ? updateOptions(domElement, !!lastProps, tag, !0)\n            : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n      return;\n    case \"textarea\":\n      propKey = propKey$203 = null;\n      for (defaultValue in lastProps)\n        if (\n          ((name = lastProps[defaultValue]),\n          lastProps.hasOwnProperty(defaultValue) &&\n            null != name &&\n            !nextProps.hasOwnProperty(defaultValue))\n        )\n          switch (defaultValue) {\n            case \"value\":\n              break;\n            case \"children\":\n              break;\n            default:\n              setProp(domElement, tag, defaultValue, null, nextProps, name);\n          }\n      for (value in nextProps)\n        if (\n          ((name = nextProps[value]),\n          (type = lastProps[value]),\n          nextProps.hasOwnProperty(value) && (null != name || null != type))\n        )\n          switch (value) {\n            case \"value\":\n              propKey$203 = name;\n              break;\n            case \"defaultValue\":\n              propKey = name;\n              break;\n            case \"children\":\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != name) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              name !== type &&\n                setProp(domElement, tag, value, name, nextProps, type);\n          }\n      updateTextarea(domElement, propKey$203, propKey);\n      return;\n    case \"option\":\n      for (var propKey$219 in lastProps)\n        if (\n          ((propKey$203 = lastProps[propKey$219]),\n          lastProps.hasOwnProperty(propKey$219) &&\n            null != propKey$203 &&\n            !nextProps.hasOwnProperty(propKey$219))\n        )\n          switch (propKey$219) {\n            case \"selected\":\n              domElement.selected = !1;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                propKey$219,\n                null,\n                nextProps,\n                propKey$203\n              );\n          }\n      for (lastDefaultValue in nextProps)\n        if (\n          ((propKey$203 = nextProps[lastDefaultValue]),\n          (propKey = lastProps[lastDefaultValue]),\n          nextProps.hasOwnProperty(lastDefaultValue) &&\n            propKey$203 !== propKey &&\n            (null != propKey$203 || null != propKey))\n        )\n          switch (lastDefaultValue) {\n            case \"selected\":\n              domElement.selected =\n                propKey$203 &&\n                \"function\" !== typeof propKey$203 &&\n                \"symbol\" !== typeof propKey$203;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                lastDefaultValue,\n                propKey$203,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    case \"img\":\n    case \"link\":\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"embed\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"source\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (var propKey$224 in lastProps)\n        (propKey$203 = lastProps[propKey$224]),\n          lastProps.hasOwnProperty(propKey$224) &&\n            null != propKey$203 &&\n            !nextProps.hasOwnProperty(propKey$224) &&\n            setProp(domElement, tag, propKey$224, null, nextProps, propKey$203);\n      for (checked in nextProps)\n        if (\n          ((propKey$203 = nextProps[checked]),\n          (propKey = lastProps[checked]),\n          nextProps.hasOwnProperty(checked) &&\n            propKey$203 !== propKey &&\n            (null != propKey$203 || null != propKey))\n        )\n          switch (checked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey$203)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                checked,\n                propKey$203,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (var propKey$229 in lastProps)\n          (propKey$203 = lastProps[propKey$229]),\n            lastProps.hasOwnProperty(propKey$229) &&\n              void 0 !== propKey$203 &&\n              !nextProps.hasOwnProperty(propKey$229) &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propKey$229,\n                void 0,\n                nextProps,\n                propKey$203\n              );\n        for (defaultChecked in nextProps)\n          (propKey$203 = nextProps[defaultChecked]),\n            (propKey = lastProps[defaultChecked]),\n            !nextProps.hasOwnProperty(defaultChecked) ||\n              propKey$203 === propKey ||\n              (void 0 === propKey$203 && void 0 === propKey) ||\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                defaultChecked,\n                propKey$203,\n                nextProps,\n                propKey\n              );\n        return;\n      }\n  }\n  for (var propKey$234 in lastProps)\n    (propKey$203 = lastProps[propKey$234]),\n      lastProps.hasOwnProperty(propKey$234) &&\n        null != propKey$203 &&\n        !nextProps.hasOwnProperty(propKey$234) &&\n        setProp(domElement, tag, propKey$234, null, nextProps, propKey$203);\n  for (lastProp in nextProps)\n    (propKey$203 = nextProps[lastProp]),\n      (propKey = lastProps[lastProp]),\n      !nextProps.hasOwnProperty(lastProp) ||\n        propKey$203 === propKey ||\n        (null == propKey$203 && null == propKey) ||\n        setProp(domElement, tag, lastProp, propKey$203, nextProps, propKey);\n}\nvar eventsEnabled = null,\n  selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return 9 === rootContainerElement.nodeType\n    ? rootContainerElement\n    : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n  switch (namespaceURI) {\n    case \"http://www.w3.org/2000/svg\":\n      return 1;\n    case \"http://www.w3.org/1998/Math/MathML\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n  if (0 === parentNamespace)\n    switch (type) {\n      case \"svg\":\n        return 1;\n      case \"math\":\n        return 2;\n      default:\n        return 0;\n    }\n  return 1 === parentNamespace && \"foreignObject\" === type\n    ? 0\n    : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n  return (\n    \"textarea\" === type ||\n    \"noscript\" === type ||\n    \"string\" === typeof props.children ||\n    \"number\" === typeof props.children ||\n    \"bigint\" === typeof props.children ||\n    (\"object\" === typeof props.dangerouslySetInnerHTML &&\n      null !== props.dangerouslySetInnerHTML &&\n      null != props.dangerouslySetInnerHTML.__html)\n  );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n  var event = window.event;\n  if (event && \"popstate\" === event.type) {\n    if (event === currentPopstateTransitionEvent) return !1;\n    currentPopstateTransitionEvent = event;\n    return !0;\n  }\n  currentPopstateTransitionEvent = null;\n  return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n  cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n  localPromise = \"function\" === typeof Promise ? Promise : void 0,\n  scheduleMicrotask =\n    \"function\" === typeof queueMicrotask\n      ? queueMicrotask\n      : \"undefined\" !== typeof localPromise\n        ? function (callback) {\n            return localPromise\n              .resolve(null)\n              .then(callback)\n              .catch(handleErrorInNextTick);\n          }\n        : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n  var node = suspenseInstance,\n    depth = 0;\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node)) {\n        if (0 === depth) {\n          parentInstance.removeChild(nextNode);\n          retryIfBlockedOn(suspenseInstance);\n          return;\n        }\n        depth--;\n      } else (\"$\" !== node && \"$?\" !== node && \"$!\" !== node) || depth++;\n    node = nextNode;\n  } while (node);\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction clearContainerSparingly(container) {\n  var nextNode = container.firstChild;\n  nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n  for (; nextNode; ) {\n    var node = nextNode;\n    nextNode = nextNode.nextSibling;\n    switch (node.nodeName) {\n      case \"HTML\":\n      case \"HEAD\":\n      case \"BODY\":\n        clearContainerSparingly(node);\n        detachDeletedInstance(node);\n        continue;\n      case \"SCRIPT\":\n      case \"STYLE\":\n        continue;\n      case \"LINK\":\n        if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n    }\n    container.removeChild(node);\n  }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n  for (; 1 === instance.nodeType; ) {\n    var anyProps = props;\n    if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n      if (\n        !inRootOrSingleton &&\n        (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n      )\n        break;\n    } else if (!inRootOrSingleton)\n      if (\"input\" === type && \"hidden\" === instance.type) {\n        var name = null == anyProps.name ? null : \"\" + anyProps.name;\n        if (\n          \"hidden\" === anyProps.type &&\n          instance.getAttribute(\"name\") === name\n        )\n          return instance;\n      } else return instance;\n    else if (!instance[internalHoistableMarker])\n      switch (type) {\n        case \"meta\":\n          if (!instance.hasAttribute(\"itemprop\")) break;\n          return instance;\n        case \"link\":\n          name = instance.getAttribute(\"rel\");\n          if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n            break;\n          else if (\n            name !== anyProps.rel ||\n            instance.getAttribute(\"href\") !==\n              (null == anyProps.href ? null : anyProps.href) ||\n            instance.getAttribute(\"crossorigin\") !==\n              (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n            instance.getAttribute(\"title\") !==\n              (null == anyProps.title ? null : anyProps.title)\n          )\n            break;\n          return instance;\n        case \"style\":\n          if (instance.hasAttribute(\"data-precedence\")) break;\n          return instance;\n        case \"script\":\n          name = instance.getAttribute(\"src\");\n          if (\n            (name !== (null == anyProps.src ? null : anyProps.src) ||\n              instance.getAttribute(\"type\") !==\n                (null == anyProps.type ? null : anyProps.type) ||\n              instance.getAttribute(\"crossorigin\") !==\n                (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n            name &&\n            instance.hasAttribute(\"async\") &&\n            !instance.hasAttribute(\"itemprop\")\n          )\n            break;\n          return instance;\n        default:\n          return instance;\n      }\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) break;\n  }\n  return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n  if (\"\" === text) return null;\n  for (; 3 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction getNextHydratable(node) {\n  for (; null != node; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n    if (1 === nodeType || 3 === nodeType) break;\n    if (8 === nodeType) {\n      nodeType = node.data;\n      if (\n        \"$\" === nodeType ||\n        \"$!\" === nodeType ||\n        \"$?\" === nodeType ||\n        \"F!\" === nodeType ||\n        \"F\" === nodeType\n      )\n        break;\n      if (\"/$\" === nodeType) return null;\n    }\n  }\n  return node;\n}\nfunction getParentSuspenseInstance(targetInstance) {\n  targetInstance = targetInstance.previousSibling;\n  for (var depth = 0; targetInstance; ) {\n    if (8 === targetInstance.nodeType) {\n      var data = targetInstance.data;\n      if (\"$\" === data || \"$!\" === data || \"$?\" === data) {\n        if (0 === depth) return targetInstance;\n        depth--;\n      } else \"/$\" === data && depth++;\n    }\n    targetInstance = targetInstance.previousSibling;\n  }\n  return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n  props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n  switch (type) {\n    case \"html\":\n      type = props.documentElement;\n      if (!type) throw Error(formatProdErrorMessage(452));\n      return type;\n    case \"head\":\n      type = props.head;\n      if (!type) throw Error(formatProdErrorMessage(453));\n      return type;\n    case \"body\":\n      type = props.body;\n      if (!type) throw Error(formatProdErrorMessage(454));\n      return type;\n    default:\n      throw Error(formatProdErrorMessage(451));\n  }\n}\nvar preloadPropsMap = new Map(),\n  preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n  return \"function\" === typeof container.getRootNode\n    ? container.getRootNode()\n    : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n  f: flushSyncWork,\n  r: requestFormReset,\n  D: prefetchDNS,\n  C: preconnect,\n  L: preload,\n  m: preloadModule,\n  X: preinitScript,\n  S: preinitStyle,\n  M: preinitModuleScript\n};\nfunction flushSyncWork() {\n  var previousWasRendering = previousDispatcher.f(),\n    wasRendering = flushSyncWork$1();\n  return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n  var formInst = getInstanceFromNode(form);\n  null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n    ? requestFormReset$1(formInst)\n    : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n  var ownerDocument = globalDocument;\n  if (ownerDocument && \"string\" === typeof href && href) {\n    var limitedEscapedHref =\n      escapeSelectorAttributeValueInsideDoubleQuotes(href);\n    limitedEscapedHref =\n      'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n    \"string\" === typeof crossOrigin &&\n      (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n    preconnectsSet.has(limitedEscapedHref) ||\n      (preconnectsSet.add(limitedEscapedHref),\n      (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n      null === ownerDocument.querySelector(limitedEscapedHref) &&\n        ((href = ownerDocument.createElement(\"link\")),\n        setInitialProperties(href, \"link\", rel),\n        markNodeAsHoistable(href),\n        ownerDocument.head.appendChild(href)));\n  }\n}\nfunction prefetchDNS(href) {\n  previousDispatcher.D(href);\n  preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n  previousDispatcher.C(href, crossOrigin);\n  preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n  previousDispatcher.L(href, as, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href && as) {\n    var preloadSelector =\n      'link[rel=\"preload\"][as=\"' +\n      escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n      '\"]';\n    \"image\" === as\n      ? options && options.imageSrcSet\n        ? ((preloadSelector +=\n            '[imagesrcset=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(\n              options.imageSrcSet\n            ) +\n            '\"]'),\n          \"string\" === typeof options.imageSizes &&\n            (preloadSelector +=\n              '[imagesizes=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                options.imageSizes\n              ) +\n              '\"]'))\n        : (preloadSelector +=\n            '[href=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n            '\"]')\n      : (preloadSelector +=\n          '[href=\"' +\n          escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n          '\"]');\n    var key = preloadSelector;\n    switch (as) {\n      case \"style\":\n        key = getStyleKey(href);\n        break;\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    preloadPropsMap.has(key) ||\n      ((href = assign(\n        {\n          rel: \"preload\",\n          href:\n            \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n          as: as\n        },\n        options\n      )),\n      preloadPropsMap.set(key, href),\n      null !== ownerDocument.querySelector(preloadSelector) ||\n        (\"style\" === as &&\n          ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n        (\"script\" === as &&\n          ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n        ((as = ownerDocument.createElement(\"link\")),\n        setInitialProperties(as, \"link\", href),\n        markNodeAsHoistable(as),\n        ownerDocument.head.appendChild(as)));\n  }\n}\nfunction preloadModule(href, options) {\n  previousDispatcher.m(href, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n      preloadSelector =\n        'link[rel=\"modulepreload\"][as=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n        '\"][href=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n        '\"]',\n      key = preloadSelector;\n    switch (as) {\n      case \"audioworklet\":\n      case \"paintworklet\":\n      case \"serviceworker\":\n      case \"sharedworker\":\n      case \"worker\":\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    if (\n      !preloadPropsMap.has(key) &&\n      ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n      preloadPropsMap.set(key, href),\n      null === ownerDocument.querySelector(preloadSelector))\n    ) {\n      switch (as) {\n        case \"audioworklet\":\n        case \"paintworklet\":\n        case \"serviceworker\":\n        case \"sharedworker\":\n        case \"worker\":\n        case \"script\":\n          if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n            return;\n      }\n      as = ownerDocument.createElement(\"link\");\n      setInitialProperties(as, \"link\", href);\n      markNodeAsHoistable(as);\n      ownerDocument.head.appendChild(as);\n    }\n  }\n}\nfunction preinitStyle(href, precedence, options) {\n  previousDispatcher.S(href, precedence, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n      key = getStyleKey(href);\n    precedence = precedence || \"default\";\n    var resource = styles.get(key);\n    if (!resource) {\n      var state = { loading: 0, preload: null };\n      if (\n        (resource = ownerDocument.querySelector(\n          getStylesheetSelectorFromKey(key)\n        ))\n      )\n        state.loading = 5;\n      else {\n        href = assign(\n          { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n          options\n        );\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForStylesheet(href, options);\n        var link = (resource = ownerDocument.createElement(\"link\"));\n        markNodeAsHoistable(link);\n        setInitialProperties(link, \"link\", href);\n        link._p = new Promise(function (resolve, reject) {\n          link.onload = resolve;\n          link.onerror = reject;\n        });\n        link.addEventListener(\"load\", function () {\n          state.loading |= 1;\n        });\n        link.addEventListener(\"error\", function () {\n          state.loading |= 2;\n        });\n        state.loading |= 4;\n        insertStylesheet(resource, precedence, ownerDocument);\n      }\n      resource = {\n        type: \"stylesheet\",\n        instance: resource,\n        count: 1,\n        state: state\n      };\n      styles.set(key, resource);\n    }\n  }\n}\nfunction preinitScript(src, options) {\n  previousDispatcher.X(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0 }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction preinitModuleScript(src, options) {\n  previousDispatcher.M(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n  var JSCompiler_inline_result = (JSCompiler_inline_result =\n    rootInstanceStackCursor.current)\n    ? getHoistableRoot(JSCompiler_inline_result)\n    : null;\n  if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return null;\n    case \"style\":\n      return \"string\" === typeof pendingProps.precedence &&\n        \"string\" === typeof pendingProps.href\n        ? ((currentProps = getStyleKey(pendingProps.href)),\n          (pendingProps = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles),\n          (currentResource = pendingProps.get(currentProps)),\n          currentResource ||\n            ((currentResource = {\n              type: \"style\",\n              instance: null,\n              count: 0,\n              state: null\n            }),\n            pendingProps.set(currentProps, currentResource)),\n          currentResource)\n        : { type: \"void\", instance: null, count: 0, state: null };\n    case \"link\":\n      if (\n        \"stylesheet\" === pendingProps.rel &&\n        \"string\" === typeof pendingProps.href &&\n        \"string\" === typeof pendingProps.precedence\n      ) {\n        type = getStyleKey(pendingProps.href);\n        var styles$242 = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles,\n          resource$243 = styles$242.get(type);\n        resource$243 ||\n          ((JSCompiler_inline_result =\n            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n          (resource$243 = {\n            type: \"stylesheet\",\n            instance: null,\n            count: 0,\n            state: { loading: 0, preload: null }\n          }),\n          styles$242.set(type, resource$243),\n          (styles$242 = JSCompiler_inline_result.querySelector(\n            getStylesheetSelectorFromKey(type)\n          )) &&\n            !styles$242._p &&\n            ((resource$243.instance = styles$242),\n            (resource$243.state.loading = 5)),\n          preloadPropsMap.has(type) ||\n            ((pendingProps = {\n              rel: \"preload\",\n              as: \"style\",\n              href: pendingProps.href,\n              crossOrigin: pendingProps.crossOrigin,\n              integrity: pendingProps.integrity,\n              media: pendingProps.media,\n              hrefLang: pendingProps.hrefLang,\n              referrerPolicy: pendingProps.referrerPolicy\n            }),\n            preloadPropsMap.set(type, pendingProps),\n            styles$242 ||\n              preloadStylesheet(\n                JSCompiler_inline_result,\n                type,\n                pendingProps,\n                resource$243.state\n              )));\n        if (currentProps && null === currentResource)\n          throw Error(formatProdErrorMessage(528, \"\"));\n        return resource$243;\n      }\n      if (currentProps && null !== currentResource)\n        throw Error(formatProdErrorMessage(529, \"\"));\n      return null;\n    case \"script\":\n      return (\n        (currentProps = pendingProps.async),\n        (pendingProps = pendingProps.src),\n        \"string\" === typeof pendingProps &&\n        currentProps &&\n        \"function\" !== typeof currentProps &&\n        \"symbol\" !== typeof currentProps\n          ? ((currentProps = getScriptKey(pendingProps)),\n            (pendingProps = getResourcesFromRoot(\n              JSCompiler_inline_result\n            ).hoistableScripts),\n            (currentResource = pendingProps.get(currentProps)),\n            currentResource ||\n              ((currentResource = {\n                type: \"script\",\n                instance: null,\n                count: 0,\n                state: null\n              }),\n              pendingProps.set(currentProps, currentResource)),\n            currentResource)\n          : { type: \"void\", instance: null, count: 0, state: null }\n      );\n    default:\n      throw Error(formatProdErrorMessage(444, type));\n  }\n}\nfunction getStyleKey(href) {\n  return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n  return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n  return assign({}, rawProps, {\n    \"data-precedence\": rawProps.precedence,\n    precedence: null\n  });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n  ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n    ? (state.loading = 1)\n    : ((key = ownerDocument.createElement(\"link\")),\n      (state.preload = key),\n      key.addEventListener(\"load\", function () {\n        return (state.loading |= 1);\n      }),\n      key.addEventListener(\"error\", function () {\n        return (state.loading |= 2);\n      }),\n      setInitialProperties(key, \"link\", preloadProps),\n      markNodeAsHoistable(key),\n      ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n  return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n  return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n  resource.count++;\n  if (null === resource.instance)\n    switch (resource.type) {\n      case \"style\":\n        var instance = hoistableRoot.querySelector(\n          'style[data-href~=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n            '\"]'\n        );\n        if (instance)\n          return (\n            (resource.instance = instance),\n            markNodeAsHoistable(instance),\n            instance\n          );\n        var styleProps = assign({}, props, {\n          \"data-href\": props.href,\n          \"data-precedence\": props.precedence,\n          href: null,\n          precedence: null\n        });\n        instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n          \"style\"\n        );\n        markNodeAsHoistable(instance);\n        setInitialProperties(instance, \"style\", styleProps);\n        insertStylesheet(instance, props.precedence, hoistableRoot);\n        return (resource.instance = instance);\n      case \"stylesheet\":\n        styleProps = getStyleKey(props.href);\n        var instance$248 = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(styleProps)\n        );\n        if (instance$248)\n          return (\n            (resource.state.loading |= 4),\n            (resource.instance = instance$248),\n            markNodeAsHoistable(instance$248),\n            instance$248\n          );\n        instance = stylesheetPropsFromRawProps(props);\n        (styleProps = preloadPropsMap.get(styleProps)) &&\n          adoptPreloadPropsForStylesheet(instance, styleProps);\n        instance$248 = (\n          hoistableRoot.ownerDocument || hoistableRoot\n        ).createElement(\"link\");\n        markNodeAsHoistable(instance$248);\n        var linkInstance = instance$248;\n        linkInstance._p = new Promise(function (resolve, reject) {\n          linkInstance.onload = resolve;\n          linkInstance.onerror = reject;\n        });\n        setInitialProperties(instance$248, \"link\", instance);\n        resource.state.loading |= 4;\n        insertStylesheet(instance$248, props.precedence, hoistableRoot);\n        return (resource.instance = instance$248);\n      case \"script\":\n        instance$248 = getScriptKey(props.src);\n        if (\n          (styleProps = hoistableRoot.querySelector(\n            getScriptSelectorFromKey(instance$248)\n          ))\n        )\n          return (\n            (resource.instance = styleProps),\n            markNodeAsHoistable(styleProps),\n            styleProps\n          );\n        instance = props;\n        if ((styleProps = preloadPropsMap.get(instance$248)))\n          (instance = assign({}, props)),\n            adoptPreloadPropsForScript(instance, styleProps);\n        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n        styleProps = hoistableRoot.createElement(\"script\");\n        markNodeAsHoistable(styleProps);\n        setInitialProperties(styleProps, \"link\", instance);\n        hoistableRoot.head.appendChild(styleProps);\n        return (resource.instance = styleProps);\n      case \"void\":\n        return null;\n      default:\n        throw Error(formatProdErrorMessage(443, resource.type));\n    }\n  else\n    \"stylesheet\" === resource.type &&\n      0 === (resource.state.loading & 4) &&\n      ((instance = resource.instance),\n      (resource.state.loading |= 4),\n      insertStylesheet(instance, props.precedence, hoistableRoot));\n  return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n  for (\n    var nodes = root.querySelectorAll(\n        'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n      ),\n      last = nodes.length ? nodes[nodes.length - 1] : null,\n      prior = last,\n      i = 0;\n    i < nodes.length;\n    i++\n  ) {\n    var node = nodes[i];\n    if (node.dataset.precedence === precedence) prior = node;\n    else if (prior !== last) break;\n  }\n  prior\n    ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n    : ((precedence = 9 === root.nodeType ? root.head : root),\n      precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n  null == stylesheetProps.crossOrigin &&\n    (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n  null == stylesheetProps.referrerPolicy &&\n    (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n  null == scriptProps.crossOrigin &&\n    (scriptProps.crossOrigin = preloadProps.crossOrigin);\n  null == scriptProps.referrerPolicy &&\n    (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == scriptProps.integrity &&\n    (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n  if (null === tagCaches) {\n    var cache = new Map();\n    var caches = (tagCaches = new Map());\n    caches.set(ownerDocument, cache);\n  } else\n    (caches = tagCaches),\n      (cache = caches.get(ownerDocument)),\n      cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n  if (cache.has(type)) return cache;\n  cache.set(type, null);\n  ownerDocument = ownerDocument.getElementsByTagName(type);\n  for (caches = 0; caches < ownerDocument.length; caches++) {\n    var node = ownerDocument[caches];\n    if (\n      !(\n        node[internalHoistableMarker] ||\n        node[internalInstanceKey] ||\n        (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n      ) &&\n      \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n    ) {\n      var nodeKey = node.getAttribute(keyAttribute) || \"\";\n      nodeKey = type + nodeKey;\n      var existing = cache.get(nodeKey);\n      existing ? existing.push(node) : cache.set(nodeKey, [node]);\n    }\n  }\n  return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n  hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n  hoistableRoot.head.insertBefore(\n    instance,\n    \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n  );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n  if (1 === hostContext || null != props.itemProp) return !1;\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return !0;\n    case \"style\":\n      if (\n        \"string\" !== typeof props.precedence ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href\n      )\n        break;\n      return !0;\n    case \"link\":\n      if (\n        \"string\" !== typeof props.rel ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href ||\n        props.onLoad ||\n        props.onError\n      )\n        break;\n      switch (props.rel) {\n        case \"stylesheet\":\n          return (\n            (type = props.disabled),\n            \"string\" === typeof props.precedence && null == type\n          );\n        default:\n          return !0;\n      }\n    case \"script\":\n      if (\n        props.async &&\n        \"function\" !== typeof props.async &&\n        \"symbol\" !== typeof props.async &&\n        !props.onLoad &&\n        !props.onError &&\n        props.src &&\n        \"string\" === typeof props.src\n      )\n        return !0;\n  }\n  return !1;\n}\nfunction preloadResource(resource) {\n  return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n    ? !1\n    : !0;\n}\nvar suspendedState = null;\nfunction noop() {}\nfunction suspendResource(hoistableRoot, resource, props) {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  if (\n    \"stylesheet\" === resource.type &&\n    (\"string\" !== typeof props.media ||\n      !1 !== matchMedia(props.media).matches) &&\n    0 === (resource.state.loading & 4)\n  ) {\n    if (null === resource.instance) {\n      var key = getStyleKey(props.href),\n        instance = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(key)\n        );\n      if (instance) {\n        hoistableRoot = instance._p;\n        null !== hoistableRoot &&\n          \"object\" === typeof hoistableRoot &&\n          \"function\" === typeof hoistableRoot.then &&\n          (state.count++,\n          (state = onUnsuspend.bind(state)),\n          hoistableRoot.then(state, state));\n        resource.state.loading |= 4;\n        resource.instance = instance;\n        markNodeAsHoistable(instance);\n        return;\n      }\n      instance = hoistableRoot.ownerDocument || hoistableRoot;\n      props = stylesheetPropsFromRawProps(props);\n      (key = preloadPropsMap.get(key)) &&\n        adoptPreloadPropsForStylesheet(props, key);\n      instance = instance.createElement(\"link\");\n      markNodeAsHoistable(instance);\n      var linkInstance = instance;\n      linkInstance._p = new Promise(function (resolve, reject) {\n        linkInstance.onload = resolve;\n        linkInstance.onerror = reject;\n      });\n      setInitialProperties(instance, \"link\", props);\n      resource.instance = instance;\n    }\n    null === state.stylesheets && (state.stylesheets = new Map());\n    state.stylesheets.set(resource, hoistableRoot);\n    (hoistableRoot = resource.state.preload) &&\n      0 === (resource.state.loading & 3) &&\n      (state.count++,\n      (resource = onUnsuspend.bind(state)),\n      hoistableRoot.addEventListener(\"load\", resource),\n      hoistableRoot.addEventListener(\"error\", resource));\n  }\n}\nfunction waitForCommitToBeReady() {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  state.stylesheets &&\n    0 === state.count &&\n    insertSuspendedStylesheets(state, state.stylesheets);\n  return 0 < state.count\n    ? function (commit) {\n        var stylesheetTimer = setTimeout(function () {\n          state.stylesheets &&\n            insertSuspendedStylesheets(state, state.stylesheets);\n          if (state.unsuspend) {\n            var unsuspend = state.unsuspend;\n            state.unsuspend = null;\n            unsuspend();\n          }\n        }, 6e4);\n        state.unsuspend = commit;\n        return function () {\n          state.unsuspend = null;\n          clearTimeout(stylesheetTimer);\n        };\n      }\n    : null;\n}\nfunction onUnsuspend() {\n  this.count--;\n  if (0 === this.count)\n    if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n    else if (this.unsuspend) {\n      var unsuspend = this.unsuspend;\n      this.unsuspend = null;\n      unsuspend();\n    }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n  state.stylesheets = null;\n  null !== state.unsuspend &&\n    (state.count++,\n    (precedencesByRoot = new Map()),\n    resources.forEach(insertStylesheetIntoRoot, state),\n    (precedencesByRoot = null),\n    onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n  if (!(resource.state.loading & 4)) {\n    var precedences = precedencesByRoot.get(root);\n    if (precedences) var last = precedences.get(null);\n    else {\n      precedences = new Map();\n      precedencesByRoot.set(root, precedences);\n      for (\n        var nodes = root.querySelectorAll(\n            \"link[data-precedence],style[data-precedence]\"\n          ),\n          i = 0;\n        i < nodes.length;\n        i++\n      ) {\n        var node = nodes[i];\n        if (\n          \"LINK\" === node.nodeName ||\n          \"not all\" !== node.getAttribute(\"media\")\n        )\n          precedences.set(node.dataset.precedence, node), (last = node);\n      }\n      last && precedences.set(null, last);\n    }\n    nodes = resource.instance;\n    node = nodes.getAttribute(\"data-precedence\");\n    i = precedences.get(node) || last;\n    i === last && precedences.set(null, nodes);\n    precedences.set(node, nodes);\n    this.count++;\n    last = onUnsuspend.bind(this);\n    nodes.addEventListener(\"load\", last);\n    nodes.addEventListener(\"error\", last);\n    i\n      ? i.parentNode.insertBefore(nodes, i.nextSibling)\n      : ((root = 9 === root.nodeType ? root.head : root),\n        root.insertBefore(nodes, root.firstChild));\n    resource.state.loading |= 4;\n  }\n}\nvar HostTransitionContext = {\n  $$typeof: REACT_CONTEXT_TYPE,\n  Provider: null,\n  Consumer: null,\n  _currentValue: sharedNotPendingObject,\n  _currentValue2: sharedNotPendingObject,\n  _threadCount: 0\n};\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  formState\n) {\n  this.tag = 1;\n  this.containerInfo = containerInfo;\n  this.finishedWork =\n    this.pingCache =\n    this.current =\n    this.pendingChildren =\n      null;\n  this.timeoutHandle = -1;\n  this.callbackNode =\n    this.next =\n    this.pendingContext =\n    this.context =\n    this.cancelPendingCommit =\n      null;\n  this.callbackPriority = 0;\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes =\n    this.shellSuspendCounter =\n    this.errorRecoveryDisabledLanes =\n    this.finishedLanes =\n    this.expiredLanes =\n    this.warmLanes =\n    this.pingedLanes =\n    this.suspendedLanes =\n    this.pendingLanes =\n      0;\n  this.entanglements = createLaneMap(0);\n  this.hiddenUpdates = createLaneMap(null);\n  this.identifierPrefix = identifierPrefix;\n  this.onUncaughtError = onUncaughtError;\n  this.onCaughtError = onCaughtError;\n  this.onRecoverableError = onRecoverableError;\n  this.pooledCache = null;\n  this.pooledCacheLanes = 0;\n  this.formState = formState;\n  this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n  containerInfo,\n  tag,\n  hydrate,\n  initialChildren,\n  hydrationCallbacks,\n  isStrictMode,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  transitionCallbacks,\n  formState\n) {\n  containerInfo = new FiberRootNode(\n    containerInfo,\n    tag,\n    hydrate,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    formState\n  );\n  tag = 1;\n  !0 === isStrictMode && (tag |= 24);\n  isStrictMode = createFiberImplClass(3, null, null, tag);\n  containerInfo.current = isStrictMode;\n  isStrictMode.stateNode = containerInfo;\n  tag = createCache();\n  tag.refCount++;\n  containerInfo.pooledCache = tag;\n  tag.refCount++;\n  isStrictMode.memoizedState = {\n    element: initialChildren,\n    isDehydrated: hydrate,\n    cache: tag\n  };\n  initializeUpdateQueue(isStrictMode);\n  return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) return emptyContextObject;\n  parentComponent = emptyContextObject;\n  return parentComponent;\n}\nfunction updateContainerImpl(\n  rootFiber,\n  lane,\n  element,\n  container,\n  parentComponent,\n  callback\n) {\n  parentComponent = getContextForSubtree(parentComponent);\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  element = enqueueUpdate(rootFiber, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, rootFiber, lane),\n    entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n  fiber = fiber.memoizedState;\n  if (null !== fiber && null !== fiber.dehydrated) {\n    var a = fiber.retryLane;\n    fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n  }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n  if (13 === fiber.tag) {\n    var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n    markRetryLaneIfNotHydrated(fiber, 67108864);\n  }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchContinuousEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 8),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchEvent(\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (_enabled) {\n    var blockedOn = findInstanceBlockingEvent(nativeEvent);\n    if (null === blockedOn)\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        return_targetInst,\n        targetContainer\n      ),\n        clearIfContinuousEvent(domEventName, nativeEvent);\n    else if (\n      queueIfContinuousEvent(\n        blockedOn,\n        domEventName,\n        eventSystemFlags,\n        targetContainer,\n        nativeEvent\n      )\n    )\n      nativeEvent.stopPropagation();\n    else if (\n      (clearIfContinuousEvent(domEventName, nativeEvent),\n      eventSystemFlags & 4 &&\n        -1 < discreteReplayableEvents.indexOf(domEventName))\n    ) {\n      for (; null !== blockedOn; ) {\n        var fiber = getInstanceFromNode(blockedOn);\n        if (null !== fiber)\n          switch (fiber.tag) {\n            case 3:\n              fiber = fiber.stateNode;\n              if (fiber.current.memoizedState.isDehydrated) {\n                var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n                if (0 !== lanes) {\n                  var root = fiber;\n                  root.pendingLanes |= 2;\n                  for (root.entangledLanes |= 2; lanes; ) {\n                    var lane = 1 << (31 - clz32(lanes));\n                    root.entanglements[1] |= lane;\n                    lanes &= ~lane;\n                  }\n                  ensureRootIsScheduled(fiber);\n                  0 === (executionContext & 6) &&\n                    ((workInProgressRootRenderTargetTime = now() + 500),\n                    flushSyncWorkAcrossRoots_impl(0, !1));\n                }\n              }\n              break;\n            case 13:\n              (root = enqueueConcurrentRenderForLane(fiber, 2)),\n                null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n                flushSyncWork$1(),\n                markRetryLaneIfNotHydrated(fiber, 2);\n          }\n        fiber = findInstanceBlockingEvent(nativeEvent);\n        null === fiber &&\n          dispatchEventForPluginEventSystem(\n            domEventName,\n            eventSystemFlags,\n            nativeEvent,\n            return_targetInst,\n            targetContainer\n          );\n        if (fiber === blockedOn) break;\n        blockedOn = fiber;\n      }\n      null !== blockedOn && nativeEvent.stopPropagation();\n    } else\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        null,\n        targetContainer\n      );\n  }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n  nativeEvent = getEventTarget(nativeEvent);\n  return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n  return_targetInst = null;\n  targetNode = getClosestInstanceFromNode(targetNode);\n  if (null !== targetNode) {\n    var nearestMounted = getNearestMountedFiber(targetNode);\n    if (null === nearestMounted) targetNode = null;\n    else {\n      var tag = nearestMounted.tag;\n      if (13 === tag) {\n        targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (3 === tag) {\n        if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n          return 3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        targetNode = null;\n      } else nearestMounted !== targetNode && (targetNode = null);\n    }\n  }\n  return_targetInst = targetNode;\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    case \"beforetoggle\":\n    case \"cancel\":\n    case \"click\":\n    case \"close\":\n    case \"contextmenu\":\n    case \"copy\":\n    case \"cut\":\n    case \"auxclick\":\n    case \"dblclick\":\n    case \"dragend\":\n    case \"dragstart\":\n    case \"drop\":\n    case \"focusin\":\n    case \"focusout\":\n    case \"input\":\n    case \"invalid\":\n    case \"keydown\":\n    case \"keypress\":\n    case \"keyup\":\n    case \"mousedown\":\n    case \"mouseup\":\n    case \"paste\":\n    case \"pause\":\n    case \"play\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n    case \"ratechange\":\n    case \"reset\":\n    case \"resize\":\n    case \"seeked\":\n    case \"submit\":\n    case \"toggle\":\n    case \"touchcancel\":\n    case \"touchend\":\n    case \"touchstart\":\n    case \"volumechange\":\n    case \"change\":\n    case \"selectionchange\":\n    case \"textInput\":\n    case \"compositionstart\":\n    case \"compositionend\":\n    case \"compositionupdate\":\n    case \"beforeblur\":\n    case \"afterblur\":\n    case \"beforeinput\":\n    case \"blur\":\n    case \"fullscreenchange\":\n    case \"focus\":\n    case \"hashchange\":\n    case \"popstate\":\n    case \"select\":\n    case \"selectstart\":\n      return 2;\n    case \"drag\":\n    case \"dragenter\":\n    case \"dragexit\":\n    case \"dragleave\":\n    case \"dragover\":\n    case \"mousemove\":\n    case \"mouseout\":\n    case \"mouseover\":\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"scroll\":\n    case \"touchmove\":\n    case \"wheel\":\n    case \"mouseenter\":\n    case \"mouseleave\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n      return 8;\n    case \"message\":\n      switch (getCurrentPriorityLevel()) {\n        case ImmediatePriority:\n          return 2;\n        case UserBlockingPriority:\n          return 8;\n        case NormalPriority$1:\n        case LowPriority:\n          return 32;\n        case IdlePriority:\n          return 268435456;\n        default:\n          return 32;\n      }\n    default:\n      return 32;\n  }\n}\nvar hasScheduledReplayAttempt = !1,\n  queuedFocus = null,\n  queuedDrag = null,\n  queuedMouse = null,\n  queuedPointers = new Map(),\n  queuedPointerCaptures = new Map(),\n  queuedExplicitHydrationTargets = [],\n  discreteReplayableEvents =\n    \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n      \" \"\n    );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"focusin\":\n    case \"focusout\":\n      queuedFocus = null;\n      break;\n    case \"dragenter\":\n    case \"dragleave\":\n      queuedDrag = null;\n      break;\n    case \"mouseover\":\n    case \"mouseout\":\n      queuedMouse = null;\n      break;\n    case \"pointerover\":\n    case \"pointerout\":\n      queuedPointers.delete(nativeEvent.pointerId);\n      break;\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      queuedPointerCaptures.delete(nativeEvent.pointerId);\n  }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n  existingQueuedEvent,\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (\n    null === existingQueuedEvent ||\n    existingQueuedEvent.nativeEvent !== nativeEvent\n  )\n    return (\n      (existingQueuedEvent = {\n        blockedOn: blockedOn,\n        domEventName: domEventName,\n        eventSystemFlags: eventSystemFlags,\n        nativeEvent: nativeEvent,\n        targetContainers: [targetContainer]\n      }),\n      null !== blockedOn &&\n        ((blockedOn = getInstanceFromNode(blockedOn)),\n        null !== blockedOn && attemptContinuousHydration(blockedOn)),\n      existingQueuedEvent\n    );\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  blockedOn = existingQueuedEvent.targetContainers;\n  null !== targetContainer &&\n    -1 === blockedOn.indexOf(targetContainer) &&\n    blockedOn.push(targetContainer);\n  return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  switch (domEventName) {\n    case \"focusin\":\n      return (\n        (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedFocus,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"dragenter\":\n      return (\n        (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedDrag,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"mouseover\":\n      return (\n        (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedMouse,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"pointerover\":\n      var pointerId = nativeEvent.pointerId;\n      queuedPointers.set(\n        pointerId,\n        accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedPointers.get(pointerId) || null,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )\n      );\n      return !0;\n    case \"gotpointercapture\":\n      return (\n        (pointerId = nativeEvent.pointerId),\n        queuedPointerCaptures.set(\n          pointerId,\n          accumulateOrCreateContinuousQueuedReplayableEvent(\n            queuedPointerCaptures.get(pointerId) || null,\n            blockedOn,\n            domEventName,\n            eventSystemFlags,\n            targetContainer,\n            nativeEvent\n          )\n        ),\n        !0\n      );\n  }\n  return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n  if (null !== targetInst) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n    if (null !== nearestMounted)\n      if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n        if (\n          ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            if (13 === nearestMounted.tag) {\n              var lane = requestUpdateLane(),\n                root = enqueueConcurrentRenderForLane(nearestMounted, lane);\n              null !== root &&\n                scheduleUpdateOnFiber(root, nearestMounted, lane);\n              markRetryLaneIfNotHydrated(nearestMounted, lane);\n            }\n          });\n          return;\n        }\n      } else if (\n        3 === targetInst &&\n        nearestMounted.stateNode.current.memoizedState.isDehydrated\n      ) {\n        queuedTarget.blockedOn =\n          3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        return;\n      }\n  }\n  queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (null !== queuedEvent.blockedOn) return !1;\n  for (\n    var targetContainers = queuedEvent.targetContainers;\n    0 < targetContainers.length;\n\n  ) {\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n    if (null === nextBlockedOn) {\n      nextBlockedOn = queuedEvent.nativeEvent;\n      var nativeEventClone = new nextBlockedOn.constructor(\n        nextBlockedOn.type,\n        nextBlockedOn\n      );\n      currentReplayingEvent = nativeEventClone;\n      nextBlockedOn.target.dispatchEvent(nativeEventClone);\n      currentReplayingEvent = null;\n    } else\n      return (\n        (targetContainers = getInstanceFromNode(nextBlockedOn)),\n        null !== targetContainers &&\n          attemptContinuousHydration(targetContainers),\n        (queuedEvent.blockedOn = nextBlockedOn),\n        !1\n      );\n    targetContainers.shift();\n  }\n  return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = !1;\n  null !== queuedFocus &&\n    attemptReplayContinuousQueuedEvent(queuedFocus) &&\n    (queuedFocus = null);\n  null !== queuedDrag &&\n    attemptReplayContinuousQueuedEvent(queuedDrag) &&\n    (queuedDrag = null);\n  null !== queuedMouse &&\n    attemptReplayContinuousQueuedEvent(queuedMouse) &&\n    (queuedMouse = null);\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  queuedEvent.blockedOn === unblocked &&\n    ((queuedEvent.blockedOn = null),\n    hasScheduledReplayAttempt ||\n      ((hasScheduledReplayAttempt = !0),\n      Scheduler.unstable_scheduleCallback(\n        Scheduler.unstable_NormalPriority,\n        replayUnblockedEvents\n      )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n  lastScheduledReplayQueue !== formReplayingQueue &&\n    ((lastScheduledReplayQueue = formReplayingQueue),\n    Scheduler.unstable_scheduleCallback(\n      Scheduler.unstable_NormalPriority,\n      function () {\n        lastScheduledReplayQueue === formReplayingQueue &&\n          (lastScheduledReplayQueue = null);\n        for (var i = 0; i < formReplayingQueue.length; i += 3) {\n          var form = formReplayingQueue[i],\n            submitterOrAction = formReplayingQueue[i + 1],\n            formData = formReplayingQueue[i + 2];\n          if (\"function\" !== typeof submitterOrAction)\n            if (null === findInstanceBlockingTarget(submitterOrAction || form))\n              continue;\n            else break;\n          var formInst = getInstanceFromNode(form);\n          null !== formInst &&\n            (formReplayingQueue.splice(i, 3),\n            (i -= 3),\n            startHostTransition(\n              formInst,\n              {\n                pending: !0,\n                data: formData,\n                method: form.method,\n                action: submitterOrAction\n              },\n              submitterOrAction,\n              formData\n            ));\n        }\n      }\n    ));\n}\nfunction retryIfBlockedOn(unblocked) {\n  function unblock(queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  }\n  null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n  for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[i];\n    queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n  }\n  for (\n    ;\n    0 < queuedExplicitHydrationTargets.length &&\n    ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n  )\n    attemptExplicitHydrationTarget(i),\n      null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n  i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n  if (null != i)\n    for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n      var form = i[queuedTarget],\n        submitterOrAction = i[queuedTarget + 1],\n        formProps = form[internalPropsKey] || null;\n      if (\"function\" === typeof submitterOrAction)\n        formProps || scheduleReplayQueueIfNeeded(i);\n      else if (formProps) {\n        var action = null;\n        if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n          if (\n            ((form = submitterOrAction),\n            (formProps = submitterOrAction[internalPropsKey] || null))\n          )\n            action = formProps.formAction;\n          else {\n            if (null !== findInstanceBlockingTarget(form)) continue;\n          }\n        else action = formProps.action;\n        \"function\" === typeof action\n          ? (i[queuedTarget + 1] = action)\n          : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n        scheduleReplayQueueIfNeeded(i);\n      }\n    }\n}\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n  function (children) {\n    var root = this._internalRoot;\n    if (null === root) throw Error(formatProdErrorMessage(409));\n    var current = root.current,\n      lane = requestUpdateLane();\n    updateContainerImpl(current, lane, children, root, null, null);\n  };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n  function () {\n    var root = this._internalRoot;\n    if (null !== root) {\n      this._internalRoot = null;\n      var container = root.containerInfo;\n      0 === root.tag && flushPassiveEffects();\n      updateContainerImpl(root.current, 2, null, root, null, null);\n      flushSyncWork$1();\n      container[internalContainerInstanceKey] = null;\n    }\n  };\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n  if (target) {\n    var updatePriority = resolveUpdatePriority();\n    target = { blockedOn: null, target: target, priority: updatePriority };\n    for (\n      var i = 0;\n      i < queuedExplicitHydrationTargets.length &&\n      0 !== updatePriority &&\n      updatePriority < queuedExplicitHydrationTargets[i].priority;\n      i++\n    );\n    queuedExplicitHydrationTargets.splice(i, 0, target);\n    0 === i && attemptExplicitHydrationTarget(target);\n  }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1686 = React.version;\nif (\n  \"19.0.0\" !==\n  isomorphicReactPackageVersion$jscomp$inline_1686\n)\n  throw Error(\n    formatProdErrorMessage(\n      527,\n      isomorphicReactPackageVersion$jscomp$inline_1686,\n      \"19.0.0\"\n    )\n  );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n  var fiber = componentOrElement._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof componentOrElement.render)\n      throw Error(formatProdErrorMessage(188));\n    componentOrElement = Object.keys(componentOrElement).join(\",\");\n    throw Error(formatProdErrorMessage(268, componentOrElement));\n  }\n  componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n  componentOrElement =\n    null !== componentOrElement\n      ? findCurrentHostFiberImpl(componentOrElement)\n      : null;\n  componentOrElement =\n    null === componentOrElement ? null : componentOrElement.stateNode;\n  return componentOrElement;\n};\nvar internals$jscomp$inline_2165 = {\n  bundleType: 0,\n  version: \"19.0.0\",\n  rendererPackageName: \"react-dom\",\n  currentDispatcherRef: ReactSharedInternals,\n  findFiberByHostInstance: getClosestInstanceFromNode,\n  reconcilerVersion: \"19.0.0\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_2166 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_2166.isDisabled &&\n    hook$jscomp$inline_2166.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_2166.inject(\n        internals$jscomp$inline_2165\n      )),\n        (injectedHook = hook$jscomp$inline_2166);\n    } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks));\n  options = createFiberRoot(\n    container,\n    1,\n    !1,\n    null,\n    null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    null\n  );\n  container[internalContainerInstanceKey] = options.current;\n  listenToAllSupportedEvents(\n    8 === container.nodeType ? container.parentNode : container\n  );\n  return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null,\n    formState = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks),\n    void 0 !== options.formState && (formState = options.formState));\n  initialChildren = createFiberRoot(\n    container,\n    1,\n    !0,\n    initialChildren,\n    null != options ? options : null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    formState\n  );\n  initialChildren.context = getContextForSubtree(null);\n  options = initialChildren.current;\n  isStrictMode = requestUpdateLane();\n  identifierPrefix = createUpdate(isStrictMode);\n  identifierPrefix.callback = null;\n  enqueueUpdate(options, identifierPrefix, isStrictMode);\n  initialChildren.current.lanes = isStrictMode;\n  markRootUpdated$1(initialChildren, isStrictMode);\n  ensureRootIsScheduled(initialChildren);\n  container[internalContainerInstanceKey] = initialChildren.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.0.0\";\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var X64WordArray = C_x64.WordArray;\n\t    var C_algo = C.algo;\n\n\t    function X64Word_create() {\n\t        return X64Word.create.apply(X64Word, arguments);\n\t    }\n\n\t    // Constants\n\t    var K = [\n\t        X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t        X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t        X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t        X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t        X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t        X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t        X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t        X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t        X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t        X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t        X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t        X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t        X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t        X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t        X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t        X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t        X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t        X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t        X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t        X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t        X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t        X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t        X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t        X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t        X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t        X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t        X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t        X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t        X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t        X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t        X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t        X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t        X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t        X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t        X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t        X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t        X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t        X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t        X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t        X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t    ];\n\n\t    // Reusable objects\n\t    var W = [];\n\t    (function () {\n\t        for (var i = 0; i < 80; i++) {\n\t            W[i] = X64Word_create();\n\t        }\n\t    }());\n\n\t    /**\n\t     * SHA-512 hash algorithm.\n\t     */\n\t    var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new X64WordArray.init([\n\t                new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t                new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t                new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t                new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var H0 = H[0];\n\t            var H1 = H[1];\n\t            var H2 = H[2];\n\t            var H3 = H[3];\n\t            var H4 = H[4];\n\t            var H5 = H[5];\n\t            var H6 = H[6];\n\t            var H7 = H[7];\n\n\t            var H0h = H0.high;\n\t            var H0l = H0.low;\n\t            var H1h = H1.high;\n\t            var H1l = H1.low;\n\t            var H2h = H2.high;\n\t            var H2l = H2.low;\n\t            var H3h = H3.high;\n\t            var H3l = H3.low;\n\t            var H4h = H4.high;\n\t            var H4l = H4.low;\n\t            var H5h = H5.high;\n\t            var H5l = H5.low;\n\t            var H6h = H6.high;\n\t            var H6l = H6.low;\n\t            var H7h = H7.high;\n\t            var H7l = H7.low;\n\n\t            // Working variables\n\t            var ah = H0h;\n\t            var al = H0l;\n\t            var bh = H1h;\n\t            var bl = H1l;\n\t            var ch = H2h;\n\t            var cl = H2l;\n\t            var dh = H3h;\n\t            var dl = H3l;\n\t            var eh = H4h;\n\t            var el = H4l;\n\t            var fh = H5h;\n\t            var fl = H5l;\n\t            var gh = H6h;\n\t            var gl = H6l;\n\t            var hh = H7h;\n\t            var hl = H7l;\n\n\t            // Rounds\n\t            for (var i = 0; i < 80; i++) {\n\t                var Wil;\n\t                var Wih;\n\n\t                // Shortcut\n\t                var Wi = W[i];\n\n\t                // Extend message\n\t                if (i < 16) {\n\t                    Wih = Wi.high = M[offset + i * 2]     | 0;\n\t                    Wil = Wi.low  = M[offset + i * 2 + 1] | 0;\n\t                } else {\n\t                    // Gamma0\n\t                    var gamma0x  = W[i - 15];\n\t                    var gamma0xh = gamma0x.high;\n\t                    var gamma0xl = gamma0x.low;\n\t                    var gamma0h  = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t                    var gamma0l  = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t                    // Gamma1\n\t                    var gamma1x  = W[i - 2];\n\t                    var gamma1xh = gamma1x.high;\n\t                    var gamma1xl = gamma1x.low;\n\t                    var gamma1h  = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t                    var gamma1l  = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t                    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t                    var Wi7  = W[i - 7];\n\t                    var Wi7h = Wi7.high;\n\t                    var Wi7l = Wi7.low;\n\n\t                    var Wi16  = W[i - 16];\n\t                    var Wi16h = Wi16.high;\n\t                    var Wi16l = Wi16.low;\n\n\t                    Wil = gamma0l + Wi7l;\n\t                    Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t                    Wil = Wil + gamma1l;\n\t                    Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t                    Wil = Wil + Wi16l;\n\t                    Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t                    Wi.high = Wih;\n\t                    Wi.low  = Wil;\n\t                }\n\n\t                var chh  = (eh & fh) ^ (~eh & gh);\n\t                var chl  = (el & fl) ^ (~el & gl);\n\t                var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t                var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t                var sigma0h = ((ah >>> 28) | (al << 4))  ^ ((ah << 30)  | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t                var sigma0l = ((al >>> 28) | (ah << 4))  ^ ((al << 30)  | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t                var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t                var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t                // t1 = h + sigma1 + ch + K[i] + W[i]\n\t                var Ki  = K[i];\n\t                var Kih = Ki.high;\n\t                var Kil = Ki.low;\n\n\t                var t1l = hl + sigma1l;\n\t                var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t                var t1l = t1l + chl;\n\t                var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t                var t1l = t1l + Kil;\n\t                var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t                var t1l = t1l + Wil;\n\t                var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t                // t2 = sigma0 + maj\n\t                var t2l = sigma0l + majl;\n\t                var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t                // Update working variables\n\t                hh = gh;\n\t                hl = gl;\n\t                gh = fh;\n\t                gl = fl;\n\t                fh = eh;\n\t                fl = el;\n\t                el = (dl + t1l) | 0;\n\t                eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t                dh = ch;\n\t                dl = cl;\n\t                ch = bh;\n\t                cl = bl;\n\t                bh = ah;\n\t                bl = al;\n\t                al = (t1l + t2l) | 0;\n\t                ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H0l = H0.low  = (H0l + al);\n\t            H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t            H1l = H1.low  = (H1l + bl);\n\t            H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t            H2l = H2.low  = (H2l + cl);\n\t            H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t            H3l = H3.low  = (H3l + dl);\n\t            H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t            H4l = H4.low  = (H4l + el);\n\t            H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t            H5l = H5.low  = (H5l + fl);\n\t            H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t            H6l = H6.low  = (H6l + gl);\n\t            H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t            H7l = H7.low  = (H7l + hl);\n\t            H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Convert hash to 32-bit word array before returning\n\t            var hash = this._hash.toX32();\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        },\n\n\t        blockSize: 1024/32\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA512('message');\n\t     *     var hash = CryptoJS.SHA512(wordArray);\n\t     */\n\t    C.SHA512 = Hasher._createHelper(SHA512);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA512(message, key);\n\t     */\n\t    C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\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",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var _zl = WordArray.create([\n\t        0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n\t        7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,\n\t        3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,\n\t        1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,\n\t        4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13]);\n\t    var _zr = WordArray.create([\n\t        5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,\n\t        6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,\n\t        15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,\n\t        8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,\n\t        12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11]);\n\t    var _sl = WordArray.create([\n\t         11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,\n\t        7, 6,   8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,\n\t        11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,\n\t          11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,\n\t        9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6 ]);\n\t    var _sr = WordArray.create([\n\t        8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,\n\t        9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,\n\t        9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,\n\t        15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,\n\t        8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11 ]);\n\n\t    var _hl =  WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t    var _hr =  WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t    /**\n\t     * RIPEMD160 hash algorithm.\n\t     */\n\t    var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash  = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                // Swap\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\t            // Shortcut\n\t            var H  = this._hash.words;\n\t            var hl = _hl.words;\n\t            var hr = _hr.words;\n\t            var zl = _zl.words;\n\t            var zr = _zr.words;\n\t            var sl = _sl.words;\n\t            var sr = _sr.words;\n\n\t            // Working variables\n\t            var al, bl, cl, dl, el;\n\t            var ar, br, cr, dr, er;\n\n\t            ar = al = H[0];\n\t            br = bl = H[1];\n\t            cr = cl = H[2];\n\t            dr = dl = H[3];\n\t            er = el = H[4];\n\t            // Computation\n\t            var t;\n\t            for (var i = 0; i < 80; i += 1) {\n\t                t = (al +  M[offset+zl[i]])|0;\n\t                if (i<16){\n\t\t            t +=  f1(bl,cl,dl) + hl[0];\n\t                } else if (i<32) {\n\t\t            t +=  f2(bl,cl,dl) + hl[1];\n\t                } else if (i<48) {\n\t\t            t +=  f3(bl,cl,dl) + hl[2];\n\t                } else if (i<64) {\n\t\t            t +=  f4(bl,cl,dl) + hl[3];\n\t                } else {// if (i<80) {\n\t\t            t +=  f5(bl,cl,dl) + hl[4];\n\t                }\n\t                t = t|0;\n\t                t =  rotl(t,sl[i]);\n\t                t = (t+el)|0;\n\t                al = el;\n\t                el = dl;\n\t                dl = rotl(cl, 10);\n\t                cl = bl;\n\t                bl = t;\n\n\t                t = (ar + M[offset+zr[i]])|0;\n\t                if (i<16){\n\t\t            t +=  f5(br,cr,dr) + hr[0];\n\t                } else if (i<32) {\n\t\t            t +=  f4(br,cr,dr) + hr[1];\n\t                } else if (i<48) {\n\t\t            t +=  f3(br,cr,dr) + hr[2];\n\t                } else if (i<64) {\n\t\t            t +=  f2(br,cr,dr) + hr[3];\n\t                } else {// if (i<80) {\n\t\t            t +=  f1(br,cr,dr) + hr[4];\n\t                }\n\t                t = t|0;\n\t                t =  rotl(t,sr[i]) ;\n\t                t = (t+er)|0;\n\t                ar = er;\n\t                er = dr;\n\t                dr = rotl(cr, 10);\n\t                cr = br;\n\t                br = t;\n\t            }\n\t            // Intermediate hash value\n\t            t    = (H[1] + cl + dr)|0;\n\t            H[1] = (H[2] + dl + er)|0;\n\t            H[2] = (H[3] + el + ar)|0;\n\t            H[3] = (H[4] + al + br)|0;\n\t            H[4] = (H[0] + bl + cr)|0;\n\t            H[0] =  t;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotal << 8)  | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotal << 24) | (nBitsTotal >>> 8))  & 0xff00ff00)\n\t            );\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 5; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                // Swap\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\n\t    function f1(x, y, z) {\n\t        return ((x) ^ (y) ^ (z));\n\n\t    }\n\n\t    function f2(x, y, z) {\n\t        return (((x)&(y)) | ((~x)&(z)));\n\t    }\n\n\t    function f3(x, y, z) {\n\t        return (((x) | (~(y))) ^ (z));\n\t    }\n\n\t    function f4(x, y, z) {\n\t        return (((x) & (z)) | ((y)&(~(z))));\n\t    }\n\n\t    function f5(x, y, z) {\n\t        return ((x) ^ ((y) |(~(z))));\n\n\t    }\n\n\t    function rotl(x,n) {\n\t        return (x<<n) | (x>>>(32-n));\n\t    }\n\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.RIPEMD160('message');\n\t     *     var hash = CryptoJS.RIPEMD160(wordArray);\n\t     */\n\t    C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t     */\n\t    C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Lookup tables\n\t    var SBOX = [];\n\t    var INV_SBOX = [];\n\t    var SUB_MIX_0 = [];\n\t    var SUB_MIX_1 = [];\n\t    var SUB_MIX_2 = [];\n\t    var SUB_MIX_3 = [];\n\t    var INV_SUB_MIX_0 = [];\n\t    var INV_SUB_MIX_1 = [];\n\t    var INV_SUB_MIX_2 = [];\n\t    var INV_SUB_MIX_3 = [];\n\n\t    // Compute lookup tables\n\t    (function () {\n\t        // Compute double table\n\t        var d = [];\n\t        for (var i = 0; i < 256; i++) {\n\t            if (i < 128) {\n\t                d[i] = i << 1;\n\t            } else {\n\t                d[i] = (i << 1) ^ 0x11b;\n\t            }\n\t        }\n\n\t        // Walk GF(2^8)\n\t        var x = 0;\n\t        var xi = 0;\n\t        for (var i = 0; i < 256; i++) {\n\t            // Compute sbox\n\t            var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t            sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t            SBOX[x] = sx;\n\t            INV_SBOX[sx] = x;\n\n\t            // Compute multiplication\n\t            var x2 = d[x];\n\t            var x4 = d[x2];\n\t            var x8 = d[x4];\n\n\t            // Compute sub bytes, mix columns tables\n\t            var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t            SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t            SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t            SUB_MIX_2[x] = (t << 8)  | (t >>> 24);\n\t            SUB_MIX_3[x] = t;\n\n\t            // Compute inv sub bytes, inv mix columns tables\n\t            var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t            INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t            INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t            INV_SUB_MIX_2[sx] = (t << 8)  | (t >>> 24);\n\t            INV_SUB_MIX_3[sx] = t;\n\n\t            // Compute next counter\n\t            if (!x) {\n\t                x = xi = 1;\n\t            } else {\n\t                x = x2 ^ d[d[d[x8 ^ x2]]];\n\t                xi ^= d[d[xi]];\n\t            }\n\t        }\n\t    }());\n\n\t    // Precomputed Rcon lookup\n\t    var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t    /**\n\t     * AES block cipher algorithm.\n\t     */\n\t    var AES = C_algo.AES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            var t;\n\n\t            // Skip reset of nRounds has been set before and key did not change\n\t            if (this._nRounds && this._keyPriorReset === this._key) {\n\t                return;\n\t            }\n\n\t            // Shortcuts\n\t            var key = this._keyPriorReset = this._key;\n\t            var keyWords = key.words;\n\t            var keySize = key.sigBytes / 4;\n\n\t            // Compute number of rounds\n\t            var nRounds = this._nRounds = keySize + 6;\n\n\t            // Compute number of key schedule rows\n\t            var ksRows = (nRounds + 1) * 4;\n\n\t            // Compute key schedule\n\t            var keySchedule = this._keySchedule = [];\n\t            for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t                if (ksRow < keySize) {\n\t                    keySchedule[ksRow] = keyWords[ksRow];\n\t                } else {\n\t                    t = keySchedule[ksRow - 1];\n\n\t                    if (!(ksRow % keySize)) {\n\t                        // Rot word\n\t                        t = (t << 8) | (t >>> 24);\n\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t                        // Mix Rcon\n\t                        t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t                    } else if (keySize > 6 && ksRow % keySize == 4) {\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t                    }\n\n\t                    keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t                }\n\t            }\n\n\t            // Compute inv key schedule\n\t            var invKeySchedule = this._invKeySchedule = [];\n\t            for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t                var ksRow = ksRows - invKsRow;\n\n\t                if (invKsRow % 4) {\n\t                    var t = keySchedule[ksRow];\n\t                } else {\n\t                    var t = keySchedule[ksRow - 4];\n\t                }\n\n\t                if (invKsRow < 4 || ksRow <= 4) {\n\t                    invKeySchedule[invKsRow] = t;\n\t                } else {\n\t                    invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t                                               INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t                }\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            // Swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\n\t            this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t            // Inv swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\t        },\n\n\t        _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t            // Shortcut\n\t            var nRounds = this._nRounds;\n\n\t            // Get input, add round key\n\t            var s0 = M[offset]     ^ keySchedule[0];\n\t            var s1 = M[offset + 1] ^ keySchedule[1];\n\t            var s2 = M[offset + 2] ^ keySchedule[2];\n\t            var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t            // Key schedule row counter\n\t            var ksRow = 4;\n\n\t            // Rounds\n\t            for (var round = 1; round < nRounds; round++) {\n\t                // Shift rows, sub bytes, mix columns, add round key\n\t                var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t                var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t                var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t                var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t                // Update state\n\t                s0 = t0;\n\t                s1 = t1;\n\t                s2 = t2;\n\t                s3 = t3;\n\t            }\n\n\t            // Shift rows, sub bytes, add round key\n\t            var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t            // Set output\n\t            M[offset]     = t0;\n\t            M[offset + 1] = t1;\n\t            M[offset + 2] = t2;\n\t            M[offset + 3] = t3;\n\t        },\n\n\t        keySize: 256/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));","'use strict';\n\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\n\n//Element utils\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction isImpliedEndTagRequired(tn) {\n    switch (tn.length) {\n        case 1:\n            return tn === $.P;\n\n        case 2:\n            return tn === $.RB || tn === $.RP || tn === $.RT || tn === $.DD || tn === $.DT || tn === $.LI;\n\n        case 3:\n            return tn === $.RTC;\n\n        case 6:\n            return tn === $.OPTION;\n\n        case 8:\n            return tn === $.OPTGROUP;\n    }\n\n    return false;\n}\n\nfunction isImpliedEndTagRequiredThoroughly(tn) {\n    switch (tn.length) {\n        case 1:\n            return tn === $.P;\n\n        case 2:\n            return (\n                tn === $.RB ||\n                tn === $.RP ||\n                tn === $.RT ||\n                tn === $.DD ||\n                tn === $.DT ||\n                tn === $.LI ||\n                tn === $.TD ||\n                tn === $.TH ||\n                tn === $.TR\n            );\n\n        case 3:\n            return tn === $.RTC;\n\n        case 5:\n            return tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD;\n\n        case 6:\n            return tn === $.OPTION;\n\n        case 7:\n            return tn === $.CAPTION;\n\n        case 8:\n            return tn === $.OPTGROUP || tn === $.COLGROUP;\n    }\n\n    return false;\n}\n\nfunction isScopingElement(tn, ns) {\n    switch (tn.length) {\n        case 2:\n            if (tn === $.TD || tn === $.TH) {\n                return ns === NS.HTML;\n            } else if (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS) {\n                return ns === NS.MATHML;\n            }\n\n            break;\n\n        case 4:\n            if (tn === $.HTML) {\n                return ns === NS.HTML;\n            } else if (tn === $.DESC) {\n                return ns === NS.SVG;\n            }\n\n            break;\n\n        case 5:\n            if (tn === $.TABLE) {\n                return ns === NS.HTML;\n            } else if (tn === $.MTEXT) {\n                return ns === NS.MATHML;\n            } else if (tn === $.TITLE) {\n                return ns === NS.SVG;\n            }\n\n            break;\n\n        case 6:\n            return (tn === $.APPLET || tn === $.OBJECT) && ns === NS.HTML;\n\n        case 7:\n            return (tn === $.CAPTION || tn === $.MARQUEE) && ns === NS.HTML;\n\n        case 8:\n            return tn === $.TEMPLATE && ns === NS.HTML;\n\n        case 13:\n            return tn === $.FOREIGN_OBJECT && ns === NS.SVG;\n\n        case 14:\n            return tn === $.ANNOTATION_XML && ns === NS.MATHML;\n    }\n\n    return false;\n}\n\n//Stack of open elements\nclass OpenElementStack {\n    constructor(document, treeAdapter) {\n        this.stackTop = -1;\n        this.items = [];\n        this.current = document;\n        this.currentTagName = null;\n        this.currentTmplContent = null;\n        this.tmplCount = 0;\n        this.treeAdapter = treeAdapter;\n    }\n\n    //Index of element\n    _indexOf(element) {\n        let idx = -1;\n\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.items[i] === element) {\n                idx = i;\n                break;\n            }\n        }\n        return idx;\n    }\n\n    //Update current element\n    _isInTemplate() {\n        return this.currentTagName === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n    }\n\n    _updateCurrentElement() {\n        this.current = this.items[this.stackTop];\n        this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n\n        this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n    }\n\n    //Mutations\n    push(element) {\n        this.items[++this.stackTop] = element;\n        this._updateCurrentElement();\n\n        if (this._isInTemplate()) {\n            this.tmplCount++;\n        }\n    }\n\n    pop() {\n        this.stackTop--;\n\n        if (this.tmplCount > 0 && this._isInTemplate()) {\n            this.tmplCount--;\n        }\n\n        this._updateCurrentElement();\n    }\n\n    replace(oldElement, newElement) {\n        const idx = this._indexOf(oldElement);\n\n        this.items[idx] = newElement;\n\n        if (idx === this.stackTop) {\n            this._updateCurrentElement();\n        }\n    }\n\n    insertAfter(referenceElement, newElement) {\n        const insertionIdx = this._indexOf(referenceElement) + 1;\n\n        this.items.splice(insertionIdx, 0, newElement);\n\n        if (insertionIdx === ++this.stackTop) {\n            this._updateCurrentElement();\n        }\n    }\n\n    popUntilTagNamePopped(tagName) {\n        while (this.stackTop > -1) {\n            const tn = this.currentTagName;\n            const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n            this.pop();\n\n            if (tn === tagName && ns === NS.HTML) {\n                break;\n            }\n        }\n    }\n\n    popUntilElementPopped(element) {\n        while (this.stackTop > -1) {\n            const poppedElement = this.current;\n\n            this.pop();\n\n            if (poppedElement === element) {\n                break;\n            }\n        }\n    }\n\n    popUntilNumberedHeaderPopped() {\n        while (this.stackTop > -1) {\n            const tn = this.currentTagName;\n            const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n            this.pop();\n\n            if (\n                tn === $.H1 ||\n                tn === $.H2 ||\n                tn === $.H3 ||\n                tn === $.H4 ||\n                tn === $.H5 ||\n                (tn === $.H6 && ns === NS.HTML)\n            ) {\n                break;\n            }\n        }\n    }\n\n    popUntilTableCellPopped() {\n        while (this.stackTop > -1) {\n            const tn = this.currentTagName;\n            const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n            this.pop();\n\n            if (tn === $.TD || (tn === $.TH && ns === NS.HTML)) {\n                break;\n            }\n        }\n    }\n\n    popAllUpToHtmlElement() {\n        //NOTE: here we assume that root <html> element is always first in the open element stack, so\n        //we perform this fast stack clean up.\n        this.stackTop = 0;\n        this._updateCurrentElement();\n    }\n\n    clearBackToTableContext() {\n        while (\n            (this.currentTagName !== $.TABLE && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n            this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n        ) {\n            this.pop();\n        }\n    }\n\n    clearBackToTableBodyContext() {\n        while (\n            (this.currentTagName !== $.TBODY &&\n                this.currentTagName !== $.TFOOT &&\n                this.currentTagName !== $.THEAD &&\n                this.currentTagName !== $.TEMPLATE &&\n                this.currentTagName !== $.HTML) ||\n            this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n        ) {\n            this.pop();\n        }\n    }\n\n    clearBackToTableRowContext() {\n        while (\n            (this.currentTagName !== $.TR && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n            this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n        ) {\n            this.pop();\n        }\n    }\n\n    remove(element) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.items[i] === element) {\n                this.items.splice(i, 1);\n                this.stackTop--;\n                this._updateCurrentElement();\n                break;\n            }\n        }\n    }\n\n    //Search\n    tryPeekProperlyNestedBodyElement() {\n        //Properly nested <body> element (should be second element in stack).\n        const element = this.items[1];\n\n        return element && this.treeAdapter.getTagName(element) === $.BODY ? element : null;\n    }\n\n    contains(element) {\n        return this._indexOf(element) > -1;\n    }\n\n    getCommonAncestor(element) {\n        let elementIdx = this._indexOf(element);\n\n        return --elementIdx >= 0 ? this.items[elementIdx] : null;\n    }\n\n    isRootHtmlElementCurrent() {\n        return this.stackTop === 0 && this.currentTagName === $.HTML;\n    }\n\n    //Element in scope\n    hasInScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n\n            if (isScopingElement(tn, ns)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasNumberedHeaderInScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (\n                (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) &&\n                ns === NS.HTML\n            ) {\n                return true;\n            }\n\n            if (isScopingElement(tn, ns)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasInListItemScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n\n            if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || isScopingElement(tn, ns)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasInButtonScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n\n            if ((tn === $.BUTTON && ns === NS.HTML) || isScopingElement(tn, ns)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasInTableScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (ns !== NS.HTML) {\n                continue;\n            }\n\n            if (tn === tagName) {\n                return true;\n            }\n\n            if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasTableBodyContextInTableScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (ns !== NS.HTML) {\n                continue;\n            }\n\n            if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n                return true;\n            }\n\n            if (tn === $.TABLE || tn === $.HTML) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    hasInSelectScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.treeAdapter.getTagName(this.items[i]);\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n            if (ns !== NS.HTML) {\n                continue;\n            }\n\n            if (tn === tagName) {\n                return true;\n            }\n\n            if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    //Implied end tags\n    generateImpliedEndTags() {\n        while (isImpliedEndTagRequired(this.currentTagName)) {\n            this.pop();\n        }\n    }\n\n    generateImpliedEndTagsThoroughly() {\n        while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n            this.pop();\n        }\n    }\n\n    generateImpliedEndTagsWithExclusion(exclusionTagName) {\n        while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n            this.pop();\n        }\n    }\n}\n\nmodule.exports = OpenElementStack;\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t    var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    var Encryptor = CTR.Encryptor = CTR.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var counter = this._counter;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                counter = this._counter = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\t            var keystream = counter.slice(0);\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Increment counter\n\t            counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    CTR.Decryptor = Encryptor;\n\n\t    return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with  Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t    var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from  Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t    var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var counter = this._counter;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                counter = this._counter = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    CTRGladman.Decryptor = Encryptor;\n\n\t    return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t    var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    ECB.Encryptor = ECB.extend({\n\t        processBlock: function (words, offset) {\n\t            this._cipher.encryptBlock(words, offset);\n\t        }\n\t    });\n\n\t    ECB.Decryptor = ECB.extend({\n\t        processBlock: function (words, offset) {\n\t            this._cipher.decryptBlock(words, offset);\n\t        }\n\t    });\n\n\t    return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * UTF-16 BE encoding strategy.\n\t     */\n\t    var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t        /**\n\t         * Converts a word array to a UTF-16 BE string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-16 BE string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var utf16Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 2) {\n\t                var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t                utf16Chars.push(String.fromCharCode(codePoint));\n\t            }\n\n\t            return utf16Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a UTF-16 BE string to a word array.\n\t         *\n\t         * @param {string} utf16Str The UTF-16 BE string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t         */\n\t        parse: function (utf16Str) {\n\t            // Shortcut\n\t            var utf16StrLength = utf16Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < utf16StrLength; i++) {\n\t                words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t            }\n\n\t            return WordArray.create(words, utf16StrLength * 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-16 LE encoding strategy.\n\t     */\n\t    C_enc.Utf16LE = {\n\t        /**\n\t         * Converts a word array to a UTF-16 LE string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-16 LE string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var utf16Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 2) {\n\t                var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t                utf16Chars.push(String.fromCharCode(codePoint));\n\t            }\n\n\t            return utf16Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a UTF-16 LE string to a word array.\n\t         *\n\t         * @param {string} utf16Str The UTF-16 LE string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t         */\n\t        parse: function (utf16Str) {\n\t            // Shortcut\n\t            var utf16StrLength = utf16Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < utf16StrLength; i++) {\n\t                words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t            }\n\n\t            return WordArray.create(words, utf16StrLength * 2);\n\t        }\n\t    };\n\n\t    function swapEndian(word) {\n\t        return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var MD5 = C_algo.MD5;\n\n\t    /**\n\t     * This key derivation function is meant to conform with EVP_BytesToKey.\n\t     * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t     */\n\t    var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t         * @property {number} iterations The number of iterations to perform. Default: 1\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: MD5,\n\t            iterations: 1\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create();\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Derives a key from a password.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            var block;\n\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init hasher\n\t            var hasher = cfg.hasher.create();\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                if (block) {\n\t                    hasher.update(block);\n\t                }\n\t                block = hasher.update(password).finalize(salt);\n\t                hasher.reset();\n\n\t                // Iterations\n\t                for (var i = 1; i < iterations; i++) {\n\t                    block = hasher.finalize(block);\n\t                    hasher.reset();\n\t                }\n\n\t                derivedKey.concat(block);\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Derives a key from a password.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.EvpKDF(password, salt);\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.EvpKDF = function (password, salt, cfg) {\n\t        return EvpKDF.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\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","'use strict';\n\nclass Mixin {\n    constructor(host) {\n        const originalMethods = {};\n        const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n\n        for (const key of Object.keys(overriddenMethods)) {\n            if (typeof overriddenMethods[key] === 'function') {\n                originalMethods[key] = host[key];\n                host[key] = overriddenMethods[key];\n            }\n        }\n    }\n\n    _getOverriddenMethods() {\n        throw new Error('Not implemented');\n    }\n}\n\nMixin.install = function(host, Ctor, opts) {\n    if (!host.__mixins) {\n        host.__mixins = [];\n    }\n\n    for (let i = 0; i < host.__mixins.length; i++) {\n        if (host.__mixins[i].constructor === Ctor) {\n            return host.__mixins[i];\n        }\n    }\n\n    const mixin = new Ctor(host, opts);\n\n    host.__mixins.push(mixin);\n\n    return mixin;\n};\n\nmodule.exports = Mixin;\n","/// <reference lib=\"dom\" />\n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  element.innerHTML = characterReference\n  const char = element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `¬it;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  return char === characterReference ? false : char\n}\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              var bitsCombined = bits1 | bits2;\n\t              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingMixinBase extends Mixin {\n    constructor(host, opts) {\n        super(host);\n\n        this.posTracker = null;\n        this.onParseError = opts.onParseError;\n    }\n\n    _setErrorLocation(err) {\n        err.startLine = err.endLine = this.posTracker.line;\n        err.startCol = err.endCol = this.posTracker.col;\n        err.startOffset = err.endOffset = this.posTracker.offset;\n    }\n\n    _reportError(code) {\n        const err = {\n            code: code,\n            startLine: -1,\n            startCol: -1,\n            startOffset: -1,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1\n        };\n\n        this._setErrorLocation(err);\n        this.onParseError(err);\n    }\n\n    _getOverriddenMethods(mxn) {\n        return {\n            _err(code) {\n                mxn._reportError(code);\n            }\n        };\n    }\n}\n\nmodule.exports = ErrorReportingMixinBase;\n","'use strict';\n\nmodule.exports = function mergeOptions(defaults, options) {\n    options = options || Object.create(null);\n\n    return [defaults, options].reduce((merged, optObj) => {\n        Object.keys(optObj).forEach(key => {\n            merged[key] = optObj[key];\n        });\n\n        return merged;\n    }, Object.create(null));\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\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<unknown>} 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<string>} */\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 * @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<StackItem>} */\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').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<Event>} events\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */\nexport function subtokenize(events) {\n  /** @type {Record<string, number>} */\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<Event>} */\n  let parameters\n  /** @type {Array<Event>} */\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<Event>} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\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<number>} */\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<string, number>} */\n  const gaps = {}\n  /** @type {Array<Chunk>} */\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').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<Point, '_bufferIndex' | '_index'> | 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<string, number>} */\n  const columnStart = {}\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = []\n  /** @type {Array<Chunk>} */\n  let chunks = []\n  /** @type {Array<Token>} */\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> | 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<Construct>} */\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<Construct>} 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<Chunk>} chunks\n * @param {Pick<Token, 'end' | 'start'>} token\n * @returns {Array<Chunk>}\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index\n  const startBufferIndex = token.start._bufferIndex\n  const endIndex = token.end._index\n  const endBufferIndex = token.end._bufferIndex\n  /** @type {Array<Chunk>} */\n  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<Chunk>} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1\n  /** @type {Array<string>} */\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<Code>} */\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 * <a>\n * <a\\>b>\n * <a b>\n * <a)>\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 (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\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   * > | <aa>\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   * > | <aa>\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   * > | <aa>\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   * > | <a\\*a>\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<Code>} */\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 * @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<Code>} */\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 * <https://spec.commonmark.org/0.30/#html-blocks>.\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 * <https://spec.commonmark.org/0.30/#html-blocks>.\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   * > | <x />\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   * > | <x />\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   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\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 `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\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 `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\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 `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\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 `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\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   * > | <ab>\n   *      ^^\n   * > | </ab>\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   * > | <div/>\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   * > | <x/>\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   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\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   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\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   * > | <a b>\n   *         ^\n   * > | <a b=c>\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   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\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   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\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   * > | <a b=c>\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   * > | <a b=\"c\">\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   * > | <a b=\"c\">\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   * > | <x>\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   * > | <!--xxx-->\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   * > | <x>\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   * > | <x>\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   *   | <x>\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   * > | <!--xxx-->\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   * > | <script>console.log(1)</script>\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 `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\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   * > | <![CDATA[>&<]]>\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   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\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   * > | <!doctype>\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   * > | <!doctype>\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   * > | <div>\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<Code>} */\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&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;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&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;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&#123;b\n   *        ^\n   * > | a&#x9;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&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;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<Event>} */\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   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\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 * @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<Event>} */\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<Code>} */\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   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\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   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\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   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\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   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\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   * > | a<https://example.com>b\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   * > | a<user.name@example.com>b\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   * > | a<user.name@example.com>b\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   * > | a<user.name@example.com>b\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   * > | a<user.name@ex-ample.com>b\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<Code> | 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 <b> 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 <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> 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 `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> 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 `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> 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 <!--b--> 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 <!--b--> 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 <!--b--> 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 `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> 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 <![CDATA[>&<]]> 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 <![CDATA[>&<]]> 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 <![CDATA[>&<]]> 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 <!b> 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 <?b?> 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 <?b?> 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 `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> 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 `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> 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 </b> 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 `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> 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 <b> 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 <b c> 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 <b c> 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 <b c=d> 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 <b c=\"d\"> 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 <b c=d> 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 <b c=\"d\"> 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 <b c=\"d\"> 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 <!--a\n   *            ^\n   *   | b-->\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 <!--a\n   * > | b-->\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 <!--a\n   * > | b-->\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<Chunk>}\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<Chunk>} */\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 * @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<Node, UnistParent>} Parent\n *\n * @typedef {Omit<UnistParent, 'type' | 'children'> & {type: 'fragment', children: Array<PhrasingContent>}} 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<string, Handle>} 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<CompileContext, 'sliceSerialize'>} 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<CompileContext, 'sliceSerialize'>} 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<string>} 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<Transform>} transforms\n *   Tree transforms.\n *\n * @typedef {Partial<Config>} Extension\n *   Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n *   mdast compiler context.\n * @property {Array<Node | Fragment>} stack\n *   Stack of nodes.\n * @property {Array<TokenTuple>} tokenStack\n *   Stack of tokens.\n * @property {<Key extends keyof CompileData>(key: Key) => CompileData[Key]} getData\n *   Get data from the key/value store.\n * @property {<Key extends keyof CompileData>(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 {<Kind extends Node>(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<Extension | Array<Extension>> | 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<Event>} 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<CompileContext, 'sliceSerialize'>} */\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<number>} */\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<Event>} 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<StaticPhrasingContent>} */\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<Extension | Array<Extension>>} 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<Event>} events\n * @returns {Array<Event>}\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",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable objects\n\t    var S  = [];\n\t    var C_ = [];\n\t    var G  = [];\n\n\t    /**\n\t     * Rabbit stream cipher algorithm\n\t     */\n\t    var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var K = this._key.words;\n\t            var iv = this.cfg.iv;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                K[i] = (((K[i] << 8)  | (K[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((K[i] << 24) | (K[i] >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Generate initial state values\n\t            var X = this._X = [\n\t                K[0], (K[3] << 16) | (K[2] >>> 16),\n\t                K[1], (K[0] << 16) | (K[3] >>> 16),\n\t                K[2], (K[1] << 16) | (K[0] >>> 16),\n\t                K[3], (K[2] << 16) | (K[1] >>> 16)\n\t            ];\n\n\t            // Generate initial counter values\n\t            var C = this._C = [\n\t                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t            ];\n\n\t            // Carry bit\n\t            this._b = 0;\n\n\t            // Iterate the system four times\n\t            for (var i = 0; i < 4; i++) {\n\t                nextState.call(this);\n\t            }\n\n\t            // Modify the counters\n\t            for (var i = 0; i < 8; i++) {\n\t                C[i] ^= X[(i + 4) & 7];\n\t            }\n\n\t            // IV setup\n\t            if (iv) {\n\t                // Shortcuts\n\t                var IV = iv.words;\n\t                var IV_0 = IV[0];\n\t                var IV_1 = IV[1];\n\n\t                // Generate four subvectors\n\t                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n\t                // Modify counter values\n\t                C[0] ^= i0;\n\t                C[1] ^= i1;\n\t                C[2] ^= i2;\n\t                C[3] ^= i3;\n\t                C[4] ^= i0;\n\t                C[5] ^= i1;\n\t                C[6] ^= i2;\n\t                C[7] ^= i3;\n\n\t                // Iterate the system four times\n\t                for (var i = 0; i < 4; i++) {\n\t                    nextState.call(this);\n\t                }\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var X = this._X;\n\n\t            // Iterate the system\n\t            nextState.call(this);\n\n\t            // Generate four keystream words\n\t            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t            for (var i = 0; i < 4; i++) {\n\t                // Swap endian\n\t                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n\t                // Encrypt\n\t                M[offset + i] ^= S[i];\n\t            }\n\t        },\n\n\t        blockSize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    function nextState() {\n\t        // Shortcuts\n\t        var X = this._X;\n\t        var C = this._C;\n\n\t        // Save old counter values\n\t        for (var i = 0; i < 8; i++) {\n\t            C_[i] = C[i];\n\t        }\n\n\t        // Calculate new counter values\n\t        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t        // Calculate the g-values\n\t        for (var i = 0; i < 8; i++) {\n\t            var gx = X[i] + C[i];\n\n\t            // Construct high and low argument for squaring\n\t            var ga = gx & 0xffff;\n\t            var gb = gx >>> 16;\n\n\t            // Calculate high and low result of squaring\n\t            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t            // High XOR low\n\t            G[i] = gh ^ gl;\n\t        }\n\n\t        // Calculate new state values\n\t        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n\t        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n\t        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n\t        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\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","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst HTML = require('./html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\n//MIME types\nconst MIME_TYPES = {\n    TEXT_HTML: 'text/html',\n    APPLICATION_XML: 'application/xhtml+xml'\n};\n\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = {\n    attributename: 'attributeName',\n    attributetype: 'attributeType',\n    basefrequency: 'baseFrequency',\n    baseprofile: 'baseProfile',\n    calcmode: 'calcMode',\n    clippathunits: 'clipPathUnits',\n    diffuseconstant: 'diffuseConstant',\n    edgemode: 'edgeMode',\n    filterunits: 'filterUnits',\n    glyphref: 'glyphRef',\n    gradienttransform: 'gradientTransform',\n    gradientunits: 'gradientUnits',\n    kernelmatrix: 'kernelMatrix',\n    kernelunitlength: 'kernelUnitLength',\n    keypoints: 'keyPoints',\n    keysplines: 'keySplines',\n    keytimes: 'keyTimes',\n    lengthadjust: 'lengthAdjust',\n    limitingconeangle: 'limitingConeAngle',\n    markerheight: 'markerHeight',\n    markerunits: 'markerUnits',\n    markerwidth: 'markerWidth',\n    maskcontentunits: 'maskContentUnits',\n    maskunits: 'maskUnits',\n    numoctaves: 'numOctaves',\n    pathlength: 'pathLength',\n    patterncontentunits: 'patternContentUnits',\n    patterntransform: 'patternTransform',\n    patternunits: 'patternUnits',\n    pointsatx: 'pointsAtX',\n    pointsaty: 'pointsAtY',\n    pointsatz: 'pointsAtZ',\n    preservealpha: 'preserveAlpha',\n    preserveaspectratio: 'preserveAspectRatio',\n    primitiveunits: 'primitiveUnits',\n    refx: 'refX',\n    refy: 'refY',\n    repeatcount: 'repeatCount',\n    repeatdur: 'repeatDur',\n    requiredextensions: 'requiredExtensions',\n    requiredfeatures: 'requiredFeatures',\n    specularconstant: 'specularConstant',\n    specularexponent: 'specularExponent',\n    spreadmethod: 'spreadMethod',\n    startoffset: 'startOffset',\n    stddeviation: 'stdDeviation',\n    stitchtiles: 'stitchTiles',\n    surfacescale: 'surfaceScale',\n    systemlanguage: 'systemLanguage',\n    tablevalues: 'tableValues',\n    targetx: 'targetX',\n    targety: 'targetY',\n    textlength: 'textLength',\n    viewbox: 'viewBox',\n    viewtarget: 'viewTarget',\n    xchannelselector: 'xChannelSelector',\n    ychannelselector: 'yChannelSelector',\n    zoomandpan: 'zoomAndPan'\n};\n\nconst XML_ATTRS_ADJUSTMENT_MAP = {\n    'xlink:actuate': { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK },\n    'xlink:arcrole': { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK },\n    'xlink:href': { prefix: 'xlink', name: 'href', namespace: NS.XLINK },\n    'xlink:role': { prefix: 'xlink', name: 'role', namespace: NS.XLINK },\n    'xlink:show': { prefix: 'xlink', name: 'show', namespace: NS.XLINK },\n    'xlink:title': { prefix: 'xlink', name: 'title', namespace: NS.XLINK },\n    'xlink:type': { prefix: 'xlink', name: 'type', namespace: NS.XLINK },\n    'xml:base': { prefix: 'xml', name: 'base', namespace: NS.XML },\n    'xml:lang': { prefix: 'xml', name: 'lang', namespace: NS.XML },\n    'xml:space': { prefix: 'xml', name: 'space', namespace: NS.XML },\n    xmlns: { prefix: '', name: 'xmlns', namespace: NS.XMLNS },\n    'xmlns:xlink': { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }\n};\n\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = (exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n    altglyph: 'altGlyph',\n    altglyphdef: 'altGlyphDef',\n    altglyphitem: 'altGlyphItem',\n    animatecolor: 'animateColor',\n    animatemotion: 'animateMotion',\n    animatetransform: 'animateTransform',\n    clippath: 'clipPath',\n    feblend: 'feBlend',\n    fecolormatrix: 'feColorMatrix',\n    fecomponenttransfer: 'feComponentTransfer',\n    fecomposite: 'feComposite',\n    feconvolvematrix: 'feConvolveMatrix',\n    fediffuselighting: 'feDiffuseLighting',\n    fedisplacementmap: 'feDisplacementMap',\n    fedistantlight: 'feDistantLight',\n    feflood: 'feFlood',\n    fefunca: 'feFuncA',\n    fefuncb: 'feFuncB',\n    fefuncg: 'feFuncG',\n    fefuncr: 'feFuncR',\n    fegaussianblur: 'feGaussianBlur',\n    feimage: 'feImage',\n    femerge: 'feMerge',\n    femergenode: 'feMergeNode',\n    femorphology: 'feMorphology',\n    feoffset: 'feOffset',\n    fepointlight: 'fePointLight',\n    fespecularlighting: 'feSpecularLighting',\n    fespotlight: 'feSpotLight',\n    fetile: 'feTile',\n    feturbulence: 'feTurbulence',\n    foreignobject: 'foreignObject',\n    glyphref: 'glyphRef',\n    lineargradient: 'linearGradient',\n    radialgradient: 'radialGradient',\n    textpath: 'textPath'\n});\n\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = {\n    [$.B]: true,\n    [$.BIG]: true,\n    [$.BLOCKQUOTE]: true,\n    [$.BODY]: true,\n    [$.BR]: true,\n    [$.CENTER]: true,\n    [$.CODE]: true,\n    [$.DD]: true,\n    [$.DIV]: true,\n    [$.DL]: true,\n    [$.DT]: true,\n    [$.EM]: true,\n    [$.EMBED]: true,\n    [$.H1]: true,\n    [$.H2]: true,\n    [$.H3]: true,\n    [$.H4]: true,\n    [$.H5]: true,\n    [$.H6]: true,\n    [$.HEAD]: true,\n    [$.HR]: true,\n    [$.I]: true,\n    [$.IMG]: true,\n    [$.LI]: true,\n    [$.LISTING]: true,\n    [$.MENU]: true,\n    [$.META]: true,\n    [$.NOBR]: true,\n    [$.OL]: true,\n    [$.P]: true,\n    [$.PRE]: true,\n    [$.RUBY]: true,\n    [$.S]: true,\n    [$.SMALL]: true,\n    [$.SPAN]: true,\n    [$.STRONG]: true,\n    [$.STRIKE]: true,\n    [$.SUB]: true,\n    [$.SUP]: true,\n    [$.TABLE]: true,\n    [$.TT]: true,\n    [$.U]: true,\n    [$.UL]: true,\n    [$.VAR]: true\n};\n\n//Check exit from foreign content\nexports.causesExit = function(startTagToken) {\n    const tn = startTagToken.tagName;\n    const isFontWithAttrs =\n        tn === $.FONT &&\n        (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||\n            Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||\n            Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n\n    return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\n\n//Token adjustments\nexports.adjustTokenMathMLAttrs = function(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n            token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n            break;\n        }\n    }\n};\n\nexports.adjustTokenSVGAttrs = function(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n        if (adjustedAttrName) {\n            token.attrs[i].name = adjustedAttrName;\n        }\n    }\n};\n\nexports.adjustTokenXMLAttrs = function(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n        if (adjustedAttrEntry) {\n            token.attrs[i].prefix = adjustedAttrEntry.prefix;\n            token.attrs[i].name = adjustedAttrEntry.name;\n            token.attrs[i].namespace = adjustedAttrEntry.namespace;\n        }\n    }\n};\n\nexports.adjustTokenSVGTagName = function(token) {\n    const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n\n    if (adjustedTagName) {\n        token.tagName = adjustedTagName;\n    }\n};\n\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n    return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\n\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n    if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n        for (let i = 0; i < attrs.length; i++) {\n            if (attrs[i].name === ATTRS.ENCODING) {\n                const value = attrs[i].value.toLowerCase();\n\n                return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n            }\n        }\n    }\n\n    return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\n\nexports.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {\n    if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) {\n        return true;\n    }\n\n    if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)) {\n        return true;\n    }\n\n    return false;\n};\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass PositionTrackingPreprocessorMixin extends Mixin {\n    constructor(preprocessor) {\n        super(preprocessor);\n\n        this.preprocessor = preprocessor;\n        this.isEol = false;\n        this.lineStartPos = 0;\n        this.droppedBufferSize = 0;\n\n        this.offset = 0;\n        this.col = 0;\n        this.line = 1;\n    }\n\n    _getOverriddenMethods(mxn, orig) {\n        return {\n            advance() {\n                const pos = this.pos + 1;\n                const ch = this.html[pos];\n\n                //NOTE: LF should be in the last column of the line\n                if (mxn.isEol) {\n                    mxn.isEol = false;\n                    mxn.line++;\n                    mxn.lineStartPos = pos;\n                }\n\n                if (ch === '\\n' || (ch === '\\r' && this.html[pos + 1] !== '\\n')) {\n                    mxn.isEol = true;\n                }\n\n                mxn.col = pos - mxn.lineStartPos + 1;\n                mxn.offset = mxn.droppedBufferSize + pos;\n\n                return orig.advance.call(this);\n            },\n\n            retreat() {\n                orig.retreat.call(this);\n\n                mxn.isEol = false;\n                mxn.col = this.pos - mxn.lineStartPos + 1;\n            },\n\n            dropParsedChunk() {\n                const prevPos = this.pos;\n\n                orig.dropParsedChunk.call(this);\n\n                const reduction = prevPos - this.pos;\n\n                mxn.lineStartPos -= reduction;\n                mxn.droppedBufferSize += reduction;\n                mxn.offset = mxn.droppedBufferSize + this.pos;\n            }\n        };\n    }\n}\n\nmodule.exports = PositionTrackingPreprocessorMixin;\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var X64WordArray = C_x64.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA512 = C_algo.SHA512;\n\n\t    /**\n\t     * SHA-384 hash algorithm.\n\t     */\n\t    var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t        _doReset: function () {\n\t            this._hash = new X64WordArray.init([\n\t                new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t                new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t                new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t                new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t            ]);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var hash = SHA512._doFinalize.call(this);\n\n\t            hash.sigBytes -= 16;\n\n\t            return hash;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA384('message');\n\t     *     var hash = CryptoJS.SHA384(wordArray);\n\t     */\n\t    C.SHA384 = SHA512._createHelper(SHA384);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA384(message, key);\n\t     */\n\t    C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcut\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Count padding bytes\n\t        var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t        // Pad\n\t        data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t             concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t    },\n\n\t    unpad: function (data) {\n\t        // Get number of padding bytes from last byte\n\t        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t        // Remove padding\n\t        data.sigBytes -= nPaddingBytes;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES, NAMESPACE} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case NAMESPACE: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nexport default now;\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Permuted Choice 1 constants\n\t    var PC1 = [\n\t        57, 49, 41, 33, 25, 17, 9,  1,\n\t        58, 50, 42, 34, 26, 18, 10, 2,\n\t        59, 51, 43, 35, 27, 19, 11, 3,\n\t        60, 52, 44, 36, 63, 55, 47, 39,\n\t        31, 23, 15, 7,  62, 54, 46, 38,\n\t        30, 22, 14, 6,  61, 53, 45, 37,\n\t        29, 21, 13, 5,  28, 20, 12, 4\n\t    ];\n\n\t    // Permuted Choice 2 constants\n\t    var PC2 = [\n\t        14, 17, 11, 24, 1,  5,\n\t        3,  28, 15, 6,  21, 10,\n\t        23, 19, 12, 4,  26, 8,\n\t        16, 7,  27, 20, 13, 2,\n\t        41, 52, 31, 37, 47, 55,\n\t        30, 40, 51, 45, 33, 48,\n\t        44, 49, 39, 56, 34, 53,\n\t        46, 42, 50, 36, 29, 32\n\t    ];\n\n\t    // Cumulative bit shift constants\n\t    var BIT_SHIFTS = [1,  2,  4,  6,  8,  10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t    // SBOXes and round permutation constants\n\t    var SBOX_P = [\n\t        {\n\t            0x0: 0x808200,\n\t            0x10000000: 0x8000,\n\t            0x20000000: 0x808002,\n\t            0x30000000: 0x2,\n\t            0x40000000: 0x200,\n\t            0x50000000: 0x808202,\n\t            0x60000000: 0x800202,\n\t            0x70000000: 0x800000,\n\t            0x80000000: 0x202,\n\t            0x90000000: 0x800200,\n\t            0xa0000000: 0x8200,\n\t            0xb0000000: 0x808000,\n\t            0xc0000000: 0x8002,\n\t            0xd0000000: 0x800002,\n\t            0xe0000000: 0x0,\n\t            0xf0000000: 0x8202,\n\t            0x8000000: 0x0,\n\t            0x18000000: 0x808202,\n\t            0x28000000: 0x8202,\n\t            0x38000000: 0x8000,\n\t            0x48000000: 0x808200,\n\t            0x58000000: 0x200,\n\t            0x68000000: 0x808002,\n\t            0x78000000: 0x2,\n\t            0x88000000: 0x800200,\n\t            0x98000000: 0x8200,\n\t            0xa8000000: 0x808000,\n\t            0xb8000000: 0x800202,\n\t            0xc8000000: 0x800002,\n\t            0xd8000000: 0x8002,\n\t            0xe8000000: 0x202,\n\t            0xf8000000: 0x800000,\n\t            0x1: 0x8000,\n\t            0x10000001: 0x2,\n\t            0x20000001: 0x808200,\n\t            0x30000001: 0x800000,\n\t            0x40000001: 0x808002,\n\t            0x50000001: 0x8200,\n\t            0x60000001: 0x200,\n\t            0x70000001: 0x800202,\n\t            0x80000001: 0x808202,\n\t            0x90000001: 0x808000,\n\t            0xa0000001: 0x800002,\n\t            0xb0000001: 0x8202,\n\t            0xc0000001: 0x202,\n\t            0xd0000001: 0x800200,\n\t            0xe0000001: 0x8002,\n\t            0xf0000001: 0x0,\n\t            0x8000001: 0x808202,\n\t            0x18000001: 0x808000,\n\t            0x28000001: 0x800000,\n\t            0x38000001: 0x200,\n\t            0x48000001: 0x8000,\n\t            0x58000001: 0x800002,\n\t            0x68000001: 0x2,\n\t            0x78000001: 0x8202,\n\t            0x88000001: 0x8002,\n\t            0x98000001: 0x800202,\n\t            0xa8000001: 0x202,\n\t            0xb8000001: 0x808200,\n\t            0xc8000001: 0x800200,\n\t            0xd8000001: 0x0,\n\t            0xe8000001: 0x8200,\n\t            0xf8000001: 0x808002\n\t        },\n\t        {\n\t            0x0: 0x40084010,\n\t            0x1000000: 0x4000,\n\t            0x2000000: 0x80000,\n\t            0x3000000: 0x40080010,\n\t            0x4000000: 0x40000010,\n\t            0x5000000: 0x40084000,\n\t            0x6000000: 0x40004000,\n\t            0x7000000: 0x10,\n\t            0x8000000: 0x84000,\n\t            0x9000000: 0x40004010,\n\t            0xa000000: 0x40000000,\n\t            0xb000000: 0x84010,\n\t            0xc000000: 0x80010,\n\t            0xd000000: 0x0,\n\t            0xe000000: 0x4010,\n\t            0xf000000: 0x40080000,\n\t            0x800000: 0x40004000,\n\t            0x1800000: 0x84010,\n\t            0x2800000: 0x10,\n\t            0x3800000: 0x40004010,\n\t            0x4800000: 0x40084010,\n\t            0x5800000: 0x40000000,\n\t            0x6800000: 0x80000,\n\t            0x7800000: 0x40080010,\n\t            0x8800000: 0x80010,\n\t            0x9800000: 0x0,\n\t            0xa800000: 0x4000,\n\t            0xb800000: 0x40080000,\n\t            0xc800000: 0x40000010,\n\t            0xd800000: 0x84000,\n\t            0xe800000: 0x40084000,\n\t            0xf800000: 0x4010,\n\t            0x10000000: 0x0,\n\t            0x11000000: 0x40080010,\n\t            0x12000000: 0x40004010,\n\t            0x13000000: 0x40084000,\n\t            0x14000000: 0x40080000,\n\t            0x15000000: 0x10,\n\t            0x16000000: 0x84010,\n\t            0x17000000: 0x4000,\n\t            0x18000000: 0x4010,\n\t            0x19000000: 0x80000,\n\t            0x1a000000: 0x80010,\n\t            0x1b000000: 0x40000010,\n\t            0x1c000000: 0x84000,\n\t            0x1d000000: 0x40004000,\n\t            0x1e000000: 0x40000000,\n\t            0x1f000000: 0x40084010,\n\t            0x10800000: 0x84010,\n\t            0x11800000: 0x80000,\n\t            0x12800000: 0x40080000,\n\t            0x13800000: 0x4000,\n\t            0x14800000: 0x40004000,\n\t            0x15800000: 0x40084010,\n\t            0x16800000: 0x10,\n\t            0x17800000: 0x40000000,\n\t            0x18800000: 0x40084000,\n\t            0x19800000: 0x40000010,\n\t            0x1a800000: 0x40004010,\n\t            0x1b800000: 0x80010,\n\t            0x1c800000: 0x0,\n\t            0x1d800000: 0x4010,\n\t            0x1e800000: 0x40080010,\n\t            0x1f800000: 0x84000\n\t        },\n\t        {\n\t            0x0: 0x104,\n\t            0x100000: 0x0,\n\t            0x200000: 0x4000100,\n\t            0x300000: 0x10104,\n\t            0x400000: 0x10004,\n\t            0x500000: 0x4000004,\n\t            0x600000: 0x4010104,\n\t            0x700000: 0x4010000,\n\t            0x800000: 0x4000000,\n\t            0x900000: 0x4010100,\n\t            0xa00000: 0x10100,\n\t            0xb00000: 0x4010004,\n\t            0xc00000: 0x4000104,\n\t            0xd00000: 0x10000,\n\t            0xe00000: 0x4,\n\t            0xf00000: 0x100,\n\t            0x80000: 0x4010100,\n\t            0x180000: 0x4010004,\n\t            0x280000: 0x0,\n\t            0x380000: 0x4000100,\n\t            0x480000: 0x4000004,\n\t            0x580000: 0x10000,\n\t            0x680000: 0x10004,\n\t            0x780000: 0x104,\n\t            0x880000: 0x4,\n\t            0x980000: 0x100,\n\t            0xa80000: 0x4010000,\n\t            0xb80000: 0x10104,\n\t            0xc80000: 0x10100,\n\t            0xd80000: 0x4000104,\n\t            0xe80000: 0x4010104,\n\t            0xf80000: 0x4000000,\n\t            0x1000000: 0x4010100,\n\t            0x1100000: 0x10004,\n\t            0x1200000: 0x10000,\n\t            0x1300000: 0x4000100,\n\t            0x1400000: 0x100,\n\t            0x1500000: 0x4010104,\n\t            0x1600000: 0x4000004,\n\t            0x1700000: 0x0,\n\t            0x1800000: 0x4000104,\n\t            0x1900000: 0x4000000,\n\t            0x1a00000: 0x4,\n\t            0x1b00000: 0x10100,\n\t            0x1c00000: 0x4010000,\n\t            0x1d00000: 0x104,\n\t            0x1e00000: 0x10104,\n\t            0x1f00000: 0x4010004,\n\t            0x1080000: 0x4000000,\n\t            0x1180000: 0x104,\n\t            0x1280000: 0x4010100,\n\t            0x1380000: 0x0,\n\t            0x1480000: 0x10004,\n\t            0x1580000: 0x4000100,\n\t            0x1680000: 0x100,\n\t            0x1780000: 0x4010004,\n\t            0x1880000: 0x10000,\n\t            0x1980000: 0x4010104,\n\t            0x1a80000: 0x10104,\n\t            0x1b80000: 0x4000004,\n\t            0x1c80000: 0x4000104,\n\t            0x1d80000: 0x4010000,\n\t            0x1e80000: 0x4,\n\t            0x1f80000: 0x10100\n\t        },\n\t        {\n\t            0x0: 0x80401000,\n\t            0x10000: 0x80001040,\n\t            0x20000: 0x401040,\n\t            0x30000: 0x80400000,\n\t            0x40000: 0x0,\n\t            0x50000: 0x401000,\n\t            0x60000: 0x80000040,\n\t            0x70000: 0x400040,\n\t            0x80000: 0x80000000,\n\t            0x90000: 0x400000,\n\t            0xa0000: 0x40,\n\t            0xb0000: 0x80001000,\n\t            0xc0000: 0x80400040,\n\t            0xd0000: 0x1040,\n\t            0xe0000: 0x1000,\n\t            0xf0000: 0x80401040,\n\t            0x8000: 0x80001040,\n\t            0x18000: 0x40,\n\t            0x28000: 0x80400040,\n\t            0x38000: 0x80001000,\n\t            0x48000: 0x401000,\n\t            0x58000: 0x80401040,\n\t            0x68000: 0x0,\n\t            0x78000: 0x80400000,\n\t            0x88000: 0x1000,\n\t            0x98000: 0x80401000,\n\t            0xa8000: 0x400000,\n\t            0xb8000: 0x1040,\n\t            0xc8000: 0x80000000,\n\t            0xd8000: 0x400040,\n\t            0xe8000: 0x401040,\n\t            0xf8000: 0x80000040,\n\t            0x100000: 0x400040,\n\t            0x110000: 0x401000,\n\t            0x120000: 0x80000040,\n\t            0x130000: 0x0,\n\t            0x140000: 0x1040,\n\t            0x150000: 0x80400040,\n\t            0x160000: 0x80401000,\n\t            0x170000: 0x80001040,\n\t            0x180000: 0x80401040,\n\t            0x190000: 0x80000000,\n\t            0x1a0000: 0x80400000,\n\t            0x1b0000: 0x401040,\n\t            0x1c0000: 0x80001000,\n\t            0x1d0000: 0x400000,\n\t            0x1e0000: 0x40,\n\t            0x1f0000: 0x1000,\n\t            0x108000: 0x80400000,\n\t            0x118000: 0x80401040,\n\t            0x128000: 0x0,\n\t            0x138000: 0x401000,\n\t            0x148000: 0x400040,\n\t            0x158000: 0x80000000,\n\t            0x168000: 0x80001040,\n\t            0x178000: 0x40,\n\t            0x188000: 0x80000040,\n\t            0x198000: 0x1000,\n\t            0x1a8000: 0x80001000,\n\t            0x1b8000: 0x80400040,\n\t            0x1c8000: 0x1040,\n\t            0x1d8000: 0x80401000,\n\t            0x1e8000: 0x400000,\n\t            0x1f8000: 0x401040\n\t        },\n\t        {\n\t            0x0: 0x80,\n\t            0x1000: 0x1040000,\n\t            0x2000: 0x40000,\n\t            0x3000: 0x20000000,\n\t            0x4000: 0x20040080,\n\t            0x5000: 0x1000080,\n\t            0x6000: 0x21000080,\n\t            0x7000: 0x40080,\n\t            0x8000: 0x1000000,\n\t            0x9000: 0x20040000,\n\t            0xa000: 0x20000080,\n\t            0xb000: 0x21040080,\n\t            0xc000: 0x21040000,\n\t            0xd000: 0x0,\n\t            0xe000: 0x1040080,\n\t            0xf000: 0x21000000,\n\t            0x800: 0x1040080,\n\t            0x1800: 0x21000080,\n\t            0x2800: 0x80,\n\t            0x3800: 0x1040000,\n\t            0x4800: 0x40000,\n\t            0x5800: 0x20040080,\n\t            0x6800: 0x21040000,\n\t            0x7800: 0x20000000,\n\t            0x8800: 0x20040000,\n\t            0x9800: 0x0,\n\t            0xa800: 0x21040080,\n\t            0xb800: 0x1000080,\n\t            0xc800: 0x20000080,\n\t            0xd800: 0x21000000,\n\t            0xe800: 0x1000000,\n\t            0xf800: 0x40080,\n\t            0x10000: 0x40000,\n\t            0x11000: 0x80,\n\t            0x12000: 0x20000000,\n\t            0x13000: 0x21000080,\n\t            0x14000: 0x1000080,\n\t            0x15000: 0x21040000,\n\t            0x16000: 0x20040080,\n\t            0x17000: 0x1000000,\n\t            0x18000: 0x21040080,\n\t            0x19000: 0x21000000,\n\t            0x1a000: 0x1040000,\n\t            0x1b000: 0x20040000,\n\t            0x1c000: 0x40080,\n\t            0x1d000: 0x20000080,\n\t            0x1e000: 0x0,\n\t            0x1f000: 0x1040080,\n\t            0x10800: 0x21000080,\n\t            0x11800: 0x1000000,\n\t            0x12800: 0x1040000,\n\t            0x13800: 0x20040080,\n\t            0x14800: 0x20000000,\n\t            0x15800: 0x1040080,\n\t            0x16800: 0x80,\n\t            0x17800: 0x21040000,\n\t            0x18800: 0x40080,\n\t            0x19800: 0x21040080,\n\t            0x1a800: 0x0,\n\t            0x1b800: 0x21000000,\n\t            0x1c800: 0x1000080,\n\t            0x1d800: 0x40000,\n\t            0x1e800: 0x20040000,\n\t            0x1f800: 0x20000080\n\t        },\n\t        {\n\t            0x0: 0x10000008,\n\t            0x100: 0x2000,\n\t            0x200: 0x10200000,\n\t            0x300: 0x10202008,\n\t            0x400: 0x10002000,\n\t            0x500: 0x200000,\n\t            0x600: 0x200008,\n\t            0x700: 0x10000000,\n\t            0x800: 0x0,\n\t            0x900: 0x10002008,\n\t            0xa00: 0x202000,\n\t            0xb00: 0x8,\n\t            0xc00: 0x10200008,\n\t            0xd00: 0x202008,\n\t            0xe00: 0x2008,\n\t            0xf00: 0x10202000,\n\t            0x80: 0x10200000,\n\t            0x180: 0x10202008,\n\t            0x280: 0x8,\n\t            0x380: 0x200000,\n\t            0x480: 0x202008,\n\t            0x580: 0x10000008,\n\t            0x680: 0x10002000,\n\t            0x780: 0x2008,\n\t            0x880: 0x200008,\n\t            0x980: 0x2000,\n\t            0xa80: 0x10002008,\n\t            0xb80: 0x10200008,\n\t            0xc80: 0x0,\n\t            0xd80: 0x10202000,\n\t            0xe80: 0x202000,\n\t            0xf80: 0x10000000,\n\t            0x1000: 0x10002000,\n\t            0x1100: 0x10200008,\n\t            0x1200: 0x10202008,\n\t            0x1300: 0x2008,\n\t            0x1400: 0x200000,\n\t            0x1500: 0x10000000,\n\t            0x1600: 0x10000008,\n\t            0x1700: 0x202000,\n\t            0x1800: 0x202008,\n\t            0x1900: 0x0,\n\t            0x1a00: 0x8,\n\t            0x1b00: 0x10200000,\n\t            0x1c00: 0x2000,\n\t            0x1d00: 0x10002008,\n\t            0x1e00: 0x10202000,\n\t            0x1f00: 0x200008,\n\t            0x1080: 0x8,\n\t            0x1180: 0x202000,\n\t            0x1280: 0x200000,\n\t            0x1380: 0x10000008,\n\t            0x1480: 0x10002000,\n\t            0x1580: 0x2008,\n\t            0x1680: 0x10202008,\n\t            0x1780: 0x10200000,\n\t            0x1880: 0x10202000,\n\t            0x1980: 0x10200008,\n\t            0x1a80: 0x2000,\n\t            0x1b80: 0x202008,\n\t            0x1c80: 0x200008,\n\t            0x1d80: 0x0,\n\t            0x1e80: 0x10000000,\n\t            0x1f80: 0x10002008\n\t        },\n\t        {\n\t            0x0: 0x100000,\n\t            0x10: 0x2000401,\n\t            0x20: 0x400,\n\t            0x30: 0x100401,\n\t            0x40: 0x2100401,\n\t            0x50: 0x0,\n\t            0x60: 0x1,\n\t            0x70: 0x2100001,\n\t            0x80: 0x2000400,\n\t            0x90: 0x100001,\n\t            0xa0: 0x2000001,\n\t            0xb0: 0x2100400,\n\t            0xc0: 0x2100000,\n\t            0xd0: 0x401,\n\t            0xe0: 0x100400,\n\t            0xf0: 0x2000000,\n\t            0x8: 0x2100001,\n\t            0x18: 0x0,\n\t            0x28: 0x2000401,\n\t            0x38: 0x2100400,\n\t            0x48: 0x100000,\n\t            0x58: 0x2000001,\n\t            0x68: 0x2000000,\n\t            0x78: 0x401,\n\t            0x88: 0x100401,\n\t            0x98: 0x2000400,\n\t            0xa8: 0x2100000,\n\t            0xb8: 0x100001,\n\t            0xc8: 0x400,\n\t            0xd8: 0x2100401,\n\t            0xe8: 0x1,\n\t            0xf8: 0x100400,\n\t            0x100: 0x2000000,\n\t            0x110: 0x100000,\n\t            0x120: 0x2000401,\n\t            0x130: 0x2100001,\n\t            0x140: 0x100001,\n\t            0x150: 0x2000400,\n\t            0x160: 0x2100400,\n\t            0x170: 0x100401,\n\t            0x180: 0x401,\n\t            0x190: 0x2100401,\n\t            0x1a0: 0x100400,\n\t            0x1b0: 0x1,\n\t            0x1c0: 0x0,\n\t            0x1d0: 0x2100000,\n\t            0x1e0: 0x2000001,\n\t            0x1f0: 0x400,\n\t            0x108: 0x100400,\n\t            0x118: 0x2000401,\n\t            0x128: 0x2100001,\n\t            0x138: 0x1,\n\t            0x148: 0x2000000,\n\t            0x158: 0x100000,\n\t            0x168: 0x401,\n\t            0x178: 0x2100400,\n\t            0x188: 0x2000001,\n\t            0x198: 0x2100000,\n\t            0x1a8: 0x0,\n\t            0x1b8: 0x2100401,\n\t            0x1c8: 0x100401,\n\t            0x1d8: 0x400,\n\t            0x1e8: 0x2000400,\n\t            0x1f8: 0x100001\n\t        },\n\t        {\n\t            0x0: 0x8000820,\n\t            0x1: 0x20000,\n\t            0x2: 0x8000000,\n\t            0x3: 0x20,\n\t            0x4: 0x20020,\n\t            0x5: 0x8020820,\n\t            0x6: 0x8020800,\n\t            0x7: 0x800,\n\t            0x8: 0x8020000,\n\t            0x9: 0x8000800,\n\t            0xa: 0x20800,\n\t            0xb: 0x8020020,\n\t            0xc: 0x820,\n\t            0xd: 0x0,\n\t            0xe: 0x8000020,\n\t            0xf: 0x20820,\n\t            0x80000000: 0x800,\n\t            0x80000001: 0x8020820,\n\t            0x80000002: 0x8000820,\n\t            0x80000003: 0x8000000,\n\t            0x80000004: 0x8020000,\n\t            0x80000005: 0x20800,\n\t            0x80000006: 0x20820,\n\t            0x80000007: 0x20,\n\t            0x80000008: 0x8000020,\n\t            0x80000009: 0x820,\n\t            0x8000000a: 0x20020,\n\t            0x8000000b: 0x8020800,\n\t            0x8000000c: 0x0,\n\t            0x8000000d: 0x8020020,\n\t            0x8000000e: 0x8000800,\n\t            0x8000000f: 0x20000,\n\t            0x10: 0x20820,\n\t            0x11: 0x8020800,\n\t            0x12: 0x20,\n\t            0x13: 0x800,\n\t            0x14: 0x8000800,\n\t            0x15: 0x8000020,\n\t            0x16: 0x8020020,\n\t            0x17: 0x20000,\n\t            0x18: 0x0,\n\t            0x19: 0x20020,\n\t            0x1a: 0x8020000,\n\t            0x1b: 0x8000820,\n\t            0x1c: 0x8020820,\n\t            0x1d: 0x20800,\n\t            0x1e: 0x820,\n\t            0x1f: 0x8000000,\n\t            0x80000010: 0x20000,\n\t            0x80000011: 0x800,\n\t            0x80000012: 0x8020020,\n\t            0x80000013: 0x20820,\n\t            0x80000014: 0x20,\n\t            0x80000015: 0x8020000,\n\t            0x80000016: 0x8000000,\n\t            0x80000017: 0x8000820,\n\t            0x80000018: 0x8020820,\n\t            0x80000019: 0x8000020,\n\t            0x8000001a: 0x8000800,\n\t            0x8000001b: 0x0,\n\t            0x8000001c: 0x20800,\n\t            0x8000001d: 0x820,\n\t            0x8000001e: 0x20020,\n\t            0x8000001f: 0x8020800\n\t        }\n\t    ];\n\n\t    // Masks that select the SBOX input\n\t    var SBOX_MASK = [\n\t        0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t        0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t    ];\n\n\t    /**\n\t     * DES block cipher algorithm.\n\t     */\n\t    var DES = C_algo.DES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\n\t            // Select 56 bits according to PC1\n\t            var keyBits = [];\n\t            for (var i = 0; i < 56; i++) {\n\t                var keyBitPos = PC1[i] - 1;\n\t                keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t            }\n\n\t            // Assemble 16 subkeys\n\t            var subKeys = this._subKeys = [];\n\t            for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t                // Create subkey\n\t                var subKey = subKeys[nSubKey] = [];\n\n\t                // Shortcut\n\t                var bitShift = BIT_SHIFTS[nSubKey];\n\n\t                // Select 48 bits according to PC2\n\t                for (var i = 0; i < 24; i++) {\n\t                    // Select from the left 28 key bits\n\t                    subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t                    // Select from the right 28 key bits\n\t                    subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t                }\n\n\t                // Since each subkey is applied to an expanded 32-bit input,\n\t                // the subkey can be broken into 8 values scaled to 32-bits,\n\t                // which allows the key to be used without expansion\n\t                subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t                for (var i = 1; i < 7; i++) {\n\t                    subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t                }\n\t                subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t            }\n\n\t            // Compute inverse subkeys\n\t            var invSubKeys = this._invSubKeys = [];\n\t            for (var i = 0; i < 16; i++) {\n\t                invSubKeys[i] = subKeys[15 - i];\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._subKeys);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._invSubKeys);\n\t        },\n\n\t        _doCryptBlock: function (M, offset, subKeys) {\n\t            // Get input\n\t            this._lBlock = M[offset];\n\t            this._rBlock = M[offset + 1];\n\n\t            // Initial permutation\n\t            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\t            exchangeLR.call(this, 16, 0x0000ffff);\n\t            exchangeRL.call(this, 2,  0x33333333);\n\t            exchangeRL.call(this, 8,  0x00ff00ff);\n\t            exchangeLR.call(this, 1,  0x55555555);\n\n\t            // Rounds\n\t            for (var round = 0; round < 16; round++) {\n\t                // Shortcuts\n\t                var subKey = subKeys[round];\n\t                var lBlock = this._lBlock;\n\t                var rBlock = this._rBlock;\n\n\t                // Feistel function\n\t                var f = 0;\n\t                for (var i = 0; i < 8; i++) {\n\t                    f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t                }\n\t                this._lBlock = rBlock;\n\t                this._rBlock = lBlock ^ f;\n\t            }\n\n\t            // Undo swap from last round\n\t            var t = this._lBlock;\n\t            this._lBlock = this._rBlock;\n\t            this._rBlock = t;\n\n\t            // Final permutation\n\t            exchangeLR.call(this, 1,  0x55555555);\n\t            exchangeRL.call(this, 8,  0x00ff00ff);\n\t            exchangeRL.call(this, 2,  0x33333333);\n\t            exchangeLR.call(this, 16, 0x0000ffff);\n\t            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\n\t            // Set output\n\t            M[offset] = this._lBlock;\n\t            M[offset + 1] = this._rBlock;\n\t        },\n\n\t        keySize: 64/32,\n\n\t        ivSize: 64/32,\n\n\t        blockSize: 64/32\n\t    });\n\n\t    // Swap bits across the left and right words\n\t    function exchangeLR(offset, mask) {\n\t        var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t        this._rBlock ^= t;\n\t        this._lBlock ^= t << offset;\n\t    }\n\n\t    function exchangeRL(offset, mask) {\n\t        var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t        this._lBlock ^= t;\n\t        this._rBlock ^= t << offset;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.DES = BlockCipher._createHelper(DES);\n\n\t    /**\n\t     * Triple-DES block cipher algorithm.\n\t     */\n\t    var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\t            // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t            if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t                throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t            }\n\n\t            // Extend the key according to the keying options defined in 3DES standard\n\t            var key1 = keyWords.slice(0, 2);\n\t            var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t            var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t            // Create DES instances\n\t            this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t            this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t            this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._des1.encryptBlock(M, offset);\n\t            this._des2.decryptBlock(M, offset);\n\t            this._des3.encryptBlock(M, offset);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            this._des3.decryptBlock(M, offset);\n\t            this._des2.encryptBlock(M, offset);\n\t            this._des1.decryptBlock(M, offset);\n\t        },\n\n\t        keySize: 192/32,\n\n\t        ivSize: 64/32,\n\n\t        blockSize: 64/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));","'use strict';\n\nconst { DOCUMENT_MODE } = require('../common/html');\n\n//Node construction\nexports.createDocument = function() {\n    return {\n        nodeName: '#document',\n        mode: DOCUMENT_MODE.NO_QUIRKS,\n        childNodes: []\n    };\n};\n\nexports.createDocumentFragment = function() {\n    return {\n        nodeName: '#document-fragment',\n        childNodes: []\n    };\n};\n\nexports.createElement = function(tagName, namespaceURI, attrs) {\n    return {\n        nodeName: tagName,\n        tagName: tagName,\n        attrs: attrs,\n        namespaceURI: namespaceURI,\n        childNodes: [],\n        parentNode: null\n    };\n};\n\nexports.createCommentNode = function(data) {\n    return {\n        nodeName: '#comment',\n        data: data,\n        parentNode: null\n    };\n};\n\nconst createTextNode = function(value) {\n    return {\n        nodeName: '#text',\n        value: value,\n        parentNode: null\n    };\n};\n\n//Tree mutation\nconst appendChild = (exports.appendChild = function(parentNode, newNode) {\n    parentNode.childNodes.push(newNode);\n    newNode.parentNode = parentNode;\n});\n\nconst insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) {\n    const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n\n    parentNode.childNodes.splice(insertionIdx, 0, newNode);\n    newNode.parentNode = parentNode;\n});\n\nexports.setTemplateContent = function(templateElement, contentElement) {\n    templateElement.content = contentElement;\n};\n\nexports.getTemplateContent = function(templateElement) {\n    return templateElement.content;\n};\n\nexports.setDocumentType = function(document, name, publicId, systemId) {\n    let doctypeNode = null;\n\n    for (let i = 0; i < document.childNodes.length; i++) {\n        if (document.childNodes[i].nodeName === '#documentType') {\n            doctypeNode = document.childNodes[i];\n            break;\n        }\n    }\n\n    if (doctypeNode) {\n        doctypeNode.name = name;\n        doctypeNode.publicId = publicId;\n        doctypeNode.systemId = systemId;\n    } else {\n        appendChild(document, {\n            nodeName: '#documentType',\n            name: name,\n            publicId: publicId,\n            systemId: systemId\n        });\n    }\n};\n\nexports.setDocumentMode = function(document, mode) {\n    document.mode = mode;\n};\n\nexports.getDocumentMode = function(document) {\n    return document.mode;\n};\n\nexports.detachNode = function(node) {\n    if (node.parentNode) {\n        const idx = node.parentNode.childNodes.indexOf(node);\n\n        node.parentNode.childNodes.splice(idx, 1);\n        node.parentNode = null;\n    }\n};\n\nexports.insertText = function(parentNode, text) {\n    if (parentNode.childNodes.length) {\n        const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n\n        if (prevNode.nodeName === '#text') {\n            prevNode.value += text;\n            return;\n        }\n    }\n\n    appendChild(parentNode, createTextNode(text));\n};\n\nexports.insertTextBefore = function(parentNode, text, referenceNode) {\n    const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n\n    if (prevNode && prevNode.nodeName === '#text') {\n        prevNode.value += text;\n    } else {\n        insertBefore(parentNode, createTextNode(text), referenceNode);\n    }\n};\n\nexports.adoptAttributes = function(recipient, attrs) {\n    const recipientAttrsMap = [];\n\n    for (let i = 0; i < recipient.attrs.length; i++) {\n        recipientAttrsMap.push(recipient.attrs[i].name);\n    }\n\n    for (let j = 0; j < attrs.length; j++) {\n        if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {\n            recipient.attrs.push(attrs[j]);\n        }\n    }\n};\n\n//Tree traversing\nexports.getFirstChild = function(node) {\n    return node.childNodes[0];\n};\n\nexports.getChildNodes = function(node) {\n    return node.childNodes;\n};\n\nexports.getParentNode = function(node) {\n    return node.parentNode;\n};\n\nexports.getAttrList = function(element) {\n    return element.attrs;\n};\n\n//Node data\nexports.getTagName = function(element) {\n    return element.tagName;\n};\n\nexports.getNamespaceURI = function(element) {\n    return element.namespaceURI;\n};\n\nexports.getTextNodeContent = function(textNode) {\n    return textNode.value;\n};\n\nexports.getCommentNodeContent = function(commentNode) {\n    return commentNode.data;\n};\n\nexports.getDocumentTypeNodeName = function(doctypeNode) {\n    return doctypeNode.name;\n};\n\nexports.getDocumentTypeNodePublicId = function(doctypeNode) {\n    return doctypeNode.publicId;\n};\n\nexports.getDocumentTypeNodeSystemId = function(doctypeNode) {\n    return doctypeNode.systemId;\n};\n\n//Node types\nexports.isTextNode = function(node) {\n    return node.nodeName === '#text';\n};\n\nexports.isCommentNode = function(node) {\n    return node.nodeName === '#comment';\n};\n\nexports.isDocumentTypeNode = function(node) {\n    return node.nodeName === '#documentType';\n};\n\nexports.isElementNode = function(node) {\n    return !!node.tagName;\n};\n\n// Source code location\nexports.setNodeSourceCodeLocation = function(node, location) {\n    node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = function(node) {\n    return node.sourceCodeLocation;\n};\n\nexports.updateNodeSourceCodeLocation = function(node, endLocation) {\n    node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * RC4 stream cipher algorithm.\n\t     */\n\t    var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\t            var keySigBytes = key.sigBytes;\n\n\t            // Init sbox\n\t            var S = this._S = [];\n\t            for (var i = 0; i < 256; i++) {\n\t                S[i] = i;\n\t            }\n\n\t            // Key setup\n\t            for (var i = 0, j = 0; i < 256; i++) {\n\t                var keyByteIndex = i % keySigBytes;\n\t                var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t                j = (j + S[i] + keyByte) % 256;\n\n\t                // Swap\n\t                var t = S[i];\n\t                S[i] = S[j];\n\t                S[j] = t;\n\t            }\n\n\t            // Counters\n\t            this._i = this._j = 0;\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            M[offset] ^= generateKeystreamWord.call(this);\n\t        },\n\n\t        keySize: 256/32,\n\n\t        ivSize: 0\n\t    });\n\n\t    function generateKeystreamWord() {\n\t        // Shortcuts\n\t        var S = this._S;\n\t        var i = this._i;\n\t        var j = this._j;\n\n\t        // Generate keystream word\n\t        var keystreamWord = 0;\n\t        for (var n = 0; n < 4; n++) {\n\t            i = (i + 1) % 256;\n\t            j = (j + S[i]) % 256;\n\n\t            // Swap\n\t            var t = S[i];\n\t            S[i] = S[j];\n\t            S[j] = t;\n\n\t            keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t        }\n\n\t        // Update counters\n\t        this._i = i;\n\t        this._j = j;\n\n\t        return keystreamWord;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RC4 = StreamCipher._createHelper(RC4);\n\n\t    /**\n\t     * Modified RC4 stream cipher algorithm.\n\t     */\n\t    var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} drop The number of keystream words to drop. Default 192\n\t         */\n\t        cfg: RC4.cfg.extend({\n\t            drop: 192\n\t        }),\n\n\t        _doReset: function () {\n\t            RC4._doReset.call(this);\n\n\t            // Drop\n\t            for (var i = this.cfg.drop; i > 0; i--) {\n\t                generateKeystreamWord.call(this);\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var X32WordArray = C_lib.WordArray;\n\n\t    /**\n\t     * x64 namespace.\n\t     */\n\t    var C_x64 = C.x64 = {};\n\n\t    /**\n\t     * A 64-bit word.\n\t     */\n\t    var X64Word = C_x64.Word = Base.extend({\n\t        /**\n\t         * Initializes a newly created 64-bit word.\n\t         *\n\t         * @param {number} high The high 32 bits.\n\t         * @param {number} low The low 32 bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t         */\n\t        init: function (high, low) {\n\t            this.high = high;\n\t            this.low = low;\n\t        }\n\n\t        /**\n\t         * Bitwise NOTs this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after negating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var negated = x64Word.not();\n\t         */\n\t        // not: function () {\n\t            // var high = ~this.high;\n\t            // var low = ~this.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise ANDs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to AND with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after ANDing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var anded = x64Word.and(anotherX64Word);\n\t         */\n\t        // and: function (word) {\n\t            // var high = this.high & word.high;\n\t            // var low = this.low & word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise ORs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to OR with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after ORing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var ored = x64Word.or(anotherX64Word);\n\t         */\n\t        // or: function (word) {\n\t            // var high = this.high | word.high;\n\t            // var low = this.low | word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise XORs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to XOR with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after XORing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var xored = x64Word.xor(anotherX64Word);\n\t         */\n\t        // xor: function (word) {\n\t            // var high = this.high ^ word.high;\n\t            // var low = this.low ^ word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Shifts this word n bits to the left.\n\t         *\n\t         * @param {number} n The number of bits to shift.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after shifting.\n\t         *\n\t         * @example\n\t         *\n\t         *     var shifted = x64Word.shiftL(25);\n\t         */\n\t        // shiftL: function (n) {\n\t            // if (n < 32) {\n\t                // var high = (this.high << n) | (this.low >>> (32 - n));\n\t                // var low = this.low << n;\n\t            // } else {\n\t                // var high = this.low << (n - 32);\n\t                // var low = 0;\n\t            // }\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Shifts this word n bits to the right.\n\t         *\n\t         * @param {number} n The number of bits to shift.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after shifting.\n\t         *\n\t         * @example\n\t         *\n\t         *     var shifted = x64Word.shiftR(7);\n\t         */\n\t        // shiftR: function (n) {\n\t            // if (n < 32) {\n\t                // var low = (this.low >>> n) | (this.high << (32 - n));\n\t                // var high = this.high >>> n;\n\t            // } else {\n\t                // var low = this.high >>> (n - 32);\n\t                // var high = 0;\n\t            // }\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Rotates this word n bits to the left.\n\t         *\n\t         * @param {number} n The number of bits to rotate.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after rotating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var rotated = x64Word.rotL(25);\n\t         */\n\t        // rotL: function (n) {\n\t            // return this.shiftL(n).or(this.shiftR(64 - n));\n\t        // },\n\n\t        /**\n\t         * Rotates this word n bits to the right.\n\t         *\n\t         * @param {number} n The number of bits to rotate.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after rotating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var rotated = x64Word.rotR(7);\n\t         */\n\t        // rotR: function (n) {\n\t            // return this.shiftR(n).or(this.shiftL(64 - n));\n\t        // },\n\n\t        /**\n\t         * Adds this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to add with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after adding.\n\t         *\n\t         * @example\n\t         *\n\t         *     var added = x64Word.add(anotherX64Word);\n\t         */\n\t        // add: function (word) {\n\t            // var low = (this.low + word.low) | 0;\n\t            // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t            // var high = (this.high + word.high + carry) | 0;\n\n\t            // return X64Word.create(high, low);\n\t        // }\n\t    });\n\n\t    /**\n\t     * An array of 64-bit words.\n\t     *\n\t     * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var X64WordArray = C_x64.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create();\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create([\n\t         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t         *     ]);\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create([\n\t         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t         *     ], 10);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 8;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this 64-bit word array to a 32-bit word array.\n\t         *\n\t         * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var x32WordArray = x64WordArray.toX32();\n\t         */\n\t        toX32: function () {\n\t            // Shortcuts\n\t            var x64Words = this.words;\n\t            var x64WordsLength = x64Words.length;\n\n\t            // Convert\n\t            var x32Words = [];\n\t            for (var i = 0; i < x64WordsLength; i++) {\n\t                var x64Word = x64Words[i];\n\t                x32Words.push(x64Word.high);\n\t                x32Words.push(x64Word.low);\n\t            }\n\n\t            return X32WordArray.create(x32Words, this.sigBytes);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {X64WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = x64WordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\n\t            // Clone \"words\" array\n\t            var words = clone.words = this.words.slice(0);\n\n\t            // Clone each X64Word object\n\t            var wordsLength = words.length;\n\t            for (var i = 0; i < wordsLength; i++) {\n\t                words[i] = words[i].clone();\n\t            }\n\n\t            return clone;\n\t        }\n\t    });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"20\":\"56a715ce\",\"56\":\"b6120384\",\"58\":\"64b532b9\",\"88\":\"dc94c615\",\"134\":\"87b52337\",\"135\":\"385bf57c\",\"140\":\"48846e65\",\"141\":\"51dcb63e\",\"194\":\"a18eb950\",\"240\":\"7d89c25f\",\"324\":\"85b76c7f\",\"349\":\"18dd5e32\",\"383\":\"d3c14fbb\",\"401\":\"8339e605\",\"532\":\"714e76d0\",\"550\":\"a620e63e\",\"556\":\"0a805aca\",\"590\":\"18e7b9e5\",\"644\":\"b79870ca\",\"657\":\"03a082e9\",\"709\":\"084db430\",\"713\":\"501b66b1\",\"716\":\"7e0de20c\",\"720\":\"1d345193\",\"745\":\"477eea9d\",\"759\":\"d53dcd83\",\"787\":\"b1c0c3bc\",\"813\":\"91384f59\",\"865\":\"79f65b81\",\"899\":\"bd7b5435\",\"964\":\"b4725e59\",\"967\":\"f3003174\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"webmark:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkwebmark\"] = self[\"webpackChunkwebmark\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","export default function omit(obj, fields) {\n  var clone = Object.assign({}, obj);\n  if (Array.isArray(fields)) {\n    fields.forEach(function (key) {\n      delete clone[key];\n    });\n  }\n  return clone;\n}","import * as React from 'react';\nexport const defaultPrefixCls = 'ant';\nexport const defaultIconPrefixCls = 'anticon';\nexport const Variants = ['outlined', 'borderless', 'filled', 'underlined'];\nconst defaultGetPrefixCls = (suffixCls, customizePrefixCls) => {\n  if (customizePrefixCls) {\n    return customizePrefixCls;\n  }\n  return suffixCls ? `${defaultPrefixCls}-${suffixCls}` : defaultPrefixCls;\n};\n// zombieJ: 🚨 Do not pass `defaultRenderEmpty` here since it will cause circular dependency.\nexport const ConfigContext = /*#__PURE__*/React.createContext({\n  // We provide a default function for Context without provider\n  getPrefixCls: defaultGetPrefixCls,\n  iconPrefixCls: defaultIconPrefixCls\n});\nexport const {\n  Consumer: ConfigConsumer\n} = ConfigContext;\nconst EMPTY_OBJECT = {};\n/**\n * Get ConfigProvider configured component props.\n * This help to reduce bundle size for saving `?.` operator.\n * Do not use as `useMemo` deps since we do not cache the object here.\n *\n * NOTE: not refactor this with `useMemo` since memo will cost another memory space,\n * which will waste both compare calculation & memory.\n */\nexport function useComponentConfig(propName) {\n  const context = React.useContext(ConfigContext);\n  const {\n    getPrefixCls,\n    direction,\n    getPopupContainer\n  } = context;\n  const propValue = context[propName];\n  return Object.assign(Object.assign({\n    classNames: EMPTY_OBJECT,\n    styles: EMPTY_OBJECT\n  }, propValue), {\n    getPrefixCls,\n    direction,\n    getPopupContainer\n  });\n}","import * as React from 'react';\nexport const LayoutContext = /*#__PURE__*/React.createContext({\n  siderHook: {\n    addSider: () => null,\n    removeSider: () => null\n  }\n});","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar REACT_ELEMENT_TYPE_18 = Symbol.for('react.element');\nvar REACT_ELEMENT_TYPE_19 = Symbol.for('react.transitional.element');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\n\n/**\n * Compatible with React 18 or 19 to check if node is a Fragment.\n */\nexport default function isFragment(object) {\n  return (\n    // Base object type\n    object && _typeof(object) === 'object' && (\n    // React Element type\n    object.$$typeof === REACT_ELEMENT_TYPE_18 || object.$$typeof === REACT_ELEMENT_TYPE_19) &&\n    // React Fragment type\n    object.type === REACT_FRAGMENT_TYPE\n  );\n}","import isFragment from \"../React/isFragment\";\nimport React from 'react';\nexport default function toArray(children) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var ret = [];\n  React.Children.forEach(children, function (child) {\n    if ((child === undefined || child === null) && !option.keepEmpty) {\n      return;\n    }\n    if (Array.isArray(child)) {\n      ret = ret.concat(toArray(child));\n    } else if (isFragment(child) && child.props) {\n      ret = ret.concat(toArray(child.props.children, option));\n    } else {\n      ret.push(child);\n    }\n  });\n  return ret;\n}","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","// This icon file is generated automatically.\nvar BarsOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"bars\", \"theme\": \"outlined\" };\nexport default BarsOutlined;\n","function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as 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}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nexport { _iterableToArrayLimit as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var n = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nconst round = Math.round;\n\n/**\n * Support format, alpha unit will check the % mark:\n * - rgba(102, 204, 255, .5)      -> [102, 204, 255, 0.5]\n * - rgb(102 204 255 / .5)        -> [102, 204, 255, 0.5]\n * - rgb(100%, 50%, 0% / 50%)     -> [255, 128, 0, 0.5]\n * - hsl(270, 60, 40, .5)         -> [270, 60, 40, 0.5]\n * - hsl(270deg 60% 40% / 50%)   -> [270, 60, 40, 0.5]\n *\n * When `base` is provided, the percentage value will be divided by `base`.\n */\nfunction splitColorStr(str, parseNum) {\n  const match = str\n  // Remove str before `(`\n  .replace(/^[^(]*\\((.*)/, '$1')\n  // Remove str after `)`\n  .replace(/\\).*/, '').match(/\\d*\\.?\\d+%?/g) || [];\n  const numList = match.map(item => parseFloat(item));\n  for (let i = 0; i < 3; i += 1) {\n    numList[i] = parseNum(numList[i] || 0, match[i] || '', i);\n  }\n\n  // For alpha. 50% should be 0.5\n  if (match[3]) {\n    numList[3] = match[3].includes('%') ? numList[3] / 100 : numList[3];\n  } else {\n    // By default, alpha is 1\n    numList[3] = 1;\n  }\n  return numList;\n}\nconst parseHSVorHSL = (num, _, index) => index === 0 ? num : num / 100;\n\n/** round and limit number to integer between 0-255 */\nfunction limitRange(value, max) {\n  const mergedMax = max || 255;\n  if (value > mergedMax) {\n    return mergedMax;\n  }\n  if (value < 0) {\n    return 0;\n  }\n  return value;\n}\nexport class FastColor {\n  constructor(input) {\n    /**\n     * All FastColor objects are valid. So isValid is always true. This property is kept to be compatible with TinyColor.\n     */\n    _defineProperty(this, \"isValid\", true);\n    /**\n     * Red, R in RGB\n     */\n    _defineProperty(this, \"r\", 0);\n    /**\n     * Green, G in RGB\n     */\n    _defineProperty(this, \"g\", 0);\n    /**\n     * Blue, B in RGB\n     */\n    _defineProperty(this, \"b\", 0);\n    /**\n     * Alpha/Opacity, A in RGBA/HSLA\n     */\n    _defineProperty(this, \"a\", 1);\n    // HSV privates\n    _defineProperty(this, \"_h\", void 0);\n    _defineProperty(this, \"_s\", void 0);\n    _defineProperty(this, \"_l\", void 0);\n    _defineProperty(this, \"_v\", void 0);\n    // intermediate variables to calculate HSL/HSV\n    _defineProperty(this, \"_max\", void 0);\n    _defineProperty(this, \"_min\", void 0);\n    _defineProperty(this, \"_brightness\", void 0);\n    /**\n     * Always check 3 char in the object to determine the format.\n     * We not use function in check to save bundle size.\n     * e.g. 'rgb' -> { r: 0, g: 0, b: 0 }.\n     */\n    function matchFormat(str) {\n      return str[0] in input && str[1] in input && str[2] in input;\n    }\n    if (!input) {\n      // Do nothing since already initialized\n    } else if (typeof input === 'string') {\n      const trimStr = input.trim();\n      function matchPrefix(prefix) {\n        return trimStr.startsWith(prefix);\n      }\n      if (/^#?[A-F\\d]{3,8}$/i.test(trimStr)) {\n        this.fromHexString(trimStr);\n      } else if (matchPrefix('rgb')) {\n        this.fromRgbString(trimStr);\n      } else if (matchPrefix('hsl')) {\n        this.fromHslString(trimStr);\n      } else if (matchPrefix('hsv') || matchPrefix('hsb')) {\n        this.fromHsvString(trimStr);\n      }\n    } else if (input instanceof FastColor) {\n      this.r = input.r;\n      this.g = input.g;\n      this.b = input.b;\n      this.a = input.a;\n      this._h = input._h;\n      this._s = input._s;\n      this._l = input._l;\n      this._v = input._v;\n    } else if (matchFormat('rgb')) {\n      this.r = limitRange(input.r);\n      this.g = limitRange(input.g);\n      this.b = limitRange(input.b);\n      this.a = typeof input.a === 'number' ? limitRange(input.a, 1) : 1;\n    } else if (matchFormat('hsl')) {\n      this.fromHsl(input);\n    } else if (matchFormat('hsv')) {\n      this.fromHsv(input);\n    } else {\n      throw new Error('@ant-design/fast-color: unsupported input ' + JSON.stringify(input));\n    }\n  }\n\n  // ======================= Setter =======================\n\n  setR(value) {\n    return this._sc('r', value);\n  }\n  setG(value) {\n    return this._sc('g', value);\n  }\n  setB(value) {\n    return this._sc('b', value);\n  }\n  setA(value) {\n    return this._sc('a', value, 1);\n  }\n  setHue(value) {\n    const hsv = this.toHsv();\n    hsv.h = value;\n    return this._c(hsv);\n  }\n\n  // ======================= Getter =======================\n  /**\n   * Returns the perceived luminance of a color, from 0-1.\n   * @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n   */\n  getLuminance() {\n    function adjustGamma(raw) {\n      const val = raw / 255;\n      return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n    }\n    const R = adjustGamma(this.r);\n    const G = adjustGamma(this.g);\n    const B = adjustGamma(this.b);\n    return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n  }\n  getHue() {\n    if (typeof this._h === 'undefined') {\n      const delta = this.getMax() - this.getMin();\n      if (delta === 0) {\n        this._h = 0;\n      } else {\n        this._h = round(60 * (this.r === this.getMax() ? (this.g - this.b) / delta + (this.g < this.b ? 6 : 0) : this.g === this.getMax() ? (this.b - this.r) / delta + 2 : (this.r - this.g) / delta + 4));\n      }\n    }\n    return this._h;\n  }\n  getSaturation() {\n    if (typeof this._s === 'undefined') {\n      const delta = this.getMax() - this.getMin();\n      if (delta === 0) {\n        this._s = 0;\n      } else {\n        this._s = delta / this.getMax();\n      }\n    }\n    return this._s;\n  }\n  getLightness() {\n    if (typeof this._l === 'undefined') {\n      this._l = (this.getMax() + this.getMin()) / 510;\n    }\n    return this._l;\n  }\n  getValue() {\n    if (typeof this._v === 'undefined') {\n      this._v = this.getMax() / 255;\n    }\n    return this._v;\n  }\n\n  /**\n   * Returns the perceived brightness of the color, from 0-255.\n   * Note: this is not the b of HSB\n   * @see http://www.w3.org/TR/AERT#color-contrast\n   */\n  getBrightness() {\n    if (typeof this._brightness === 'undefined') {\n      this._brightness = (this.r * 299 + this.g * 587 + this.b * 114) / 1000;\n    }\n    return this._brightness;\n  }\n\n  // ======================== Func ========================\n\n  darken(amount = 10) {\n    const h = this.getHue();\n    const s = this.getSaturation();\n    let l = this.getLightness() - amount / 100;\n    if (l < 0) {\n      l = 0;\n    }\n    return this._c({\n      h,\n      s,\n      l,\n      a: this.a\n    });\n  }\n  lighten(amount = 10) {\n    const h = this.getHue();\n    const s = this.getSaturation();\n    let l = this.getLightness() + amount / 100;\n    if (l > 1) {\n      l = 1;\n    }\n    return this._c({\n      h,\n      s,\n      l,\n      a: this.a\n    });\n  }\n\n  /**\n   * Mix the current color a given amount with another color, from 0 to 100.\n   * 0 means no mixing (return current color).\n   */\n  mix(input, amount = 50) {\n    const color = this._c(input);\n    const p = amount / 100;\n    const calc = key => (color[key] - this[key]) * p + this[key];\n    const rgba = {\n      r: round(calc('r')),\n      g: round(calc('g')),\n      b: round(calc('b')),\n      a: round(calc('a') * 100) / 100\n    };\n    return this._c(rgba);\n  }\n\n  /**\n   * Mix the color with pure white, from 0 to 100.\n   * Providing 0 will do nothing, providing 100 will always return white.\n   */\n  tint(amount = 10) {\n    return this.mix({\n      r: 255,\n      g: 255,\n      b: 255,\n      a: 1\n    }, amount);\n  }\n\n  /**\n   * Mix the color with pure black, from 0 to 100.\n   * Providing 0 will do nothing, providing 100 will always return black.\n   */\n  shade(amount = 10) {\n    return this.mix({\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 1\n    }, amount);\n  }\n  onBackground(background) {\n    const bg = this._c(background);\n    const alpha = this.a + bg.a * (1 - this.a);\n    const calc = key => {\n      return round((this[key] * this.a + bg[key] * bg.a * (1 - this.a)) / alpha);\n    };\n    return this._c({\n      r: calc('r'),\n      g: calc('g'),\n      b: calc('b'),\n      a: alpha\n    });\n  }\n\n  // ======================= Status =======================\n  isDark() {\n    return this.getBrightness() < 128;\n  }\n  isLight() {\n    return this.getBrightness() >= 128;\n  }\n\n  // ======================== MISC ========================\n  equals(other) {\n    return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a;\n  }\n  clone() {\n    return this._c(this);\n  }\n\n  // ======================= Format =======================\n  toHexString() {\n    let hex = '#';\n    const rHex = (this.r || 0).toString(16);\n    hex += rHex.length === 2 ? rHex : '0' + rHex;\n    const gHex = (this.g || 0).toString(16);\n    hex += gHex.length === 2 ? gHex : '0' + gHex;\n    const bHex = (this.b || 0).toString(16);\n    hex += bHex.length === 2 ? bHex : '0' + bHex;\n    if (typeof this.a === 'number' && this.a >= 0 && this.a < 1) {\n      const aHex = round(this.a * 255).toString(16);\n      hex += aHex.length === 2 ? aHex : '0' + aHex;\n    }\n    return hex;\n  }\n\n  /** CSS support color pattern */\n  toHsl() {\n    return {\n      h: this.getHue(),\n      s: this.getSaturation(),\n      l: this.getLightness(),\n      a: this.a\n    };\n  }\n\n  /** CSS support color pattern */\n  toHslString() {\n    const h = this.getHue();\n    const s = round(this.getSaturation() * 100);\n    const l = round(this.getLightness() * 100);\n    return this.a !== 1 ? `hsla(${h},${s}%,${l}%,${this.a})` : `hsl(${h},${s}%,${l}%)`;\n  }\n\n  /** Same as toHsb */\n  toHsv() {\n    return {\n      h: this.getHue(),\n      s: this.getSaturation(),\n      v: this.getValue(),\n      a: this.a\n    };\n  }\n  toRgb() {\n    return {\n      r: this.r,\n      g: this.g,\n      b: this.b,\n      a: this.a\n    };\n  }\n  toRgbString() {\n    return this.a !== 1 ? `rgba(${this.r},${this.g},${this.b},${this.a})` : `rgb(${this.r},${this.g},${this.b})`;\n  }\n  toString() {\n    return this.toRgbString();\n  }\n\n  // ====================== Privates ======================\n  /** Return a new FastColor object with one channel changed */\n  _sc(rgb, value, max) {\n    const clone = this.clone();\n    clone[rgb] = limitRange(value, max);\n    return clone;\n  }\n  _c(input) {\n    return new this.constructor(input);\n  }\n  getMax() {\n    if (typeof this._max === 'undefined') {\n      this._max = Math.max(this.r, this.g, this.b);\n    }\n    return this._max;\n  }\n  getMin() {\n    if (typeof this._min === 'undefined') {\n      this._min = Math.min(this.r, this.g, this.b);\n    }\n    return this._min;\n  }\n  fromHexString(trimStr) {\n    const withoutPrefix = trimStr.replace('#', '');\n    function connectNum(index1, index2) {\n      return parseInt(withoutPrefix[index1] + withoutPrefix[index2 || index1], 16);\n    }\n    if (withoutPrefix.length < 6) {\n      // #rgb or #rgba\n      this.r = connectNum(0);\n      this.g = connectNum(1);\n      this.b = connectNum(2);\n      this.a = withoutPrefix[3] ? connectNum(3) / 255 : 1;\n    } else {\n      // #rrggbb or #rrggbbaa\n      this.r = connectNum(0, 1);\n      this.g = connectNum(2, 3);\n      this.b = connectNum(4, 5);\n      this.a = withoutPrefix[6] ? connectNum(6, 7) / 255 : 1;\n    }\n  }\n  fromHsl({\n    h,\n    s,\n    l,\n    a\n  }) {\n    this._h = h % 360;\n    this._s = s;\n    this._l = l;\n    this.a = typeof a === 'number' ? a : 1;\n    if (s <= 0) {\n      const rgb = round(l * 255);\n      this.r = rgb;\n      this.g = rgb;\n      this.b = rgb;\n    }\n    let r = 0,\n      g = 0,\n      b = 0;\n    const huePrime = h / 60;\n    const chroma = (1 - Math.abs(2 * l - 1)) * s;\n    const secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n    if (huePrime >= 0 && huePrime < 1) {\n      r = chroma;\n      g = secondComponent;\n    } else if (huePrime >= 1 && huePrime < 2) {\n      r = secondComponent;\n      g = chroma;\n    } else if (huePrime >= 2 && huePrime < 3) {\n      g = chroma;\n      b = secondComponent;\n    } else if (huePrime >= 3 && huePrime < 4) {\n      g = secondComponent;\n      b = chroma;\n    } else if (huePrime >= 4 && huePrime < 5) {\n      r = secondComponent;\n      b = chroma;\n    } else if (huePrime >= 5 && huePrime < 6) {\n      r = chroma;\n      b = secondComponent;\n    }\n    const lightnessModification = l - chroma / 2;\n    this.r = round((r + lightnessModification) * 255);\n    this.g = round((g + lightnessModification) * 255);\n    this.b = round((b + lightnessModification) * 255);\n  }\n  fromHsv({\n    h,\n    s,\n    v,\n    a\n  }) {\n    this._h = h % 360;\n    this._s = s;\n    this._v = v;\n    this.a = typeof a === 'number' ? a : 1;\n    const vv = round(v * 255);\n    this.r = vv;\n    this.g = vv;\n    this.b = vv;\n    if (s <= 0) {\n      return;\n    }\n    const hh = h / 60;\n    const i = Math.floor(hh);\n    const ff = hh - i;\n    const p = round(v * (1.0 - s) * 255);\n    const q = round(v * (1.0 - s * ff) * 255);\n    const t = round(v * (1.0 - s * (1.0 - ff)) * 255);\n    switch (i) {\n      case 0:\n        this.g = t;\n        this.b = p;\n        break;\n      case 1:\n        this.r = q;\n        this.b = p;\n        break;\n      case 2:\n        this.r = p;\n        this.b = t;\n        break;\n      case 3:\n        this.r = p;\n        this.g = q;\n        break;\n      case 4:\n        this.r = t;\n        this.g = p;\n        break;\n      case 5:\n      default:\n        this.g = p;\n        this.b = q;\n        break;\n    }\n  }\n  fromHsvString(trimStr) {\n    const cells = splitColorStr(trimStr, parseHSVorHSL);\n    this.fromHsv({\n      h: cells[0],\n      s: cells[1],\n      v: cells[2],\n      a: cells[3]\n    });\n  }\n  fromHslString(trimStr) {\n    const cells = splitColorStr(trimStr, parseHSVorHSL);\n    this.fromHsl({\n      h: cells[0],\n      s: cells[1],\n      l: cells[2],\n      a: cells[3]\n    });\n  }\n  fromRgbString(trimStr) {\n    const cells = splitColorStr(trimStr, (num, txt) =>\n    // Convert percentage to number. e.g. 50% -> 128\n    txt.includes('%') ? round(num / 100 * 255) : num);\n    this.r = cells[0];\n    this.g = cells[1];\n    this.b = cells[2];\n    this.a = cells[3];\n  }\n}","import { FastColor } from '@ant-design/fast-color';\nvar hueStep = 2; // 色相阶梯\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\nvar lightColorCount = 5; // 浅色数量,主色上\nvar darkColorCount = 4; // 深色数量,主色下\n\n// 暗色主题颜色映射关系表\nvar darkColorMap = [{\n  index: 7,\n  amount: 15\n}, {\n  index: 6,\n  amount: 25\n}, {\n  index: 5,\n  amount: 30\n}, {\n  index: 5,\n  amount: 45\n}, {\n  index: 5,\n  amount: 65\n}, {\n  index: 5,\n  amount: 85\n}, {\n  index: 4,\n  amount: 90\n}, {\n  index: 3,\n  amount: 95\n}, {\n  index: 2,\n  amount: 97\n}, {\n  index: 1,\n  amount: 98\n}];\nfunction getHue(hsv, i, light) {\n  var hue;\n  // 根据色相不同,色相转向不同\n  if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n    hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n  } else {\n    hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n  }\n  if (hue < 0) {\n    hue += 360;\n  } else if (hue >= 360) {\n    hue -= 360;\n  }\n  return hue;\n}\nfunction getSaturation(hsv, i, light) {\n  // grey color don't change saturation\n  if (hsv.h === 0 && hsv.s === 0) {\n    return hsv.s;\n  }\n  var saturation;\n  if (light) {\n    saturation = hsv.s - saturationStep * i;\n  } else if (i === darkColorCount) {\n    saturation = hsv.s + saturationStep;\n  } else {\n    saturation = hsv.s + saturationStep2 * i;\n  }\n  // 边界值修正\n  if (saturation > 1) {\n    saturation = 1;\n  }\n  // 第一格的 s 限制在 0.06-0.1 之间\n  if (light && i === lightColorCount && saturation > 0.1) {\n    saturation = 0.1;\n  }\n  if (saturation < 0.06) {\n    saturation = 0.06;\n  }\n  return Math.round(saturation * 100) / 100;\n}\nfunction getValue(hsv, i, light) {\n  var value;\n  if (light) {\n    value = hsv.v + brightnessStep1 * i;\n  } else {\n    value = hsv.v - brightnessStep2 * i;\n  }\n  // Clamp value between 0 and 1\n  value = Math.max(0, Math.min(1, value));\n  return Math.round(value * 100) / 100;\n}\nexport default function generate(color) {\n  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var patterns = [];\n  var pColor = new FastColor(color);\n  var hsv = pColor.toHsv();\n  for (var i = lightColorCount; i > 0; i -= 1) {\n    var c = new FastColor({\n      h: getHue(hsv, i, true),\n      s: getSaturation(hsv, i, true),\n      v: getValue(hsv, i, true)\n    });\n    patterns.push(c);\n  }\n  patterns.push(pColor);\n  for (var _i = 1; _i <= darkColorCount; _i += 1) {\n    var _c = new FastColor({\n      h: getHue(hsv, _i),\n      s: getSaturation(hsv, _i),\n      v: getValue(hsv, _i)\n    });\n    patterns.push(_c);\n  }\n\n  // dark theme patterns\n  if (opts.theme === 'dark') {\n    return darkColorMap.map(function (_ref) {\n      var index = _ref.index,\n        amount = _ref.amount;\n      return new FastColor(opts.backgroundColor || '#141414').mix(patterns[index], amount).toHexString();\n    });\n  }\n  return patterns.map(function (c) {\n    return c.toHexString();\n  });\n}","// Generated by script. Do NOT modify!\n\nexport var presetPrimaryColors = {\n  \"red\": \"#F5222D\",\n  \"volcano\": \"#FA541C\",\n  \"orange\": \"#FA8C16\",\n  \"gold\": \"#FAAD14\",\n  \"yellow\": \"#FADB14\",\n  \"lime\": \"#A0D911\",\n  \"green\": \"#52C41A\",\n  \"cyan\": \"#13C2C2\",\n  \"blue\": \"#1677FF\",\n  \"geekblue\": \"#2F54EB\",\n  \"purple\": \"#722ED1\",\n  \"magenta\": \"#EB2F96\",\n  \"grey\": \"#666666\"\n};\nexport var red = [\"#fff1f0\", \"#ffccc7\", \"#ffa39e\", \"#ff7875\", \"#ff4d4f\", \"#f5222d\", \"#cf1322\", \"#a8071a\", \"#820014\", \"#5c0011\"];\nred.primary = red[5];\nexport var volcano = [\"#fff2e8\", \"#ffd8bf\", \"#ffbb96\", \"#ff9c6e\", \"#ff7a45\", \"#fa541c\", \"#d4380d\", \"#ad2102\", \"#871400\", \"#610b00\"];\nvolcano.primary = volcano[5];\nexport var orange = [\"#fff7e6\", \"#ffe7ba\", \"#ffd591\", \"#ffc069\", \"#ffa940\", \"#fa8c16\", \"#d46b08\", \"#ad4e00\", \"#873800\", \"#612500\"];\norange.primary = orange[5];\nexport var gold = [\"#fffbe6\", \"#fff1b8\", \"#ffe58f\", \"#ffd666\", \"#ffc53d\", \"#faad14\", \"#d48806\", \"#ad6800\", \"#874d00\", \"#613400\"];\ngold.primary = gold[5];\nexport var yellow = [\"#feffe6\", \"#ffffb8\", \"#fffb8f\", \"#fff566\", \"#ffec3d\", \"#fadb14\", \"#d4b106\", \"#ad8b00\", \"#876800\", \"#614700\"];\nyellow.primary = yellow[5];\nexport var lime = [\"#fcffe6\", \"#f4ffb8\", \"#eaff8f\", \"#d3f261\", \"#bae637\", \"#a0d911\", \"#7cb305\", \"#5b8c00\", \"#3f6600\", \"#254000\"];\nlime.primary = lime[5];\nexport var green = [\"#f6ffed\", \"#d9f7be\", \"#b7eb8f\", \"#95de64\", \"#73d13d\", \"#52c41a\", \"#389e0d\", \"#237804\", \"#135200\", \"#092b00\"];\ngreen.primary = green[5];\nexport var cyan = [\"#e6fffb\", \"#b5f5ec\", \"#87e8de\", \"#5cdbd3\", \"#36cfc9\", \"#13c2c2\", \"#08979c\", \"#006d75\", \"#00474f\", \"#002329\"];\ncyan.primary = cyan[5];\nexport var blue = [\"#e6f4ff\", \"#bae0ff\", \"#91caff\", \"#69b1ff\", \"#4096ff\", \"#1677ff\", \"#0958d9\", \"#003eb3\", \"#002c8c\", \"#001d66\"];\nblue.primary = blue[5];\nexport var geekblue = [\"#f0f5ff\", \"#d6e4ff\", \"#adc6ff\", \"#85a5ff\", \"#597ef7\", \"#2f54eb\", \"#1d39c4\", \"#10239e\", \"#061178\", \"#030852\"];\ngeekblue.primary = geekblue[5];\nexport var purple = [\"#f9f0ff\", \"#efdbff\", \"#d3adf7\", \"#b37feb\", \"#9254de\", \"#722ed1\", \"#531dab\", \"#391085\", \"#22075e\", \"#120338\"];\npurple.primary = purple[5];\nexport var magenta = [\"#fff0f6\", \"#ffd6e7\", \"#ffadd2\", \"#ff85c0\", \"#f759ab\", \"#eb2f96\", \"#c41d7f\", \"#9e1068\", \"#780650\", \"#520339\"];\nmagenta.primary = magenta[5];\nexport var grey = [\"#a6a6a6\", \"#999999\", \"#8c8c8c\", \"#808080\", \"#737373\", \"#666666\", \"#404040\", \"#1a1a1a\", \"#000000\", \"#000000\"];\ngrey.primary = grey[5];\nexport var gray = grey;\nexport var presetPalettes = {\n  red: red,\n  volcano: volcano,\n  orange: orange,\n  gold: gold,\n  yellow: yellow,\n  lime: lime,\n  green: green,\n  cyan: cyan,\n  blue: blue,\n  geekblue: geekblue,\n  purple: purple,\n  magenta: magenta,\n  grey: grey\n};\nexport var redDark = [\"#2a1215\", \"#431418\", \"#58181c\", \"#791a1f\", \"#a61d24\", \"#d32029\", \"#e84749\", \"#f37370\", \"#f89f9a\", \"#fac8c3\"];\nredDark.primary = redDark[5];\nexport var volcanoDark = [\"#2b1611\", \"#441d12\", \"#592716\", \"#7c3118\", \"#aa3e19\", \"#d84a1b\", \"#e87040\", \"#f3956a\", \"#f8b692\", \"#fad4bc\"];\nvolcanoDark.primary = volcanoDark[5];\nexport var orangeDark = [\"#2b1d11\", \"#442a11\", \"#593815\", \"#7c4a15\", \"#aa6215\", \"#d87a16\", \"#e89a3c\", \"#f3b765\", \"#f8cf8d\", \"#fae3b7\"];\norangeDark.primary = orangeDark[5];\nexport var goldDark = [\"#2b2111\", \"#443111\", \"#594214\", \"#7c5914\", \"#aa7714\", \"#d89614\", \"#e8b339\", \"#f3cc62\", \"#f8df8b\", \"#faedb5\"];\ngoldDark.primary = goldDark[5];\nexport var yellowDark = [\"#2b2611\", \"#443b11\", \"#595014\", \"#7c6e14\", \"#aa9514\", \"#d8bd14\", \"#e8d639\", \"#f3ea62\", \"#f8f48b\", \"#fafab5\"];\nyellowDark.primary = yellowDark[5];\nexport var limeDark = [\"#1f2611\", \"#2e3c10\", \"#3e4f13\", \"#536d13\", \"#6f9412\", \"#8bbb11\", \"#a9d134\", \"#c9e75d\", \"#e4f88b\", \"#f0fab5\"];\nlimeDark.primary = limeDark[5];\nexport var greenDark = [\"#162312\", \"#1d3712\", \"#274916\", \"#306317\", \"#3c8618\", \"#49aa19\", \"#6abe39\", \"#8fd460\", \"#b2e58b\", \"#d5f2bb\"];\ngreenDark.primary = greenDark[5];\nexport var cyanDark = [\"#112123\", \"#113536\", \"#144848\", \"#146262\", \"#138585\", \"#13a8a8\", \"#33bcb7\", \"#58d1c9\", \"#84e2d8\", \"#b2f1e8\"];\ncyanDark.primary = cyanDark[5];\nexport var blueDark = [\"#111a2c\", \"#112545\", \"#15325b\", \"#15417e\", \"#1554ad\", \"#1668dc\", \"#3c89e8\", \"#65a9f3\", \"#8dc5f8\", \"#b7dcfa\"];\nblueDark.primary = blueDark[5];\nexport var geekblueDark = [\"#131629\", \"#161d40\", \"#1c2755\", \"#203175\", \"#263ea0\", \"#2b4acb\", \"#5273e0\", \"#7f9ef3\", \"#a8c1f8\", \"#d2e0fa\"];\ngeekblueDark.primary = geekblueDark[5];\nexport var purpleDark = [\"#1a1325\", \"#24163a\", \"#301c4d\", \"#3e2069\", \"#51258f\", \"#642ab5\", \"#854eca\", \"#ab7ae0\", \"#cda8f0\", \"#ebd7fa\"];\npurpleDark.primary = purpleDark[5];\nexport var magentaDark = [\"#291321\", \"#40162f\", \"#551c3b\", \"#75204f\", \"#a02669\", \"#cb2b83\", \"#e0529c\", \"#f37fb7\", \"#f8a8cc\", \"#fad2e3\"];\nmagentaDark.primary = magentaDark[5];\nexport var greyDark = [\"#151515\", \"#1f1f1f\", \"#2d2d2d\", \"#393939\", \"#494949\", \"#5a5a5a\", \"#6a6a6a\", \"#7b7b7b\", \"#888888\", \"#969696\"];\ngreyDark.primary = greyDark[5];\nexport var presetDarkPalettes = {\n  red: redDark,\n  volcano: volcanoDark,\n  orange: orangeDark,\n  gold: goldDark,\n  yellow: yellowDark,\n  lime: limeDark,\n  green: greenDark,\n  cyan: cyanDark,\n  blue: blueDark,\n  geekblue: geekblueDark,\n  purple: purpleDark,\n  magenta: magentaDark,\n  grey: greyDark\n};","import { createContext } from 'react';\nvar IconContext = /*#__PURE__*/createContext({});\nexport default IconContext;","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","export default function canUseDom() {\n  return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","export default function contains(root, n) {\n  if (!root) {\n    return false;\n  }\n\n  // Use native if support\n  if (root.contains) {\n    return root.contains(n);\n  }\n\n  // `document.contains` not support with IE11\n  var node = n;\n  while (node) {\n    if (node === root) {\n      return true;\n    }\n    node = node.parentNode;\n  }\n  return false;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport canUseDom from \"./canUseDom\";\nimport contains from \"./contains\";\nvar APPEND_ORDER = 'data-rc-order';\nvar APPEND_PRIORITY = 'data-rc-priority';\nvar MARK_KEY = \"rc-util-key\";\nvar containerCache = new Map();\nfunction getMark() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n    mark = _ref.mark;\n  if (mark) {\n    return mark.startsWith('data-') ? mark : \"data-\".concat(mark);\n  }\n  return MARK_KEY;\n}\nfunction getContainer(option) {\n  if (option.attachTo) {\n    return option.attachTo;\n  }\n  var head = document.querySelector('head');\n  return head || document.body;\n}\nfunction getOrder(prepend) {\n  if (prepend === 'queue') {\n    return 'prependQueue';\n  }\n  return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n  return Array.from((containerCache.get(container) || container).children).filter(function (node) {\n    return node.tagName === 'STYLE';\n  });\n}\nexport function injectCSS(css) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  if (!canUseDom()) {\n    return null;\n  }\n  var csp = option.csp,\n    prepend = option.prepend,\n    _option$priority = option.priority,\n    priority = _option$priority === void 0 ? 0 : _option$priority;\n  var mergedOrder = getOrder(prepend);\n  var isPrependQueue = mergedOrder === 'prependQueue';\n  var styleNode = document.createElement('style');\n  styleNode.setAttribute(APPEND_ORDER, mergedOrder);\n  if (isPrependQueue && priority) {\n    styleNode.setAttribute(APPEND_PRIORITY, \"\".concat(priority));\n  }\n  if (csp !== null && csp !== void 0 && csp.nonce) {\n    styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;\n  }\n  styleNode.innerHTML = css;\n  var container = getContainer(option);\n  var firstChild = container.firstChild;\n  if (prepend) {\n    // If is queue `prepend`, it will prepend first style and then append rest style\n    if (isPrependQueue) {\n      var existStyle = (option.styles || findStyles(container)).filter(function (node) {\n        // Ignore style which not injected by rc-util with prepend\n        if (!['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER))) {\n          return false;\n        }\n\n        // Ignore style which priority less then new style\n        var nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);\n        return priority >= nodePriority;\n      });\n      if (existStyle.length) {\n        container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n        return styleNode;\n      }\n    }\n\n    // Use `insertBefore` as `prepend`\n    container.insertBefore(styleNode, firstChild);\n  } else {\n    container.appendChild(styleNode);\n  }\n  return styleNode;\n}\nfunction findExistNode(key) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var container = getContainer(option);\n  return (option.styles || findStyles(container)).find(function (node) {\n    return node.getAttribute(getMark(option)) === key;\n  });\n}\nexport function removeCSS(key) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var existNode = findExistNode(key, option);\n  if (existNode) {\n    var container = getContainer(option);\n    container.removeChild(existNode);\n  }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n  var cachedRealContainer = containerCache.get(container);\n\n  // Find real container when not cached or cached container removed\n  if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n    var placeholderStyle = injectCSS('', option);\n    var parentNode = placeholderStyle.parentNode;\n    containerCache.set(container, parentNode);\n    container.removeChild(placeholderStyle);\n  }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n  containerCache.clear();\n}\nexport function updateCSS(css, key) {\n  var originOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var container = getContainer(originOption);\n  var styles = findStyles(container);\n  var option = _objectSpread(_objectSpread({}, originOption), {}, {\n    styles: styles\n  });\n\n  // Sync real parent\n  syncRealContainer(container, option);\n  var existNode = findExistNode(key, option);\n  if (existNode) {\n    var _option$csp, _option$csp2;\n    if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {\n      var _option$csp3;\n      existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;\n    }\n    if (existNode.innerHTML !== css) {\n      existNode.innerHTML = css;\n    }\n    return existNode;\n  }\n  var newNode = injectCSS(css, option);\n  newNode.setAttribute(getMark(option), key);\n  return newNode;\n}","function getRoot(ele) {\n  var _ele$getRootNode;\n  return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele);\n}\n\n/**\n * Check if is in shadowRoot\n */\nexport function inShadow(ele) {\n  return getRoot(ele) instanceof ShadowRoot;\n}\n\n/**\n * Return shadowRoot if possible\n */\nexport function getShadowRoot(ele) {\n  return inShadow(ele) ? getRoot(ele) : null;\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n  preWarningFns.push(fn);\n};\n\n/**\n * Warning if condition not match.\n * @param valid Condition\n * @param message Warning message\n * @example\n * ```js\n * warning(false, 'some error'); // print some error\n * warning(true, 'some error'); // print nothing\n * warning(1 === 2, 'some error'); // print some error\n * ```\n */\nexport function warning(valid, message) {\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n      return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n    }, message);\n    if (finalMessage) {\n      console.error(\"Warning: \".concat(finalMessage));\n    }\n  }\n}\n\n/** @see Similar to {@link warning} */\nexport function note(valid, message) {\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n      return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n    }, message);\n    if (finalMessage) {\n      console.warn(\"Note: \".concat(finalMessage));\n    }\n  }\n}\nexport function resetWarned() {\n  warned = {};\n}\nexport function call(method, valid, message) {\n  if (!valid && !warned[message]) {\n    method(false, message);\n    warned[message] = true;\n  }\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function warningOnce(valid, message) {\n  call(warning, valid, message);\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function noteOnce(valid, message) {\n  call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { generate as generateColor } from '@ant-design/colors';\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport warn from \"rc-util/es/warning\";\nimport React, { useContext, useEffect } from 'react';\nimport IconContext from \"./components/Context\";\nfunction camelCase(input) {\n  return input.replace(/-(.)/g, function (match, g) {\n    return g.toUpperCase();\n  });\n}\nexport function warning(valid, message) {\n  warn(valid, \"[@ant-design/icons] \".concat(message));\n}\nexport function isIconDefinition(target) {\n  return _typeof(target) === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (_typeof(target.icon) === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n  var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return Object.keys(attrs).reduce(function (acc, key) {\n    var val = attrs[key];\n    switch (key) {\n      case 'class':\n        acc.className = val;\n        delete acc.class;\n        break;\n      default:\n        delete acc[key];\n        acc[camelCase(key)] = val;\n    }\n    return acc;\n  }, {});\n}\nexport function generate(node, key, rootProps) {\n  if (!rootProps) {\n    return /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n      key: key\n    }, normalizeAttrs(node.attrs)), (node.children || []).map(function (child, index) {\n      return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n    }));\n  }\n  return /*#__PURE__*/React.createElement(node.tag, _objectSpread(_objectSpread({\n    key: key\n  }, normalizeAttrs(node.attrs)), rootProps), (node.children || []).map(function (child, index) {\n    return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n  }));\n}\nexport function getSecondaryColor(primaryColor) {\n  // choose the second color\n  return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n  if (!twoToneColor) {\n    return [];\n  }\n  return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n}\n\n// These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\nexport var svgBaseProps = {\n  width: '1em',\n  height: '1em',\n  fill: 'currentColor',\n  'aria-hidden': 'true',\n  focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n  display: inline-flex;\\n  align-items: center;\\n  color: inherit;\\n  font-style: normal;\\n  line-height: 0;\\n  text-align: center;\\n  text-transform: none;\\n  vertical-align: -0.125em;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n  line-height: 1;\\n}\\n\\n.anticon svg {\\n  display: inline-block;\\n}\\n\\n.anticon::before {\\n  display: none;\\n}\\n\\n.anticon .anticon-icon {\\n  display: block;\\n}\\n\\n.anticon[tabindex] {\\n  cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n  display: inline-block;\\n  -webkit-animation: loadingCircle 1s infinite linear;\\n  animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n    transform: rotate(360deg);\\n  }\\n}\\n\\n@keyframes loadingCircle {\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n    transform: rotate(360deg);\\n  }\\n}\\n\";\nexport var useInsertStyles = function useInsertStyles(eleRef) {\n  var _useContext = useContext(IconContext),\n    csp = _useContext.csp,\n    prefixCls = _useContext.prefixCls,\n    layer = _useContext.layer;\n  var mergedStyleStr = iconStyles;\n  if (prefixCls) {\n    mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);\n  }\n  if (layer) {\n    mergedStyleStr = \"@layer \".concat(layer, \" {\\n\").concat(mergedStyleStr, \"\\n}\");\n  }\n  useEffect(function () {\n    var ele = eleRef.current;\n    var shadowRoot = getShadowRoot(ele);\n    updateCSS(mergedStyleStr, '@ant-design-icons', {\n      prepend: !layer,\n      csp: csp,\n      attachTo: shadowRoot\n    });\n  }, []);\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"icon\", \"className\", \"onClick\", \"style\", \"primaryColor\", \"secondaryColor\"];\nimport * as React from 'react';\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from \"../utils\";\nvar twoToneColorPalette = {\n  primaryColor: '#333',\n  secondaryColor: '#E6E6E6',\n  calculated: false\n};\nfunction setTwoToneColors(_ref) {\n  var primaryColor = _ref.primaryColor,\n    secondaryColor = _ref.secondaryColor;\n  twoToneColorPalette.primaryColor = primaryColor;\n  twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n  twoToneColorPalette.calculated = !!secondaryColor;\n}\nfunction getTwoToneColors() {\n  return _objectSpread({}, twoToneColorPalette);\n}\nvar IconBase = function IconBase(props) {\n  var icon = props.icon,\n    className = props.className,\n    onClick = props.onClick,\n    style = props.style,\n    primaryColor = props.primaryColor,\n    secondaryColor = props.secondaryColor,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var svgRef = React.useRef();\n  var colors = twoToneColorPalette;\n  if (primaryColor) {\n    colors = {\n      primaryColor: primaryColor,\n      secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n    };\n  }\n  useInsertStyles(svgRef);\n  warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n  if (!isIconDefinition(icon)) {\n    return null;\n  }\n  var target = icon;\n  if (target && typeof target.icon === 'function') {\n    target = _objectSpread(_objectSpread({}, target), {}, {\n      icon: target.icon(colors.primaryColor, colors.secondaryColor)\n    });\n  }\n  return generate(target.icon, \"svg-\".concat(target.name), _objectSpread(_objectSpread({\n    className: className,\n    onClick: onClick,\n    style: style,\n    'data-icon': target.name,\n    width: '1em',\n    height: '1em',\n    fill: 'currentColor',\n    'aria-hidden': 'true'\n  }, restProps), {}, {\n    ref: svgRef\n  }));\n};\nIconBase.displayName = 'IconReact';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ReactIcon from \"./IconBase\";\nimport { normalizeTwoToneColors } from \"../utils\";\nexport function setTwoToneColor(twoToneColor) {\n  var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n    _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n    primaryColor = _normalizeTwoToneColo2[0],\n    secondaryColor = _normalizeTwoToneColo2[1];\n  return ReactIcon.setTwoToneColors({\n    primaryColor: primaryColor,\n    secondaryColor: secondaryColor\n  });\n}\nexport function getTwoToneColor() {\n  var colors = ReactIcon.getTwoToneColors();\n  if (!colors.calculated) {\n    return colors.primaryColor;\n  }\n  return [colors.primaryColor, colors.secondaryColor];\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"icon\", \"spin\", \"rotate\", \"tabIndex\", \"onClick\", \"twoToneColor\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { blue } from '@ant-design/colors';\nimport Context from \"./Context\";\nimport ReactIcon from \"./IconBase\";\nimport { getTwoToneColor, setTwoToneColor } from \"./twoTonePrimaryColor\";\nimport { normalizeTwoToneColors } from \"../utils\";\n// Initial setting\n// should move it to antd main repo?\nsetTwoToneColor(blue.primary);\n\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757#issuecomment-488848720\n\nvar Icon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var className = props.className,\n    icon = props.icon,\n    spin = props.spin,\n    rotate = props.rotate,\n    tabIndex = props.tabIndex,\n    onClick = props.onClick,\n    twoToneColor = props.twoToneColor,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var _React$useContext = React.useContext(Context),\n    _React$useContext$pre = _React$useContext.prefixCls,\n    prefixCls = _React$useContext$pre === void 0 ? 'anticon' : _React$useContext$pre,\n    rootClassName = _React$useContext.rootClassName;\n  var classString = classNames(rootClassName, prefixCls, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-\").concat(icon.name), !!icon.name), \"\".concat(prefixCls, \"-spin\"), !!spin || icon.name === 'loading'), className);\n  var iconTabIndex = tabIndex;\n  if (iconTabIndex === undefined && onClick) {\n    iconTabIndex = -1;\n  }\n  var svgStyle = rotate ? {\n    msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n    transform: \"rotate(\".concat(rotate, \"deg)\")\n  } : undefined;\n  var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n    _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n    primaryColor = _normalizeTwoToneColo2[0],\n    secondaryColor = _normalizeTwoToneColo2[1];\n  return /*#__PURE__*/React.createElement(\"span\", _extends({\n    role: \"img\",\n    \"aria-label\": icon.name\n  }, restProps, {\n    ref: ref,\n    tabIndex: iconTabIndex,\n    onClick: onClick,\n    className: classString\n  }), /*#__PURE__*/React.createElement(ReactIcon, {\n    icon: icon,\n    primaryColor: primaryColor,\n    secondaryColor: secondaryColor,\n    style: svgStyle\n  }));\n});\nIcon.displayName = 'AntdIcon';\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport BarsOutlinedSvg from \"@ant-design/icons-svg/es/asn/BarsOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar BarsOutlined = function BarsOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: BarsOutlinedSvg\n  }));\n};\n\n/**![bars](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkxMiAxOTJIMzI4Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU4NGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAyODRIMzI4Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU4NGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHptMCAyODRIMzI4Yy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDU4NGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHpNMTA0IDIyOGE1NiA1NiAwIDEwMTEyIDAgNTYgNTYgMCAxMC0xMTIgMHptMCAyODRhNTYgNTYgMCAxMDExMiAwIDU2IDU2IDAgMTAtMTEyIDB6bTAgMjg0YTU2IDU2IDAgMTAxMTIgMCA1NiA1NiAwIDEwLTExMiAweiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(BarsOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'BarsOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar LeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\" } }] }, \"name\": \"left\", \"theme\": \"outlined\" };\nexport default LeftOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LeftOutlined = function LeftOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: LeftOutlinedSvg\n  }));\n};\n\n/**![left](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcyNCAyMTguM1YxNDFjMC02LjctNy43LTEwLjQtMTIuOS02LjNMMjYwLjMgNDg2LjhhMzEuODYgMzEuODYgMCAwMDAgNTAuM2w0NTAuOCAzNTIuMWM1LjMgNC4xIDEyLjkuNCAxMi45LTYuM3YtNzcuM2MwLTQuOS0yLjMtOS42LTYuMS0xMi42bC0zNjAtMjgxIDM2MC0yODEuMWMzLjgtMyA2LjEtNy43IDYuMS0xMi42eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(LeftOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'LeftOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar RightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\" } }] }, \"name\": \"right\", \"theme\": \"outlined\" };\nexport default RightOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport RightOutlinedSvg from \"@ant-design/icons-svg/es/asn/RightOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar RightOutlined = function RightOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: RightOutlinedSvg\n  }));\n};\n\n/**![right](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTc2NS43IDQ4Ni44TDMxNC45IDEzNC43QTcuOTcgNy45NyAwIDAwMzAyIDE0MXY3Ny4zYzAgNC45IDIuMyA5LjYgNi4xIDEyLjZsMzYwIDI4MS4xLTM2MCAyODEuMWMtMy45IDMtNi4xIDcuNy02LjEgMTIuNlY4ODNjMCA2LjcgNy43IDEwLjQgMTIuOSA2LjNsNDUwLjgtMzUyLjFhMzEuOTYgMzEuOTYgMCAwMDAtNTAuNHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(RightOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'RightOutlined';\n}\nexport default RefIcon;","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","import * as React from 'react';\nexport default function useMemo(getValue, condition, shouldUpdate) {\n  var cacheRef = React.useRef({});\n  if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {\n    cacheRef.current.value = getValue();\n    cacheRef.current.condition = condition;\n  }\n  return cacheRef.current.value;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n  var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n  var refSet = new Set();\n  function deepEqual(a, b) {\n    var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n    var circular = refSet.has(a);\n    warning(!circular, 'Warning: There may be circular references');\n    if (circular) {\n      return false;\n    }\n    if (a === b) {\n      return true;\n    }\n    if (shallow && level > 1) {\n      return false;\n    }\n    refSet.add(a);\n    var newLevel = level + 1;\n    if (Array.isArray(a)) {\n      if (!Array.isArray(b) || a.length !== b.length) {\n        return false;\n      }\n      for (var i = 0; i < a.length; i++) {\n        if (!deepEqual(a[i], b[i], newLevel)) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n      var keys = Object.keys(a);\n      if (keys.length !== Object.keys(b).length) {\n        return false;\n      }\n      return keys.every(function (key) {\n        return deepEqual(a[key], b[key], newLevel);\n      });\n    }\n    // other\n    return false;\n  }\n  return deepEqual(obj1, obj2);\n}\nexport default isEqual;","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// [times, realValue]\n\nvar SPLIT = '%';\n\n/** Connect key with `SPLIT` */\nexport function pathKey(keys) {\n  return keys.join(SPLIT);\n}\nvar Entity = /*#__PURE__*/function () {\n  function Entity(instanceId) {\n    _classCallCheck(this, Entity);\n    _defineProperty(this, \"instanceId\", void 0);\n    /** @private Internal cache map. Do not access this directly */\n    _defineProperty(this, \"cache\", new Map());\n    this.instanceId = instanceId;\n  }\n  _createClass(Entity, [{\n    key: \"get\",\n    value: function get(keys) {\n      return this.opGet(pathKey(keys));\n    }\n\n    /** A fast get cache with `get` concat. */\n  }, {\n    key: \"opGet\",\n    value: function opGet(keyPathStr) {\n      return this.cache.get(keyPathStr) || null;\n    }\n  }, {\n    key: \"update\",\n    value: function update(keys, valueFn) {\n      return this.opUpdate(pathKey(keys), valueFn);\n    }\n\n    /** A fast get cache with `get` concat. */\n  }, {\n    key: \"opUpdate\",\n    value: function opUpdate(keyPathStr, valueFn) {\n      var prevValue = this.cache.get(keyPathStr);\n      var nextValue = valueFn(prevValue);\n      if (nextValue === null) {\n        this.cache.delete(keyPathStr);\n      } else {\n        this.cache.set(keyPathStr, nextValue);\n      }\n    }\n  }]);\n  return Entity;\n}();\nexport default Entity;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport * as React from 'react';\nimport CacheEntity from \"./Cache\";\nexport var ATTR_TOKEN = 'data-token-hash';\nexport var ATTR_MARK = 'data-css-hash';\nexport var ATTR_CACHE_PATH = 'data-cache-path';\n\n// Mark css-in-js instance in style element\nexport var CSS_IN_JS_INSTANCE = '__cssinjs_instance__';\nexport function createCache() {\n  var cssinjsInstanceId = Math.random().toString(12).slice(2);\n\n  // Tricky SSR: Move all inline style to the head.\n  // PS: We do not recommend tricky mode.\n  if (typeof document !== 'undefined' && document.head && document.body) {\n    var styles = document.body.querySelectorAll(\"style[\".concat(ATTR_MARK, \"]\")) || [];\n    var firstChild = document.head.firstChild;\n    Array.from(styles).forEach(function (style) {\n      style[CSS_IN_JS_INSTANCE] = style[CSS_IN_JS_INSTANCE] || cssinjsInstanceId;\n\n      // Not force move if no head\n      if (style[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {\n        document.head.insertBefore(style, firstChild);\n      }\n    });\n\n    // Deduplicate of moved styles\n    var styleHash = {};\n    Array.from(document.querySelectorAll(\"style[\".concat(ATTR_MARK, \"]\"))).forEach(function (style) {\n      var hash = style.getAttribute(ATTR_MARK);\n      if (styleHash[hash]) {\n        if (style[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {\n          var _style$parentNode;\n          (_style$parentNode = style.parentNode) === null || _style$parentNode === void 0 || _style$parentNode.removeChild(style);\n        }\n      } else {\n        styleHash[hash] = true;\n      }\n    });\n  }\n  return new CacheEntity(cssinjsInstanceId);\n}\nvar StyleContext = /*#__PURE__*/React.createContext({\n  hashPriority: 'low',\n  cache: createCache(),\n  defaultCache: true\n});\nexport var StyleProvider = function StyleProvider(props) {\n  var children = props.children,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var parentContext = React.useContext(StyleContext);\n  var context = useMemo(function () {\n    var mergedContext = _objectSpread({}, parentContext);\n    Object.keys(restProps).forEach(function (key) {\n      var value = restProps[key];\n      if (restProps[key] !== undefined) {\n        mergedContext[key] = value;\n      }\n    });\n    var cache = restProps.cache;\n    mergedContext.cache = mergedContext.cache || createCache();\n    mergedContext.defaultCache = !cache && parentContext.defaultCache;\n    return mergedContext;\n  }, [parentContext, restProps], function (prev, next) {\n    return !isEqual(prev[0], next[0], true) || !isEqual(prev[1], next[1], true);\n  });\n  return /*#__PURE__*/React.createElement(StyleContext.Provider, {\n    value: context\n  }, children);\n};\nexport default StyleContext;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport AbstractCalculator from \"./calculator\";\nvar CALC_UNIT = 'CALC_UNIT';\nvar regexp = new RegExp(CALC_UNIT, 'g');\nfunction unit(value) {\n  if (typeof value === 'number') {\n    return \"\".concat(value).concat(CALC_UNIT);\n  }\n  return value;\n}\nvar CSSCalculator = /*#__PURE__*/function (_AbstractCalculator) {\n  _inherits(CSSCalculator, _AbstractCalculator);\n  var _super = _createSuper(CSSCalculator);\n  function CSSCalculator(num, unitlessCssVar) {\n    var _this;\n    _classCallCheck(this, CSSCalculator);\n    _this = _super.call(this);\n    _defineProperty(_assertThisInitialized(_this), \"result\", '');\n    _defineProperty(_assertThisInitialized(_this), \"unitlessCssVar\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"lowPriority\", void 0);\n    var numType = _typeof(num);\n    _this.unitlessCssVar = unitlessCssVar;\n    if (num instanceof CSSCalculator) {\n      _this.result = \"(\".concat(num.result, \")\");\n    } else if (numType === 'number') {\n      _this.result = unit(num);\n    } else if (numType === 'string') {\n      _this.result = num;\n    }\n    return _this;\n  }\n  _createClass(CSSCalculator, [{\n    key: \"add\",\n    value: function add(num) {\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" + \").concat(num.getResult());\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" + \").concat(unit(num));\n      }\n      this.lowPriority = true;\n      return this;\n    }\n  }, {\n    key: \"sub\",\n    value: function sub(num) {\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" - \").concat(num.getResult());\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" - \").concat(unit(num));\n      }\n      this.lowPriority = true;\n      return this;\n    }\n  }, {\n    key: \"mul\",\n    value: function mul(num) {\n      if (this.lowPriority) {\n        this.result = \"(\".concat(this.result, \")\");\n      }\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" * \").concat(num.getResult(true));\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" * \").concat(num);\n      }\n      this.lowPriority = false;\n      return this;\n    }\n  }, {\n    key: \"div\",\n    value: function div(num) {\n      if (this.lowPriority) {\n        this.result = \"(\".concat(this.result, \")\");\n      }\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" / \").concat(num.getResult(true));\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" / \").concat(num);\n      }\n      this.lowPriority = false;\n      return this;\n    }\n  }, {\n    key: \"getResult\",\n    value: function getResult(force) {\n      return this.lowPriority || force ? \"(\".concat(this.result, \")\") : this.result;\n    }\n  }, {\n    key: \"equal\",\n    value: function equal(options) {\n      var _this2 = this;\n      var _ref = options || {},\n        cssUnit = _ref.unit;\n      var mergedUnit = true;\n      if (typeof cssUnit === 'boolean') {\n        mergedUnit = cssUnit;\n      } else if (Array.from(this.unitlessCssVar).some(function (cssVar) {\n        return _this2.result.includes(cssVar);\n      })) {\n        mergedUnit = false;\n      }\n      this.result = this.result.replace(regexp, mergedUnit ? 'px' : '');\n      if (typeof this.lowPriority !== 'undefined') {\n        return \"calc(\".concat(this.result, \")\");\n      }\n      return this.result;\n    }\n  }]);\n  return CSSCalculator;\n}(AbstractCalculator);\nexport { CSSCalculator as default };","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// ================================== Cache ==================================\n\nexport function sameDerivativeOption(left, right) {\n  if (left.length !== right.length) {\n    return false;\n  }\n  for (var i = 0; i < left.length; i++) {\n    if (left[i] !== right[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nvar ThemeCache = /*#__PURE__*/function () {\n  function ThemeCache() {\n    _classCallCheck(this, ThemeCache);\n    _defineProperty(this, \"cache\", void 0);\n    _defineProperty(this, \"keys\", void 0);\n    _defineProperty(this, \"cacheCallTimes\", void 0);\n    this.cache = new Map();\n    this.keys = [];\n    this.cacheCallTimes = 0;\n  }\n  _createClass(ThemeCache, [{\n    key: \"size\",\n    value: function size() {\n      return this.keys.length;\n    }\n  }, {\n    key: \"internalGet\",\n    value: function internalGet(derivativeOption) {\n      var _cache2, _cache3;\n      var updateCallTimes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var cache = {\n        map: this.cache\n      };\n      derivativeOption.forEach(function (derivative) {\n        if (!cache) {\n          cache = undefined;\n        } else {\n          var _cache;\n          cache = (_cache = cache) === null || _cache === void 0 || (_cache = _cache.map) === null || _cache === void 0 ? void 0 : _cache.get(derivative);\n        }\n      });\n      if ((_cache2 = cache) !== null && _cache2 !== void 0 && _cache2.value && updateCallTimes) {\n        cache.value[1] = this.cacheCallTimes++;\n      }\n      return (_cache3 = cache) === null || _cache3 === void 0 ? void 0 : _cache3.value;\n    }\n  }, {\n    key: \"get\",\n    value: function get(derivativeOption) {\n      var _this$internalGet;\n      return (_this$internalGet = this.internalGet(derivativeOption, true)) === null || _this$internalGet === void 0 ? void 0 : _this$internalGet[0];\n    }\n  }, {\n    key: \"has\",\n    value: function has(derivativeOption) {\n      return !!this.internalGet(derivativeOption);\n    }\n  }, {\n    key: \"set\",\n    value: function set(derivativeOption, value) {\n      var _this = this;\n      // New cache\n      if (!this.has(derivativeOption)) {\n        if (this.size() + 1 > ThemeCache.MAX_CACHE_SIZE + ThemeCache.MAX_CACHE_OFFSET) {\n          var _this$keys$reduce = this.keys.reduce(function (result, key) {\n              var _result = _slicedToArray(result, 2),\n                callTimes = _result[1];\n              if (_this.internalGet(key)[1] < callTimes) {\n                return [key, _this.internalGet(key)[1]];\n              }\n              return result;\n            }, [this.keys[0], this.cacheCallTimes]),\n            _this$keys$reduce2 = _slicedToArray(_this$keys$reduce, 1),\n            targetKey = _this$keys$reduce2[0];\n          this.delete(targetKey);\n        }\n        this.keys.push(derivativeOption);\n      }\n      var cache = this.cache;\n      derivativeOption.forEach(function (derivative, index) {\n        if (index === derivativeOption.length - 1) {\n          cache.set(derivative, {\n            value: [value, _this.cacheCallTimes++]\n          });\n        } else {\n          var cacheValue = cache.get(derivative);\n          if (!cacheValue) {\n            cache.set(derivative, {\n              map: new Map()\n            });\n          } else if (!cacheValue.map) {\n            cacheValue.map = new Map();\n          }\n          cache = cache.get(derivative).map;\n        }\n      });\n    }\n  }, {\n    key: \"deleteByPath\",\n    value: function deleteByPath(currentCache, derivatives) {\n      var cache = currentCache.get(derivatives[0]);\n      if (derivatives.length === 1) {\n        var _cache$value;\n        if (!cache.map) {\n          currentCache.delete(derivatives[0]);\n        } else {\n          currentCache.set(derivatives[0], {\n            map: cache.map\n          });\n        }\n        return (_cache$value = cache.value) === null || _cache$value === void 0 ? void 0 : _cache$value[0];\n      }\n      var result = this.deleteByPath(cache.map, derivatives.slice(1));\n      if ((!cache.map || cache.map.size === 0) && !cache.value) {\n        currentCache.delete(derivatives[0]);\n      }\n      return result;\n    }\n  }, {\n    key: \"delete\",\n    value: function _delete(derivativeOption) {\n      // If cache exists\n      if (this.has(derivativeOption)) {\n        this.keys = this.keys.filter(function (item) {\n          return !sameDerivativeOption(item, derivativeOption);\n        });\n        return this.deleteByPath(this.cache, derivativeOption);\n      }\n      return undefined;\n    }\n  }]);\n  return ThemeCache;\n}();\n_defineProperty(ThemeCache, \"MAX_CACHE_SIZE\", 20);\n_defineProperty(ThemeCache, \"MAX_CACHE_OFFSET\", 5);\nexport { ThemeCache as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { warning } from \"rc-util/es/warning\";\nvar uuid = 0;\n\n/**\n * Theme with algorithms to derive tokens from design tokens.\n * Use `createTheme` first which will help to manage the theme instance cache.\n */\nvar Theme = /*#__PURE__*/function () {\n  function Theme(derivatives) {\n    _classCallCheck(this, Theme);\n    _defineProperty(this, \"derivatives\", void 0);\n    _defineProperty(this, \"id\", void 0);\n    this.derivatives = Array.isArray(derivatives) ? derivatives : [derivatives];\n    this.id = uuid;\n    if (derivatives.length === 0) {\n      warning(derivatives.length > 0, '[Ant Design CSS-in-JS] Theme should have at least one derivative function.');\n    }\n    uuid += 1;\n  }\n  _createClass(Theme, [{\n    key: \"getDerivativeToken\",\n    value: function getDerivativeToken(token) {\n      return this.derivatives.reduce(function (result, derivative) {\n        return derivative(token, result);\n      }, undefined);\n    }\n  }]);\n  return Theme;\n}();\nexport { Theme as default };","import ThemeCache from \"./ThemeCache\";\nimport Theme from \"./Theme\";\nvar cacheThemes = new ThemeCache();\n\n/**\n * Same as new Theme, but will always return same one if `derivative` not changed.\n */\nexport default function createTheme(derivatives) {\n  var derivativeArr = Array.isArray(derivatives) ? derivatives : [derivatives];\n  // Create new theme if not exist\n  if (!cacheThemes.has(derivativeArr)) {\n    cacheThemes.set(derivativeArr, new Theme(derivativeArr));\n  }\n\n  // Get theme from cache and return\n  return cacheThemes.get(derivativeArr);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport hash from '@emotion/hash';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { removeCSS, updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { ATTR_MARK, ATTR_TOKEN } from \"../StyleContext\";\nimport { Theme } from \"../theme\";\n\n// Create a cache for memo concat\n\nvar resultCache = new WeakMap();\nvar RESULT_VALUE = {};\nexport function memoResult(callback, deps) {\n  var current = resultCache;\n  for (var i = 0; i < deps.length; i += 1) {\n    var dep = deps[i];\n    if (!current.has(dep)) {\n      current.set(dep, new WeakMap());\n    }\n    current = current.get(dep);\n  }\n  if (!current.has(RESULT_VALUE)) {\n    current.set(RESULT_VALUE, callback());\n  }\n  return current.get(RESULT_VALUE);\n}\n\n// Create a cache here to avoid always loop generate\nvar flattenTokenCache = new WeakMap();\n\n/**\n * Flatten token to string, this will auto cache the result when token not change\n */\nexport function flattenToken(token) {\n  var str = flattenTokenCache.get(token) || '';\n  if (!str) {\n    Object.keys(token).forEach(function (key) {\n      var value = token[key];\n      str += key;\n      if (value instanceof Theme) {\n        str += value.id;\n      } else if (value && _typeof(value) === 'object') {\n        str += flattenToken(value);\n      } else {\n        str += value;\n      }\n    });\n\n    // https://github.com/ant-design/ant-design/issues/48386\n    // Should hash the string to avoid style tag name too long\n    str = hash(str);\n\n    // Put in cache\n    flattenTokenCache.set(token, str);\n  }\n  return str;\n}\n\n/**\n * Convert derivative token to key string\n */\nexport function token2key(token, salt) {\n  return hash(\"\".concat(salt, \"_\").concat(flattenToken(token)));\n}\nvar randomSelectorKey = \"random-\".concat(Date.now(), \"-\").concat(Math.random()).replace(/\\./g, '');\n\n// Magic `content` for detect selector support\nvar checkContent = '_bAmBoO_';\nfunction supportSelector(styleStr, handleElement, supportCheck) {\n  if (canUseDom()) {\n    var _getComputedStyle$con, _ele$parentNode;\n    updateCSS(styleStr, randomSelectorKey);\n    var _ele = document.createElement('div');\n    _ele.style.position = 'fixed';\n    _ele.style.left = '0';\n    _ele.style.top = '0';\n    handleElement === null || handleElement === void 0 || handleElement(_ele);\n    document.body.appendChild(_ele);\n    if (process.env.NODE_ENV !== 'production') {\n      _ele.innerHTML = 'Test';\n      _ele.style.zIndex = '9999999';\n    }\n    var support = supportCheck ? supportCheck(_ele) : (_getComputedStyle$con = getComputedStyle(_ele).content) === null || _getComputedStyle$con === void 0 ? void 0 : _getComputedStyle$con.includes(checkContent);\n    (_ele$parentNode = _ele.parentNode) === null || _ele$parentNode === void 0 || _ele$parentNode.removeChild(_ele);\n    removeCSS(randomSelectorKey);\n    return support;\n  }\n  return false;\n}\nvar canLayer = undefined;\nexport function supportLayer() {\n  if (canLayer === undefined) {\n    canLayer = supportSelector(\"@layer \".concat(randomSelectorKey, \" { .\").concat(randomSelectorKey, \" { content: \\\"\").concat(checkContent, \"\\\"!important; } }\"), function (ele) {\n      ele.className = randomSelectorKey;\n    });\n  }\n  return canLayer;\n}\nvar canWhere = undefined;\nexport function supportWhere() {\n  if (canWhere === undefined) {\n    canWhere = supportSelector(\":where(.\".concat(randomSelectorKey, \") { content: \\\"\").concat(checkContent, \"\\\"!important; }\"), function (ele) {\n      ele.className = randomSelectorKey;\n    });\n  }\n  return canWhere;\n}\nvar canLogic = undefined;\nexport function supportLogicProps() {\n  if (canLogic === undefined) {\n    canLogic = supportSelector(\".\".concat(randomSelectorKey, \" { inset-block: 93px !important; }\"), function (ele) {\n      ele.className = randomSelectorKey;\n    }, function (ele) {\n      return getComputedStyle(ele).bottom === '93px';\n    });\n  }\n  return canLogic;\n}\nexport var isClientSide = canUseDom();\nexport function unit(num) {\n  if (typeof num === 'number') {\n    return \"\".concat(num, \"px\");\n  }\n  return num;\n}\nexport function toStyleStr(style, tokenKey, styleId) {\n  var _objectSpread2;\n  var customizeAttrs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var plain = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n  if (plain) {\n    return style;\n  }\n  var attrs = _objectSpread(_objectSpread({}, customizeAttrs), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, ATTR_TOKEN, tokenKey), _defineProperty(_objectSpread2, ATTR_MARK, styleId), _objectSpread2));\n  var attrStr = Object.keys(attrs).map(function (attr) {\n    var val = attrs[attr];\n    return val ? \"\".concat(attr, \"=\\\"\").concat(val, \"\\\"\") : null;\n  }).filter(function (v) {\n    return v;\n  }).join(' ');\n  return \"<style \".concat(attrStr, \">\").concat(style, \"</style>\");\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nexport var token2CSSVar = function token2CSSVar(token) {\n  var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  return \"--\".concat(prefix ? \"\".concat(prefix, \"-\") : '').concat(token).replace(/([a-z0-9])([A-Z])/g, '$1-$2').replace(/([A-Z]+)([A-Z][a-z0-9]+)/g, '$1-$2').replace(/([a-z])([A-Z0-9])/g, '$1-$2').toLowerCase();\n};\nexport var serializeCSSVar = function serializeCSSVar(cssVars, hashId, options) {\n  if (!Object.keys(cssVars).length) {\n    return '';\n  }\n  return \".\".concat(hashId).concat(options !== null && options !== void 0 && options.scope ? \".\".concat(options.scope) : '', \"{\").concat(Object.entries(cssVars).map(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      key = _ref2[0],\n      value = _ref2[1];\n    return \"\".concat(key, \":\").concat(value, \";\");\n  }).join(''), \"}\");\n};\nexport var transformToken = function transformToken(token, themeKey, config) {\n  var cssVars = {};\n  var result = {};\n  Object.entries(token).forEach(function (_ref3) {\n    var _config$preserve, _config$ignore;\n    var _ref4 = _slicedToArray(_ref3, 2),\n      key = _ref4[0],\n      value = _ref4[1];\n    if (config !== null && config !== void 0 && (_config$preserve = config.preserve) !== null && _config$preserve !== void 0 && _config$preserve[key]) {\n      result[key] = value;\n    } else if ((typeof value === 'string' || typeof value === 'number') && !(config !== null && config !== void 0 && (_config$ignore = config.ignore) !== null && _config$ignore !== void 0 && _config$ignore[key])) {\n      var _config$unitless;\n      var cssVar = token2CSSVar(key, config === null || config === void 0 ? void 0 : config.prefix);\n      cssVars[cssVar] = typeof value === 'number' && !(config !== null && config !== void 0 && (_config$unitless = config.unitless) !== null && _config$unitless !== void 0 && _config$unitless[key]) ? \"\".concat(value, \"px\") : String(value);\n      result[key] = \"var(\".concat(cssVar, \")\");\n    }\n  });\n  return [result, serializeCSSVar(cssVars, themeKey, {\n    scope: config === null || config === void 0 ? void 0 : config.scope\n  })];\n};","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n  var firstMountRef = React.useRef(true);\n  useInternalLayoutEffect(function () {\n    return callback(firstMountRef.current);\n  }, deps);\n\n  // We tell react that first mount has passed\n  useInternalLayoutEffect(function () {\n    firstMountRef.current = false;\n    return function () {\n      firstMountRef.current = true;\n    };\n  }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n  useLayoutEffect(function (firstMount) {\n    if (!firstMount) {\n      return callback();\n    }\n  }, deps);\n};\nexport default useLayoutEffect;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// import canUseDom from 'rc-util/lib/Dom/canUseDom';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\n\n// We need fully clone React function here\n// to avoid webpack warning React 17 do not export `useId`\nvar fullClone = _objectSpread({}, React);\nvar useInsertionEffect = fullClone.useInsertionEffect;\n/**\n * Polyfill `useInsertionEffect` for React < 18\n * @param renderEffect will be executed in `useMemo`, and do not have callback\n * @param effect will be executed in `useLayoutEffect`\n * @param deps\n */\nvar useInsertionEffectPolyfill = function useInsertionEffectPolyfill(renderEffect, effect, deps) {\n  React.useMemo(renderEffect, deps);\n  useLayoutEffect(function () {\n    return effect(true);\n  }, deps);\n};\n\n/**\n * Compatible `useInsertionEffect`\n * will use `useInsertionEffect` if React version >= 18,\n * otherwise use `useInsertionEffectPolyfill`.\n */\nvar useCompatibleInsertionEffect = useInsertionEffect ? function (renderEffect, effect, deps) {\n  return useInsertionEffect(function () {\n    renderEffect();\n    return effect();\n  }, deps);\n} : useInsertionEffectPolyfill;\nexport default useCompatibleInsertionEffect;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { warning } from \"rc-util/es/warning\";\nimport * as React from 'react';\nvar fullClone = _objectSpread({}, React);\nvar useInsertionEffect = fullClone.useInsertionEffect;\n\n// DO NOT register functions in useEffect cleanup function, or functions that registered will never be called.\nvar useCleanupRegister = function useCleanupRegister(deps) {\n  var effectCleanups = [];\n  var cleanupFlag = false;\n  function register(fn) {\n    if (cleanupFlag) {\n      if (process.env.NODE_ENV !== 'production') {\n        warning(false, '[Ant Design CSS-in-JS] You are registering a cleanup function after unmount, which will not have any effect.');\n      }\n      return;\n    }\n    effectCleanups.push(fn);\n  }\n  React.useEffect(function () {\n    // Compatible with strict mode\n    cleanupFlag = false;\n    return function () {\n      cleanupFlag = true;\n      if (effectCleanups.length) {\n        effectCleanups.forEach(function (fn) {\n          return fn();\n        });\n      }\n    };\n  }, deps);\n  return register;\n};\nvar useRun = function useRun() {\n  return function (fn) {\n    fn();\n  };\n};\n\n// Only enable register in React 18\nvar useEffectCleanupRegister = typeof useInsertionEffect !== 'undefined' ? useCleanupRegister : useRun;\nexport default useEffectCleanupRegister;","function useProdHMR() {\n  return false;\n}\nvar webpackHMR = false;\nfunction useDevHMR() {\n  return webpackHMR;\n}\nexport default process.env.NODE_ENV === 'production' ? useProdHMR : useDevHMR;\n\n// Webpack `module.hot.accept` do not support any deps update trigger\n// We have to hack handler to force mark as HRM\nif (process.env.NODE_ENV !== 'production' && typeof module !== 'undefined' && module && module.hot && typeof window !== 'undefined') {\n  // Use `globalThis` first, and `window` for older browsers\n  // const win = globalThis as any;\n  var win = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : null;\n  if (win && typeof win.webpackHotUpdate === 'function') {\n    var originWebpackHotUpdate = win.webpackHotUpdate;\n    win.webpackHotUpdate = function () {\n      webpackHMR = true;\n      setTimeout(function () {\n        webpackHMR = false;\n      }, 0);\n      return originWebpackHotUpdate.apply(void 0, arguments);\n    };\n  }\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { pathKey } from \"../Cache\";\nimport StyleContext from \"../StyleContext\";\nimport useCompatibleInsertionEffect from \"./useCompatibleInsertionEffect\";\nimport useEffectCleanupRegister from \"./useEffectCleanupRegister\";\nimport useHMR from \"./useHMR\";\nexport default function useGlobalCache(prefix, keyPath, cacheFn, onCacheRemove,\n// Add additional effect trigger by `useInsertionEffect`\nonCacheEffect) {\n  var _React$useContext = React.useContext(StyleContext),\n    globalCache = _React$useContext.cache;\n  var fullPath = [prefix].concat(_toConsumableArray(keyPath));\n  var fullPathStr = pathKey(fullPath);\n  var register = useEffectCleanupRegister([fullPathStr]);\n  var HMRUpdate = useHMR();\n  var buildCache = function buildCache(updater) {\n    globalCache.opUpdate(fullPathStr, function (prevCache) {\n      var _ref = prevCache || [undefined, undefined],\n        _ref2 = _slicedToArray(_ref, 2),\n        _ref2$ = _ref2[0],\n        times = _ref2$ === void 0 ? 0 : _ref2$,\n        cache = _ref2[1];\n\n      // HMR should always ignore cache since developer may change it\n      var tmpCache = cache;\n      if (process.env.NODE_ENV !== 'production' && cache && HMRUpdate) {\n        onCacheRemove === null || onCacheRemove === void 0 || onCacheRemove(tmpCache, HMRUpdate);\n        tmpCache = null;\n      }\n      var mergedCache = tmpCache || cacheFn();\n      var data = [times, mergedCache];\n\n      // Call updater if need additional logic\n      return updater ? updater(data) : data;\n    });\n  };\n\n  // Create cache\n  React.useMemo(function () {\n    buildCache();\n  }, /* eslint-disable react-hooks/exhaustive-deps */\n  [fullPathStr]\n  /* eslint-enable */);\n\n  var cacheEntity = globalCache.opGet(fullPathStr);\n\n  // HMR clean the cache but not trigger `useMemo` again\n  // Let's fallback of this\n  // ref https://github.com/ant-design/cssinjs/issues/127\n  if (process.env.NODE_ENV !== 'production' && !cacheEntity) {\n    buildCache();\n    cacheEntity = globalCache.opGet(fullPathStr);\n  }\n  var cacheContent = cacheEntity[1];\n\n  // Remove if no need anymore\n  useCompatibleInsertionEffect(function () {\n    onCacheEffect === null || onCacheEffect === void 0 || onCacheEffect(cacheContent);\n  }, function (polyfill) {\n    // It's bad to call build again in effect.\n    // But we have to do this since StrictMode will call effect twice\n    // which will clear cache on the first time.\n    buildCache(function (_ref3) {\n      var _ref4 = _slicedToArray(_ref3, 2),\n        times = _ref4[0],\n        cache = _ref4[1];\n      if (polyfill && times === 0) {\n        onCacheEffect === null || onCacheEffect === void 0 || onCacheEffect(cacheContent);\n      }\n      return [times + 1, cache];\n    });\n    return function () {\n      globalCache.opUpdate(fullPathStr, function (prevCache) {\n        var _ref5 = prevCache || [],\n          _ref6 = _slicedToArray(_ref5, 2),\n          _ref6$ = _ref6[0],\n          times = _ref6$ === void 0 ? 0 : _ref6$,\n          cache = _ref6[1];\n        var nextCount = times - 1;\n        if (nextCount === 0) {\n          // Always remove styles in useEffect callback\n          register(function () {\n            // With polyfill, registered callback will always be called synchronously\n            // But without polyfill, it will be called in effect clean up,\n            // And by that time this cache is cleaned up.\n            if (polyfill || !globalCache.opGet(fullPathStr)) {\n              onCacheRemove === null || onCacheRemove === void 0 || onCacheRemove(cache, false);\n            }\n          });\n          return null;\n        }\n        return [times - 1, cache];\n      });\n    };\n  }, [fullPathStr]);\n  return cacheContent;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport hash from '@emotion/hash';\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { useContext } from 'react';\nimport StyleContext, { ATTR_MARK, ATTR_TOKEN, CSS_IN_JS_INSTANCE } from \"../StyleContext\";\nimport { flattenToken, memoResult, token2key, toStyleStr } from \"../util\";\nimport { transformToken } from \"../util/css-variables\";\nimport useGlobalCache from \"./useGlobalCache\";\nvar EMPTY_OVERRIDE = {};\n\n// Generate different prefix to make user selector break in production env.\n// This helps developer not to do style override directly on the hash id.\nvar hashPrefix = process.env.NODE_ENV !== 'production' ? 'css-dev-only-do-not-override' : 'css';\nvar tokenKeys = new Map();\nfunction recordCleanToken(tokenKey) {\n  tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) + 1);\n}\nfunction removeStyleTags(key, instanceId) {\n  if (typeof document !== 'undefined') {\n    var styles = document.querySelectorAll(\"style[\".concat(ATTR_TOKEN, \"=\\\"\").concat(key, \"\\\"]\"));\n    styles.forEach(function (style) {\n      if (style[CSS_IN_JS_INSTANCE] === instanceId) {\n        var _style$parentNode;\n        (_style$parentNode = style.parentNode) === null || _style$parentNode === void 0 || _style$parentNode.removeChild(style);\n      }\n    });\n  }\n}\nvar TOKEN_THRESHOLD = 0;\n\n// Remove will check current keys first\nfunction cleanTokenStyle(tokenKey, instanceId) {\n  tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) - 1);\n  var tokenKeyList = Array.from(tokenKeys.keys());\n  var cleanableKeyList = tokenKeyList.filter(function (key) {\n    var count = tokenKeys.get(key) || 0;\n    return count <= 0;\n  });\n\n  // Should keep tokens under threshold for not to insert style too often\n  if (tokenKeyList.length - cleanableKeyList.length > TOKEN_THRESHOLD) {\n    cleanableKeyList.forEach(function (key) {\n      removeStyleTags(key, instanceId);\n      tokenKeys.delete(key);\n    });\n  }\n}\nexport var getComputedToken = function getComputedToken(originToken, overrideToken, theme, format) {\n  var derivativeToken = theme.getDerivativeToken(originToken);\n\n  // Merge with override\n  var mergedDerivativeToken = _objectSpread(_objectSpread({}, derivativeToken), overrideToken);\n\n  // Format if needed\n  if (format) {\n    mergedDerivativeToken = format(mergedDerivativeToken);\n  }\n  return mergedDerivativeToken;\n};\nexport var TOKEN_PREFIX = 'token';\n/**\n * Cache theme derivative token as global shared one\n * @param theme Theme entity\n * @param tokens List of tokens, used for cache. Please do not dynamic generate object directly\n * @param option Additional config\n * @returns Call Theme.getDerivativeToken(tokenObject) to get token\n */\nexport default function useCacheToken(theme, tokens) {\n  var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var _useContext = useContext(StyleContext),\n    instanceId = _useContext.cache.instanceId,\n    container = _useContext.container;\n  var _option$salt = option.salt,\n    salt = _option$salt === void 0 ? '' : _option$salt,\n    _option$override = option.override,\n    override = _option$override === void 0 ? EMPTY_OVERRIDE : _option$override,\n    formatToken = option.formatToken,\n    compute = option.getComputedToken,\n    cssVar = option.cssVar;\n\n  // Basic - We do basic cache here\n  var mergedToken = memoResult(function () {\n    return Object.assign.apply(Object, [{}].concat(_toConsumableArray(tokens)));\n  }, tokens);\n  var tokenStr = flattenToken(mergedToken);\n  var overrideTokenStr = flattenToken(override);\n  var cssVarStr = cssVar ? flattenToken(cssVar) : '';\n  var cachedToken = useGlobalCache(TOKEN_PREFIX, [salt, theme.id, tokenStr, overrideTokenStr, cssVarStr], function () {\n    var _cssVar$key;\n    var mergedDerivativeToken = compute ? compute(mergedToken, override, theme) : getComputedToken(mergedToken, override, theme, formatToken);\n\n    // Replace token value with css variables\n    var actualToken = _objectSpread({}, mergedDerivativeToken);\n    var cssVarsStr = '';\n    if (!!cssVar) {\n      var _transformToken = transformToken(mergedDerivativeToken, cssVar.key, {\n        prefix: cssVar.prefix,\n        ignore: cssVar.ignore,\n        unitless: cssVar.unitless,\n        preserve: cssVar.preserve\n      });\n      var _transformToken2 = _slicedToArray(_transformToken, 2);\n      mergedDerivativeToken = _transformToken2[0];\n      cssVarsStr = _transformToken2[1];\n    }\n\n    // Optimize for `useStyleRegister` performance\n    var tokenKey = token2key(mergedDerivativeToken, salt);\n    mergedDerivativeToken._tokenKey = tokenKey;\n    actualToken._tokenKey = token2key(actualToken, salt);\n    var themeKey = (_cssVar$key = cssVar === null || cssVar === void 0 ? void 0 : cssVar.key) !== null && _cssVar$key !== void 0 ? _cssVar$key : tokenKey;\n    mergedDerivativeToken._themeKey = themeKey;\n    recordCleanToken(themeKey);\n    var hashId = \"\".concat(hashPrefix, \"-\").concat(hash(tokenKey));\n    mergedDerivativeToken._hashId = hashId; // Not used\n\n    return [mergedDerivativeToken, hashId, actualToken, cssVarsStr, (cssVar === null || cssVar === void 0 ? void 0 : cssVar.key) || ''];\n  }, function (cache) {\n    // Remove token will remove all related style\n    cleanTokenStyle(cache[0]._themeKey, instanceId);\n  }, function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 4),\n      token = _ref2[0],\n      cssVarsStr = _ref2[3];\n    if (cssVar && cssVarsStr) {\n      var style = updateCSS(cssVarsStr, hash(\"css-variables-\".concat(token._themeKey)), {\n        mark: ATTR_MARK,\n        prepend: 'queue',\n        attachTo: container,\n        priority: -999\n      });\n      style[CSS_IN_JS_INSTANCE] = instanceId;\n\n      // Used for `useCacheToken` to remove on batch when token removed\n      style.setAttribute(ATTR_TOKEN, token._themeKey);\n    }\n  });\n  return cachedToken;\n}\nexport var extract = function extract(cache, effectStyles, options) {\n  var _cache = _slicedToArray(cache, 5),\n    realToken = _cache[2],\n    styleStr = _cache[3],\n    cssVarKey = _cache[4];\n  var _ref3 = options || {},\n    plain = _ref3.plain;\n  if (!styleStr) {\n    return null;\n  }\n  var styleId = realToken._tokenKey;\n  var order = -999;\n\n  // ====================== Style ======================\n  // Used for rc-util\n  var sharedAttrs = {\n    'data-rc-order': 'prependQueue',\n    'data-rc-priority': \"\".concat(order)\n  };\n  var styleText = toStyleStr(styleStr, cssVarKey, styleId, sharedAttrs, plain);\n  return [order, styleId, styleText];\n};","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { ATTR_MARK } from \"../StyleContext\";\nexport var ATTR_CACHE_MAP = 'data-ant-cssinjs-cache-path';\n\n/**\n * This marks style from the css file.\n * Which means not exist in `<style />` tag.\n */\nexport var CSS_FILE_STYLE = '_FILE_STYLE__';\nexport function serialize(cachePathMap) {\n  return Object.keys(cachePathMap).map(function (path) {\n    var hash = cachePathMap[path];\n    return \"\".concat(path, \":\").concat(hash);\n  }).join(';');\n}\nvar cachePathMap;\nvar fromCSSFile = true;\n\n/**\n * @private Test usage only. Can save remove if no need.\n */\nexport function reset(mockCache) {\n  var fromFile = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  cachePathMap = mockCache;\n  fromCSSFile = fromFile;\n}\nexport function prepare() {\n  if (!cachePathMap) {\n    cachePathMap = {};\n    if (canUseDom()) {\n      var div = document.createElement('div');\n      div.className = ATTR_CACHE_MAP;\n      div.style.position = 'fixed';\n      div.style.visibility = 'hidden';\n      div.style.top = '-9999px';\n      document.body.appendChild(div);\n      var content = getComputedStyle(div).content || '';\n      content = content.replace(/^\"/, '').replace(/\"$/, '');\n\n      // Fill data\n      content.split(';').forEach(function (item) {\n        var _item$split = item.split(':'),\n          _item$split2 = _slicedToArray(_item$split, 2),\n          path = _item$split2[0],\n          hash = _item$split2[1];\n        cachePathMap[path] = hash;\n      });\n\n      // Remove inline record style\n      var inlineMapStyle = document.querySelector(\"style[\".concat(ATTR_CACHE_MAP, \"]\"));\n      if (inlineMapStyle) {\n        var _inlineMapStyle$paren;\n        fromCSSFile = false;\n        (_inlineMapStyle$paren = inlineMapStyle.parentNode) === null || _inlineMapStyle$paren === void 0 || _inlineMapStyle$paren.removeChild(inlineMapStyle);\n      }\n      document.body.removeChild(div);\n    }\n  }\n}\nexport function existPath(path) {\n  prepare();\n  return !!cachePathMap[path];\n}\nexport function getStyleAndHash(path) {\n  var hash = cachePathMap[path];\n  var styleStr = null;\n  if (hash && canUseDom()) {\n    if (fromCSSFile) {\n      styleStr = CSS_FILE_STYLE;\n    } else {\n      var _style = document.querySelector(\"style[\".concat(ATTR_MARK, \"=\\\"\").concat(cachePathMap[path], \"\\\"]\"));\n      if (_style) {\n        styleStr = _style.innerHTML;\n      } else {\n        // Clean up since not exist anymore\n        delete cachePathMap[path];\n      }\n    }\n  }\n  return [styleStr, hash];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport hash from '@emotion/hash';\nimport { removeCSS, updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport * as React from 'react';\n// @ts-ignore\nimport unitless from '@emotion/unitless';\nimport { compile, serialize, stringify } from 'stylis';\nimport { contentQuotesLinter, hashedAnimationLinter } from \"../linters\";\nimport StyleContext, { ATTR_CACHE_PATH, ATTR_MARK, ATTR_TOKEN, CSS_IN_JS_INSTANCE } from \"../StyleContext\";\nimport { isClientSide, toStyleStr } from \"../util\";\nimport { CSS_FILE_STYLE, existPath, getStyleAndHash } from \"../util/cacheMapUtil\";\nimport useGlobalCache from \"./useGlobalCache\";\nvar SKIP_CHECK = '_skip_check_';\nvar MULTI_VALUE = '_multi_value_';\n// ============================================================================\n// ==                                 Parser                                 ==\n// ============================================================================\n// Preprocessor style content to browser support one\nexport function normalizeStyle(styleStr) {\n  var serialized = serialize(compile(styleStr), stringify);\n  return serialized.replace(/\\{%%%\\:[^;];}/g, ';');\n}\nfunction isCompoundCSSProperty(value) {\n  return _typeof(value) === 'object' && value && (SKIP_CHECK in value || MULTI_VALUE in value);\n}\n\n// 注入 hash 值\nfunction injectSelectorHash(key, hashId, hashPriority) {\n  if (!hashId) {\n    return key;\n  }\n  var hashClassName = \".\".concat(hashId);\n  var hashSelector = hashPriority === 'low' ? \":where(\".concat(hashClassName, \")\") : hashClassName;\n\n  // 注入 hashId\n  var keys = key.split(',').map(function (k) {\n    var _firstPath$match;\n    var fullPath = k.trim().split(/\\s+/);\n\n    // 如果 Selector 第一个是 HTML Element,那我们就插到它的后面。反之,就插到最前面。\n    var firstPath = fullPath[0] || '';\n    var htmlElement = ((_firstPath$match = firstPath.match(/^\\w+/)) === null || _firstPath$match === void 0 ? void 0 : _firstPath$match[0]) || '';\n    firstPath = \"\".concat(htmlElement).concat(hashSelector).concat(firstPath.slice(htmlElement.length));\n    return [firstPath].concat(_toConsumableArray(fullPath.slice(1))).join(' ');\n  });\n  return keys.join(',');\n}\n// Parse CSSObject to style content\nexport var parseStyle = function parseStyle(interpolation) {\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n      root: true,\n      parentSelectors: []\n    },\n    root = _ref.root,\n    injectHash = _ref.injectHash,\n    parentSelectors = _ref.parentSelectors;\n  var hashId = config.hashId,\n    layer = config.layer,\n    path = config.path,\n    hashPriority = config.hashPriority,\n    _config$transformers = config.transformers,\n    transformers = _config$transformers === void 0 ? [] : _config$transformers,\n    _config$linters = config.linters,\n    linters = _config$linters === void 0 ? [] : _config$linters;\n  var styleStr = '';\n  var effectStyle = {};\n  function parseKeyframes(keyframes) {\n    var animationName = keyframes.getName(hashId);\n    if (!effectStyle[animationName]) {\n      var _parseStyle = parseStyle(keyframes.style, config, {\n          root: false,\n          parentSelectors: parentSelectors\n        }),\n        _parseStyle2 = _slicedToArray(_parseStyle, 1),\n        _parsedStr = _parseStyle2[0];\n      effectStyle[animationName] = \"@keyframes \".concat(keyframes.getName(hashId)).concat(_parsedStr);\n    }\n  }\n  function flattenList(list) {\n    var fullList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    list.forEach(function (item) {\n      if (Array.isArray(item)) {\n        flattenList(item, fullList);\n      } else if (item) {\n        fullList.push(item);\n      }\n    });\n    return fullList;\n  }\n  var flattenStyleList = flattenList(Array.isArray(interpolation) ? interpolation : [interpolation]);\n  flattenStyleList.forEach(function (originStyle) {\n    // Only root level can use raw string\n    var style = typeof originStyle === 'string' && !root ? {} : originStyle;\n    if (typeof style === 'string') {\n      styleStr += \"\".concat(style, \"\\n\");\n    } else if (style._keyframe) {\n      // Keyframe\n      parseKeyframes(style);\n    } else {\n      var mergedStyle = transformers.reduce(function (prev, trans) {\n        var _trans$visit;\n        return (trans === null || trans === void 0 || (_trans$visit = trans.visit) === null || _trans$visit === void 0 ? void 0 : _trans$visit.call(trans, prev)) || prev;\n      }, style);\n\n      // Normal CSSObject\n      Object.keys(mergedStyle).forEach(function (key) {\n        var value = mergedStyle[key];\n        if (_typeof(value) === 'object' && value && (key !== 'animationName' || !value._keyframe) && !isCompoundCSSProperty(value)) {\n          var subInjectHash = false;\n\n          // 当成嵌套对象来处理\n          var mergedKey = key.trim();\n          // Whether treat child as root. In most case it is false.\n          var nextRoot = false;\n\n          // 拆分多个选择器\n          if ((root || injectHash) && hashId) {\n            if (mergedKey.startsWith('@')) {\n              // 略过媒体查询,交给子节点继续插入 hashId\n              subInjectHash = true;\n            } else if (mergedKey === '&') {\n              // 抹掉 root selector 上的单个 &\n              mergedKey = injectSelectorHash('', hashId, hashPriority);\n            } else {\n              // 注入 hashId\n              mergedKey = injectSelectorHash(key, hashId, hashPriority);\n            }\n          } else if (root && !hashId && (mergedKey === '&' || mergedKey === '')) {\n            // In case of `{ '&': { a: { color: 'red' } } }` or `{ '': { a: { color: 'red' } } }` without hashId,\n            // we will get `&{a:{color:red;}}` or `{a:{color:red;}}` string for stylis to compile.\n            // But it does not conform to stylis syntax,\n            // and finally we will get `{color:red;}` as css, which is wrong.\n            // So we need to remove key in root, and treat child `{ a: { color: 'red' } }` as root.\n            mergedKey = '';\n            nextRoot = true;\n          }\n          var _parseStyle3 = parseStyle(value, config, {\n              root: nextRoot,\n              injectHash: subInjectHash,\n              parentSelectors: [].concat(_toConsumableArray(parentSelectors), [mergedKey])\n            }),\n            _parseStyle4 = _slicedToArray(_parseStyle3, 2),\n            _parsedStr2 = _parseStyle4[0],\n            childEffectStyle = _parseStyle4[1];\n          effectStyle = _objectSpread(_objectSpread({}, effectStyle), childEffectStyle);\n          styleStr += \"\".concat(mergedKey).concat(_parsedStr2);\n        } else {\n          var _value;\n          function appendStyle(cssKey, cssValue) {\n            if (process.env.NODE_ENV !== 'production' && (_typeof(value) !== 'object' || !(value !== null && value !== void 0 && value[SKIP_CHECK]))) {\n              [contentQuotesLinter, hashedAnimationLinter].concat(_toConsumableArray(linters)).forEach(function (linter) {\n                return linter(cssKey, cssValue, {\n                  path: path,\n                  hashId: hashId,\n                  parentSelectors: parentSelectors\n                });\n              });\n            }\n\n            // 如果是样式则直接插入\n            var styleName = cssKey.replace(/[A-Z]/g, function (match) {\n              return \"-\".concat(match.toLowerCase());\n            });\n\n            // Auto suffix with px\n            var formatValue = cssValue;\n            if (!unitless[cssKey] && typeof formatValue === 'number' && formatValue !== 0) {\n              formatValue = \"\".concat(formatValue, \"px\");\n            }\n\n            // handle animationName & Keyframe value\n            if (cssKey === 'animationName' && cssValue !== null && cssValue !== void 0 && cssValue._keyframe) {\n              parseKeyframes(cssValue);\n              formatValue = cssValue.getName(hashId);\n            }\n            styleStr += \"\".concat(styleName, \":\").concat(formatValue, \";\");\n          }\n          var actualValue = (_value = value === null || value === void 0 ? void 0 : value.value) !== null && _value !== void 0 ? _value : value;\n          if (_typeof(value) === 'object' && value !== null && value !== void 0 && value[MULTI_VALUE] && Array.isArray(actualValue)) {\n            actualValue.forEach(function (item) {\n              appendStyle(key, item);\n            });\n          } else {\n            appendStyle(key, actualValue);\n          }\n        }\n      });\n    }\n  });\n  if (!root) {\n    styleStr = \"{\".concat(styleStr, \"}\");\n  } else if (layer) {\n    // fixme: https://github.com/thysultan/stylis/pull/339\n    if (styleStr) {\n      styleStr = \"@layer \".concat(layer.name, \" {\").concat(styleStr, \"}\");\n    }\n    if (layer.dependencies) {\n      effectStyle[\"@layer \".concat(layer.name)] = layer.dependencies.map(function (deps) {\n        return \"@layer \".concat(deps, \", \").concat(layer.name, \";\");\n      }).join('\\n');\n    }\n  }\n  return [styleStr, effectStyle];\n};\n\n// ============================================================================\n// ==                                Register                                ==\n// ============================================================================\nexport function uniqueHash(path, styleStr) {\n  return hash(\"\".concat(path.join('%')).concat(styleStr));\n}\nfunction Empty() {\n  return null;\n}\nexport var STYLE_PREFIX = 'style';\n/**\n * Register a style to the global style sheet.\n */\nexport default function useStyleRegister(info, styleFn) {\n  var token = info.token,\n    path = info.path,\n    hashId = info.hashId,\n    layer = info.layer,\n    nonce = info.nonce,\n    clientOnly = info.clientOnly,\n    _info$order = info.order,\n    order = _info$order === void 0 ? 0 : _info$order;\n  var _React$useContext = React.useContext(StyleContext),\n    autoClear = _React$useContext.autoClear,\n    mock = _React$useContext.mock,\n    defaultCache = _React$useContext.defaultCache,\n    hashPriority = _React$useContext.hashPriority,\n    container = _React$useContext.container,\n    ssrInline = _React$useContext.ssrInline,\n    transformers = _React$useContext.transformers,\n    linters = _React$useContext.linters,\n    cache = _React$useContext.cache,\n    enableLayer = _React$useContext.layer;\n  var tokenKey = token._tokenKey;\n  var fullPath = [tokenKey];\n  if (enableLayer) {\n    fullPath.push('layer');\n  }\n  fullPath.push.apply(fullPath, _toConsumableArray(path));\n\n  // Check if need insert style\n  var isMergedClientSide = isClientSide;\n  if (process.env.NODE_ENV !== 'production' && mock !== undefined) {\n    isMergedClientSide = mock === 'client';\n  }\n  var _useGlobalCache = useGlobalCache(STYLE_PREFIX, fullPath,\n    // Create cache if needed\n    function () {\n      var cachePath = fullPath.join('|');\n\n      // Get style from SSR inline style directly\n      if (existPath(cachePath)) {\n        var _getStyleAndHash = getStyleAndHash(cachePath),\n          _getStyleAndHash2 = _slicedToArray(_getStyleAndHash, 2),\n          inlineCacheStyleStr = _getStyleAndHash2[0],\n          styleHash = _getStyleAndHash2[1];\n        if (inlineCacheStyleStr) {\n          return [inlineCacheStyleStr, tokenKey, styleHash, {}, clientOnly, order];\n        }\n      }\n\n      // Generate style\n      var styleObj = styleFn();\n      var _parseStyle5 = parseStyle(styleObj, {\n          hashId: hashId,\n          hashPriority: hashPriority,\n          layer: enableLayer ? layer : undefined,\n          path: path.join('-'),\n          transformers: transformers,\n          linters: linters\n        }),\n        _parseStyle6 = _slicedToArray(_parseStyle5, 2),\n        parsedStyle = _parseStyle6[0],\n        effectStyle = _parseStyle6[1];\n      var styleStr = normalizeStyle(parsedStyle);\n      var styleId = uniqueHash(fullPath, styleStr);\n      return [styleStr, tokenKey, styleId, effectStyle, clientOnly, order];\n    },\n    // Remove cache if no need\n    function (_ref2, fromHMR) {\n      var _ref3 = _slicedToArray(_ref2, 3),\n        styleId = _ref3[2];\n      if ((fromHMR || autoClear) && isClientSide) {\n        removeCSS(styleId, {\n          mark: ATTR_MARK\n        });\n      }\n    },\n    // Effect: Inject style here\n    function (_ref4) {\n      var _ref5 = _slicedToArray(_ref4, 4),\n        styleStr = _ref5[0],\n        _ = _ref5[1],\n        styleId = _ref5[2],\n        effectStyle = _ref5[3];\n      if (isMergedClientSide && styleStr !== CSS_FILE_STYLE) {\n        var mergedCSSConfig = {\n          mark: ATTR_MARK,\n          prepend: enableLayer ? false : 'queue',\n          attachTo: container,\n          priority: order\n        };\n        var nonceStr = typeof nonce === 'function' ? nonce() : nonce;\n        if (nonceStr) {\n          mergedCSSConfig.csp = {\n            nonce: nonceStr\n          };\n        }\n\n        // ================= Split Effect Style =================\n        // We will split effectStyle here since @layer should be at the top level\n        var effectLayerKeys = [];\n        var effectRestKeys = [];\n        Object.keys(effectStyle).forEach(function (key) {\n          if (key.startsWith('@layer')) {\n            effectLayerKeys.push(key);\n          } else {\n            effectRestKeys.push(key);\n          }\n        });\n\n        // ================= Inject Layer Style =================\n        // Inject layer style\n        effectLayerKeys.forEach(function (effectKey) {\n          updateCSS(normalizeStyle(effectStyle[effectKey]), \"_layer-\".concat(effectKey), _objectSpread(_objectSpread({}, mergedCSSConfig), {}, {\n            prepend: true\n          }));\n        });\n\n        // ==================== Inject Style ====================\n        // Inject style\n        var style = updateCSS(styleStr, styleId, mergedCSSConfig);\n        style[CSS_IN_JS_INSTANCE] = cache.instanceId;\n\n        // Used for `useCacheToken` to remove on batch when token removed\n        style.setAttribute(ATTR_TOKEN, tokenKey);\n\n        // Debug usage. Dev only\n        if (process.env.NODE_ENV !== 'production') {\n          style.setAttribute(ATTR_CACHE_PATH, fullPath.join('|'));\n        }\n\n        // ================ Inject Effect Style =================\n        // Inject client side effect style\n        effectRestKeys.forEach(function (effectKey) {\n          updateCSS(normalizeStyle(effectStyle[effectKey]), \"_effect-\".concat(effectKey), mergedCSSConfig);\n        });\n      }\n    }),\n    _useGlobalCache2 = _slicedToArray(_useGlobalCache, 3),\n    cachedStyleStr = _useGlobalCache2[0],\n    cachedTokenKey = _useGlobalCache2[1],\n    cachedStyleId = _useGlobalCache2[2];\n  return function (node) {\n    var styleNode;\n    if (!ssrInline || isMergedClientSide || !defaultCache) {\n      styleNode = /*#__PURE__*/React.createElement(Empty, null);\n    } else {\n      var _ref6;\n      styleNode = /*#__PURE__*/React.createElement(\"style\", _extends({}, (_ref6 = {}, _defineProperty(_ref6, ATTR_TOKEN, cachedTokenKey), _defineProperty(_ref6, ATTR_MARK, cachedStyleId), _ref6), {\n        dangerouslySetInnerHTML: {\n          __html: cachedStyleStr\n        }\n      }));\n    }\n    return /*#__PURE__*/React.createElement(React.Fragment, null, styleNode, node);\n  };\n}\nexport var extract = function extract(cache, effectStyles, options) {\n  var _cache = _slicedToArray(cache, 6),\n    styleStr = _cache[0],\n    tokenKey = _cache[1],\n    styleId = _cache[2],\n    effectStyle = _cache[3],\n    clientOnly = _cache[4],\n    order = _cache[5];\n  var _ref7 = options || {},\n    plain = _ref7.plain;\n\n  // Skip client only style\n  if (clientOnly) {\n    return null;\n  }\n  var keyStyleText = styleStr;\n\n  // ====================== Share ======================\n  // Used for rc-util\n  var sharedAttrs = {\n    'data-rc-order': 'prependQueue',\n    'data-rc-priority': \"\".concat(order)\n  };\n\n  // ====================== Style ======================\n  keyStyleText = toStyleStr(styleStr, tokenKey, styleId, sharedAttrs, plain);\n\n  // =============== Create effect style ===============\n  if (effectStyle) {\n    Object.keys(effectStyle).forEach(function (effectKey) {\n      // Effect style can be reused\n      if (!effectStyles[effectKey]) {\n        effectStyles[effectKey] = true;\n        var effectStyleStr = normalizeStyle(effectStyle[effectKey]);\n        var effectStyleHTML = toStyleStr(effectStyleStr, tokenKey, \"_effect-\".concat(effectKey), sharedAttrs, plain);\n        if (effectKey.startsWith('@layer')) {\n          keyStyleText = effectStyleHTML + keyStyleText;\n        } else {\n          keyStyleText += effectStyleHTML;\n        }\n      }\n    });\n  }\n  return [order, styleId, keyStyleText];\n};","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { removeCSS, updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { useContext } from 'react';\nimport StyleContext, { ATTR_MARK, ATTR_TOKEN, CSS_IN_JS_INSTANCE } from \"../StyleContext\";\nimport { isClientSide, toStyleStr } from \"../util\";\nimport { transformToken } from \"../util/css-variables\";\nimport useGlobalCache from \"./useGlobalCache\";\nimport { uniqueHash } from \"./useStyleRegister\";\nexport var CSS_VAR_PREFIX = 'cssVar';\nvar useCSSVarRegister = function useCSSVarRegister(config, fn) {\n  var key = config.key,\n    prefix = config.prefix,\n    unitless = config.unitless,\n    ignore = config.ignore,\n    token = config.token,\n    _config$scope = config.scope,\n    scope = _config$scope === void 0 ? '' : _config$scope;\n  var _useContext = useContext(StyleContext),\n    instanceId = _useContext.cache.instanceId,\n    container = _useContext.container;\n  var tokenKey = token._tokenKey;\n  var stylePath = [].concat(_toConsumableArray(config.path), [key, scope, tokenKey]);\n  var cache = useGlobalCache(CSS_VAR_PREFIX, stylePath, function () {\n    var originToken = fn();\n    var _transformToken = transformToken(originToken, key, {\n        prefix: prefix,\n        unitless: unitless,\n        ignore: ignore,\n        scope: scope\n      }),\n      _transformToken2 = _slicedToArray(_transformToken, 2),\n      mergedToken = _transformToken2[0],\n      cssVarsStr = _transformToken2[1];\n    var styleId = uniqueHash(stylePath, cssVarsStr);\n    return [mergedToken, cssVarsStr, styleId, key];\n  }, function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 3),\n      styleId = _ref2[2];\n    if (isClientSide) {\n      removeCSS(styleId, {\n        mark: ATTR_MARK\n      });\n    }\n  }, function (_ref3) {\n    var _ref4 = _slicedToArray(_ref3, 3),\n      cssVarsStr = _ref4[1],\n      styleId = _ref4[2];\n    if (!cssVarsStr) {\n      return;\n    }\n    var style = updateCSS(cssVarsStr, styleId, {\n      mark: ATTR_MARK,\n      prepend: 'queue',\n      attachTo: container,\n      priority: -999\n    });\n    style[CSS_IN_JS_INSTANCE] = instanceId;\n\n    // Used for `useCacheToken` to remove on batch when token removed\n    style.setAttribute(ATTR_TOKEN, key);\n  });\n  return cache;\n};\nexport var extract = function extract(cache, effectStyles, options) {\n  var _cache = _slicedToArray(cache, 4),\n    styleStr = _cache[1],\n    styleId = _cache[2],\n    cssVarKey = _cache[3];\n  var _ref5 = options || {},\n    plain = _ref5.plain;\n  if (!styleStr) {\n    return null;\n  }\n  var order = -999;\n\n  // ====================== Style ======================\n  // Used for rc-util\n  var sharedAttrs = {\n    'data-rc-order': 'prependQueue',\n    'data-rc-priority': \"\".concat(order)\n  };\n  var styleText = toStyleStr(styleStr, cssVarKey, styleId, sharedAttrs, plain);\n  return [order, styleId, styleText];\n};\nexport default useCSSVarRegister;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _ExtractStyleFns;\nimport { extract as tokenExtractStyle, TOKEN_PREFIX } from \"./hooks/useCacheToken\";\nimport { CSS_VAR_PREFIX, extract as cssVarExtractStyle } from \"./hooks/useCSSVarRegister\";\nimport { extract as styleExtractStyle, STYLE_PREFIX } from \"./hooks/useStyleRegister\";\nimport { toStyleStr } from \"./util\";\nimport { ATTR_CACHE_MAP, serialize as serializeCacheMap } from \"./util/cacheMapUtil\";\nvar ExtractStyleFns = (_ExtractStyleFns = {}, _defineProperty(_ExtractStyleFns, STYLE_PREFIX, styleExtractStyle), _defineProperty(_ExtractStyleFns, TOKEN_PREFIX, tokenExtractStyle), _defineProperty(_ExtractStyleFns, CSS_VAR_PREFIX, cssVarExtractStyle), _ExtractStyleFns);\nfunction isNotNull(value) {\n  return value !== null;\n}\nexport default function extractStyle(cache, options) {\n  var _ref = typeof options === 'boolean' ? {\n      plain: options\n    } : options || {},\n    _ref$plain = _ref.plain,\n    plain = _ref$plain === void 0 ? false : _ref$plain,\n    _ref$types = _ref.types,\n    types = _ref$types === void 0 ? ['style', 'token', 'cssVar'] : _ref$types;\n  var matchPrefixRegexp = new RegExp(\"^(\".concat((typeof types === 'string' ? [types] : types).join('|'), \")%\"));\n\n  // prefix with `style` is used for `useStyleRegister` to cache style context\n  var styleKeys = Array.from(cache.cache.keys()).filter(function (key) {\n    return matchPrefixRegexp.test(key);\n  });\n\n  // Common effect styles like animation\n  var effectStyles = {};\n\n  // Mapping of cachePath to style hash\n  var cachePathMap = {};\n  var styleText = '';\n  styleKeys.map(function (key) {\n    var cachePath = key.replace(matchPrefixRegexp, '').replace(/%/g, '|');\n    var _key$split = key.split('%'),\n      _key$split2 = _slicedToArray(_key$split, 1),\n      prefix = _key$split2[0];\n    var extractFn = ExtractStyleFns[prefix];\n    var extractedStyle = extractFn(cache.cache.get(key)[1], effectStyles, {\n      plain: plain\n    });\n    if (!extractedStyle) {\n      return null;\n    }\n    var _extractedStyle = _slicedToArray(extractedStyle, 3),\n      order = _extractedStyle[0],\n      styleId = _extractedStyle[1],\n      styleStr = _extractedStyle[2];\n    if (key.startsWith('style')) {\n      cachePathMap[cachePath] = styleId;\n    }\n    return [order, styleStr];\n  }).filter(isNotNull).sort(function (_ref2, _ref3) {\n    var _ref4 = _slicedToArray(_ref2, 1),\n      o1 = _ref4[0];\n    var _ref5 = _slicedToArray(_ref3, 1),\n      o2 = _ref5[0];\n    return o1 - o2;\n  }).forEach(function (_ref6) {\n    var _ref7 = _slicedToArray(_ref6, 2),\n      style = _ref7[1];\n    styleText += style;\n  });\n\n  // ==================== Fill Cache Path ====================\n  styleText += toStyleStr(\".\".concat(ATTR_CACHE_MAP, \"{content:\\\"\").concat(serializeCacheMap(cachePathMap), \"\\\";}\"), undefined, undefined, _defineProperty({}, ATTR_CACHE_MAP, ATTR_CACHE_MAP), plain);\n  return styleText;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar Keyframe = /*#__PURE__*/function () {\n  function Keyframe(name, style) {\n    _classCallCheck(this, Keyframe);\n    _defineProperty(this, \"name\", void 0);\n    _defineProperty(this, \"style\", void 0);\n    _defineProperty(this, \"_keyframe\", true);\n    this.name = name;\n    this.style = style;\n  }\n  _createClass(Keyframe, [{\n    key: \"getName\",\n    value: function getName() {\n      var hashId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      return hashId ? \"\".concat(hashId, \"-\").concat(this.name) : this.name;\n    }\n  }]);\n  return Keyframe;\n}();\nexport default Keyframe;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nfunction splitValues(value) {\n  if (typeof value === 'number') {\n    return [[value], false];\n  }\n  var rawStyle = String(value).trim();\n  var importantCells = rawStyle.match(/(.*)(!important)/);\n  var splitStyle = (importantCells ? importantCells[1] : rawStyle).trim().split(/\\s+/);\n\n  // Combine styles split in brackets, like `calc(1px + 2px)`\n  var temp = [];\n  var brackets = 0;\n  return [splitStyle.reduce(function (list, item) {\n    if (item.includes('(') || item.includes(')')) {\n      var left = item.split('(').length - 1;\n      var right = item.split(')').length - 1;\n      brackets += left - right;\n    }\n    if (brackets >= 0) temp.push(item);\n    if (brackets === 0) {\n      list.push(temp.join(' '));\n      temp = [];\n    }\n    return list;\n  }, []), !!importantCells];\n}\nfunction noSplit(list) {\n  list.notSplit = true;\n  return list;\n}\nvar keyMap = {\n  // Inset\n  inset: ['top', 'right', 'bottom', 'left'],\n  insetBlock: ['top', 'bottom'],\n  insetBlockStart: ['top'],\n  insetBlockEnd: ['bottom'],\n  insetInline: ['left', 'right'],\n  insetInlineStart: ['left'],\n  insetInlineEnd: ['right'],\n  // Margin\n  marginBlock: ['marginTop', 'marginBottom'],\n  marginBlockStart: ['marginTop'],\n  marginBlockEnd: ['marginBottom'],\n  marginInline: ['marginLeft', 'marginRight'],\n  marginInlineStart: ['marginLeft'],\n  marginInlineEnd: ['marginRight'],\n  // Padding\n  paddingBlock: ['paddingTop', 'paddingBottom'],\n  paddingBlockStart: ['paddingTop'],\n  paddingBlockEnd: ['paddingBottom'],\n  paddingInline: ['paddingLeft', 'paddingRight'],\n  paddingInlineStart: ['paddingLeft'],\n  paddingInlineEnd: ['paddingRight'],\n  // Border\n  borderBlock: noSplit(['borderTop', 'borderBottom']),\n  borderBlockStart: noSplit(['borderTop']),\n  borderBlockEnd: noSplit(['borderBottom']),\n  borderInline: noSplit(['borderLeft', 'borderRight']),\n  borderInlineStart: noSplit(['borderLeft']),\n  borderInlineEnd: noSplit(['borderRight']),\n  // Border width\n  borderBlockWidth: ['borderTopWidth', 'borderBottomWidth'],\n  borderBlockStartWidth: ['borderTopWidth'],\n  borderBlockEndWidth: ['borderBottomWidth'],\n  borderInlineWidth: ['borderLeftWidth', 'borderRightWidth'],\n  borderInlineStartWidth: ['borderLeftWidth'],\n  borderInlineEndWidth: ['borderRightWidth'],\n  // Border style\n  borderBlockStyle: ['borderTopStyle', 'borderBottomStyle'],\n  borderBlockStartStyle: ['borderTopStyle'],\n  borderBlockEndStyle: ['borderBottomStyle'],\n  borderInlineStyle: ['borderLeftStyle', 'borderRightStyle'],\n  borderInlineStartStyle: ['borderLeftStyle'],\n  borderInlineEndStyle: ['borderRightStyle'],\n  // Border color\n  borderBlockColor: ['borderTopColor', 'borderBottomColor'],\n  borderBlockStartColor: ['borderTopColor'],\n  borderBlockEndColor: ['borderBottomColor'],\n  borderInlineColor: ['borderLeftColor', 'borderRightColor'],\n  borderInlineStartColor: ['borderLeftColor'],\n  borderInlineEndColor: ['borderRightColor'],\n  // Border radius\n  borderStartStartRadius: ['borderTopLeftRadius'],\n  borderStartEndRadius: ['borderTopRightRadius'],\n  borderEndStartRadius: ['borderBottomLeftRadius'],\n  borderEndEndRadius: ['borderBottomRightRadius']\n};\nfunction wrapImportantAndSkipCheck(value, important) {\n  var parsedValue = value;\n  if (important) {\n    parsedValue = \"\".concat(parsedValue, \" !important\");\n  }\n  return {\n    _skip_check_: true,\n    value: parsedValue\n  };\n}\n\n/**\n * Convert css logical properties to legacy properties.\n * Such as: `margin-block-start` to `margin-top`.\n * Transform list:\n * - inset\n * - margin\n * - padding\n * - border\n */\nvar transform = {\n  visit: function visit(cssObj) {\n    var clone = {};\n    Object.keys(cssObj).forEach(function (key) {\n      var value = cssObj[key];\n      var matchValue = keyMap[key];\n      if (matchValue && (typeof value === 'number' || typeof value === 'string')) {\n        var _splitValues = splitValues(value),\n          _splitValues2 = _slicedToArray(_splitValues, 2),\n          _values = _splitValues2[0],\n          _important = _splitValues2[1];\n        if (matchValue.length && matchValue.notSplit) {\n          // not split means always give same value like border\n          matchValue.forEach(function (matchKey) {\n            clone[matchKey] = wrapImportantAndSkipCheck(value, _important);\n          });\n        } else if (matchValue.length === 1) {\n          // Handle like `marginBlockStart` => `marginTop`\n          clone[matchValue[0]] = wrapImportantAndSkipCheck(_values[0], _important);\n        } else if (matchValue.length === 2) {\n          // Handle like `marginBlock` => `marginTop` & `marginBottom`\n          matchValue.forEach(function (matchKey, index) {\n            var _values$index;\n            clone[matchKey] = wrapImportantAndSkipCheck((_values$index = _values[index]) !== null && _values$index !== void 0 ? _values$index : _values[0], _important);\n          });\n        } else if (matchValue.length === 4) {\n          // Handle like `inset` => `top` & `right` & `bottom` & `left`\n          matchValue.forEach(function (matchKey, index) {\n            var _ref, _values$index2;\n            clone[matchKey] = wrapImportantAndSkipCheck((_ref = (_values$index2 = _values[index]) !== null && _values$index2 !== void 0 ? _values$index2 : _values[index - 2]) !== null && _ref !== void 0 ? _ref : _values[0], _important);\n          });\n        } else {\n          clone[key] = value;\n        }\n      } else {\n        clone[key] = value;\n      }\n    });\n    return clone;\n  }\n};\nexport default transform;","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n  var r = isNativeReflectConstruct();\n  return function () {\n    var e,\n      o = getPrototypeOf(t);\n    if (r) {\n      var s = getPrototypeOf(this).constructor;\n      e = Reflect.construct(o, arguments, s);\n    } else e = o.apply(this, arguments);\n    return possibleConstructorReturn(this, e);\n  };\n}\nexport { _createSuper as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","import _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nvar AbstractCalculator = /*#__PURE__*/_createClass(function AbstractCalculator() {\n  _classCallCheck(this, AbstractCalculator);\n});\nexport default AbstractCalculator;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport AbstractCalculator from \"./calculator\";\nvar CALC_UNIT = 'CALC_UNIT';\nvar regexp = new RegExp(CALC_UNIT, 'g');\nfunction unit(value) {\n  if (typeof value === 'number') {\n    return \"\".concat(value).concat(CALC_UNIT);\n  }\n  return value;\n}\nvar CSSCalculator = /*#__PURE__*/function (_AbstractCalculator) {\n  _inherits(CSSCalculator, _AbstractCalculator);\n  var _super = _createSuper(CSSCalculator);\n  function CSSCalculator(num, unitlessCssVar) {\n    var _this;\n    _classCallCheck(this, CSSCalculator);\n    _this = _super.call(this);\n    _defineProperty(_assertThisInitialized(_this), \"result\", '');\n    _defineProperty(_assertThisInitialized(_this), \"unitlessCssVar\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"lowPriority\", void 0);\n    var numType = _typeof(num);\n    _this.unitlessCssVar = unitlessCssVar;\n    if (num instanceof CSSCalculator) {\n      _this.result = \"(\".concat(num.result, \")\");\n    } else if (numType === 'number') {\n      _this.result = unit(num);\n    } else if (numType === 'string') {\n      _this.result = num;\n    }\n    return _this;\n  }\n  _createClass(CSSCalculator, [{\n    key: \"add\",\n    value: function add(num) {\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" + \").concat(num.getResult());\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" + \").concat(unit(num));\n      }\n      this.lowPriority = true;\n      return this;\n    }\n  }, {\n    key: \"sub\",\n    value: function sub(num) {\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" - \").concat(num.getResult());\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" - \").concat(unit(num));\n      }\n      this.lowPriority = true;\n      return this;\n    }\n  }, {\n    key: \"mul\",\n    value: function mul(num) {\n      if (this.lowPriority) {\n        this.result = \"(\".concat(this.result, \")\");\n      }\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" * \").concat(num.getResult(true));\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" * \").concat(num);\n      }\n      this.lowPriority = false;\n      return this;\n    }\n  }, {\n    key: \"div\",\n    value: function div(num) {\n      if (this.lowPriority) {\n        this.result = \"(\".concat(this.result, \")\");\n      }\n      if (num instanceof CSSCalculator) {\n        this.result = \"\".concat(this.result, \" / \").concat(num.getResult(true));\n      } else if (typeof num === 'number' || typeof num === 'string') {\n        this.result = \"\".concat(this.result, \" / \").concat(num);\n      }\n      this.lowPriority = false;\n      return this;\n    }\n  }, {\n    key: \"getResult\",\n    value: function getResult(force) {\n      return this.lowPriority || force ? \"(\".concat(this.result, \")\") : this.result;\n    }\n  }, {\n    key: \"equal\",\n    value: function equal(options) {\n      var _this2 = this;\n      var _ref = options || {},\n        cssUnit = _ref.unit;\n      var mergedUnit = true;\n      if (typeof cssUnit === 'boolean') {\n        mergedUnit = cssUnit;\n      } else if (Array.from(this.unitlessCssVar).some(function (cssVar) {\n        return _this2.result.includes(cssVar);\n      })) {\n        mergedUnit = false;\n      }\n      this.result = this.result.replace(regexp, mergedUnit ? 'px' : '');\n      if (typeof this.lowPriority !== 'undefined') {\n        return \"calc(\".concat(this.result, \")\");\n      }\n      return this.result;\n    }\n  }]);\n  return CSSCalculator;\n}(AbstractCalculator);\nexport { CSSCalculator as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport AbstractCalculator from \"./calculator\";\nvar NumCalculator = /*#__PURE__*/function (_AbstractCalculator) {\n  _inherits(NumCalculator, _AbstractCalculator);\n  var _super = _createSuper(NumCalculator);\n  function NumCalculator(num) {\n    var _this;\n    _classCallCheck(this, NumCalculator);\n    _this = _super.call(this);\n    _defineProperty(_assertThisInitialized(_this), \"result\", 0);\n    if (num instanceof NumCalculator) {\n      _this.result = num.result;\n    } else if (typeof num === 'number') {\n      _this.result = num;\n    }\n    return _this;\n  }\n  _createClass(NumCalculator, [{\n    key: \"add\",\n    value: function add(num) {\n      if (num instanceof NumCalculator) {\n        this.result += num.result;\n      } else if (typeof num === 'number') {\n        this.result += num;\n      }\n      return this;\n    }\n  }, {\n    key: \"sub\",\n    value: function sub(num) {\n      if (num instanceof NumCalculator) {\n        this.result -= num.result;\n      } else if (typeof num === 'number') {\n        this.result -= num;\n      }\n      return this;\n    }\n  }, {\n    key: \"mul\",\n    value: function mul(num) {\n      if (num instanceof NumCalculator) {\n        this.result *= num.result;\n      } else if (typeof num === 'number') {\n        this.result *= num;\n      }\n      return this;\n    }\n  }, {\n    key: \"div\",\n    value: function div(num) {\n      if (num instanceof NumCalculator) {\n        this.result /= num.result;\n      } else if (typeof num === 'number') {\n        this.result /= num;\n      }\n      return this;\n    }\n  }, {\n    key: \"equal\",\n    value: function equal() {\n      return this.result;\n    }\n  }]);\n  return NumCalculator;\n}(AbstractCalculator);\nexport default NumCalculator;","import CSSCalculator from \"./CSSCalculator\";\nimport NumCalculator from \"./NumCalculator\";\nvar genCalc = function genCalc(type, unitlessCssVar) {\n  var Calculator = type === 'css' ? CSSCalculator : NumCalculator;\n  return function (num) {\n    return new Calculator(num, unitlessCssVar);\n  };\n};\nexport default genCalc;","var getCompVarPrefix = function getCompVarPrefix(component, prefix) {\n  return \"\".concat([prefix, component.replace(/([A-Z]+)([A-Z][a-z]+)/g, '$1-$2').replace(/([a-z])([A-Z])/g, '$1-$2')].filter(Boolean).join('-'));\n};\nexport default getCompVarPrefix;","import * as React from 'react';\nexport default function useEvent(callback) {\n  var fnRef = React.useRef();\n  fnRef.current = callback;\n  var memoFn = React.useCallback(function () {\n    var _fnRef$current;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n  }, []);\n  return memoFn;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n  var destroyRef = React.useRef(false);\n  var _React$useState = React.useState(defaultValue),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    value = _React$useState2[0],\n    setValue = _React$useState2[1];\n  React.useEffect(function () {\n    destroyRef.current = false;\n    return function () {\n      destroyRef.current = true;\n    };\n  }, []);\n  function safeSetState(updater, ignoreDestroy) {\n    if (ignoreDestroy && destroyRef.current) {\n      return;\n    }\n    setValue(updater);\n  }\n  return [value, safeSetState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n  return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n  var _ref = option || {},\n    defaultValue = _ref.defaultValue,\n    value = _ref.value,\n    onChange = _ref.onChange,\n    postState = _ref.postState;\n\n  // ======================= Init =======================\n  var _useState = useState(function () {\n      if (hasValue(value)) {\n        return value;\n      } else if (hasValue(defaultValue)) {\n        return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n      } else {\n        return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n      }\n    }),\n    _useState2 = _slicedToArray(_useState, 2),\n    innerValue = _useState2[0],\n    setInnerValue = _useState2[1];\n  var mergedValue = value !== undefined ? value : innerValue;\n  var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n  // ====================== Change ======================\n  var onChangeFn = useEvent(onChange);\n  var _useState3 = useState([mergedValue]),\n    _useState4 = _slicedToArray(_useState3, 2),\n    prevValue = _useState4[0],\n    setPrevValue = _useState4[1];\n  useLayoutUpdateEffect(function () {\n    var prev = prevValue[0];\n    if (innerValue !== prev) {\n      onChangeFn(innerValue, prev);\n    }\n  }, [prevValue]);\n\n  // Sync value back to `undefined` when it from control to un-control\n  useLayoutUpdateEffect(function () {\n    if (!hasValue(value)) {\n      setInnerValue(value);\n    }\n  }, [value]);\n\n  // ====================== Update ======================\n  var triggerChange = useEvent(function (updater, ignoreDestroy) {\n    setInnerValue(updater, ignoreDestroy);\n    setPrevValue([mergedValue], ignoreDestroy);\n  });\n  return [postMergedValue, triggerChange];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { isValidElement, version } from 'react';\nimport { ForwardRef, isMemo } from 'react-is';\nimport useMemo from \"./hooks/useMemo\";\nimport isFragment from \"./React/isFragment\";\nvar ReactMajorVersion = Number(version.split('.')[0]);\nexport var fillRef = function fillRef(ref, node) {\n  if (typeof ref === 'function') {\n    ref(node);\n  } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n    ref.current = node;\n  }\n};\n\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport var composeRef = function composeRef() {\n  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n    refs[_key] = arguments[_key];\n  }\n  var refList = refs.filter(Boolean);\n  if (refList.length <= 1) {\n    return refList[0];\n  }\n  return function (node) {\n    refs.forEach(function (ref) {\n      fillRef(ref, node);\n    });\n  };\n};\nexport var useComposeRef = function useComposeRef() {\n  for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    refs[_key2] = arguments[_key2];\n  }\n  return useMemo(function () {\n    return composeRef.apply(void 0, refs);\n  }, refs, function (prev, next) {\n    return prev.length !== next.length || prev.every(function (ref, i) {\n      return ref !== next[i];\n    });\n  });\n};\nexport var supportRef = function supportRef(nodeOrComponent) {\n  var _type$prototype, _nodeOrComponent$prot;\n  if (!nodeOrComponent) {\n    return false;\n  }\n\n  // React 19 no need `forwardRef` anymore. So just pass if is a React element.\n  if (isReactElement(nodeOrComponent) && ReactMajorVersion >= 19) {\n    return true;\n  }\n  var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n\n  // Function component node\n  if (typeof type === 'function' && !((_type$prototype = type.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render) && type.$$typeof !== ForwardRef) {\n    return false;\n  }\n\n  // Class component\n  if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render) && nodeOrComponent.$$typeof !== ForwardRef) {\n    return false;\n  }\n  return true;\n};\nfunction isReactElement(node) {\n  return /*#__PURE__*/isValidElement(node) && !isFragment(node);\n}\nexport var supportNodeRef = function supportNodeRef(node) {\n  return isReactElement(node) && supportRef(node);\n};\n\n/**\n * In React 19. `ref` is not a property from node.\n * But a property from `props.ref`.\n * To check if `props.ref` exist or fallback to `ref`.\n */\nexport var getNodeRef = function getNodeRef(node) {\n  if (node && isReactElement(node)) {\n    var ele = node;\n\n    // Source from:\n    // https://github.com/mui/material-ui/blob/master/packages/mui-utils/src/getReactNodeRef/getReactNodeRef.ts\n    return ele.props.propertyIsEnumerable('ref') ? ele.props.ref : ele.ref;\n  }\n  return null;\n};","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _toArray(r) {\n  return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nexport { _toArray as default };","export default function get(entity, path) {\n  var current = entity;\n  for (var i = 0; i < path.length; i += 1) {\n    if (current === null || current === undefined) {\n      return undefined;\n    }\n    current = current[path[i]];\n  }\n  return current;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport get from \"./get\";\nfunction internalSet(entity, paths, value, removeIfUndefined) {\n  if (!paths.length) {\n    return value;\n  }\n  var _paths = _toArray(paths),\n    path = _paths[0],\n    restPath = _paths.slice(1);\n  var clone;\n  if (!entity && typeof path === 'number') {\n    clone = [];\n  } else if (Array.isArray(entity)) {\n    clone = _toConsumableArray(entity);\n  } else {\n    clone = _objectSpread({}, entity);\n  }\n\n  // Delete prop if `removeIfUndefined` and value is undefined\n  if (removeIfUndefined && value === undefined && restPath.length === 1) {\n    delete clone[path][restPath[0]];\n  } else {\n    clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n  }\n  return clone;\n}\nexport default function set(entity, paths, value) {\n  var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  // Do nothing if `removeIfUndefined` and parent object not exist\n  if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) {\n    return entity;\n  }\n  return internalSet(entity, paths, value, removeIfUndefined);\n}\nfunction isObject(obj) {\n  return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction createEmpty(source) {\n  return Array.isArray(source) ? [] : {};\n}\nvar keys = typeof Reflect === 'undefined' ? Object.keys : Reflect.ownKeys;\n\n/**\n * Merge objects which will create\n */\nexport function merge() {\n  for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n  var clone = createEmpty(sources[0]);\n  sources.forEach(function (src) {\n    function internalMerge(path, parentLoopSet) {\n      var loopSet = new Set(parentLoopSet);\n      var value = get(src, path);\n      var isArr = Array.isArray(value);\n      if (isArr || isObject(value)) {\n        // Only add not loop obj\n        if (!loopSet.has(value)) {\n          loopSet.add(value);\n          var originValue = get(clone, path);\n          if (isArr) {\n            // Array will always be override\n            clone = set(clone, path, []);\n          } else if (!originValue || _typeof(originValue) !== 'object') {\n            // Init container if not exist\n            clone = set(clone, path, createEmpty(value));\n          }\n          keys(value).forEach(function (key) {\n            internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);\n          });\n        }\n      } else {\n        clone = set(clone, path, value);\n      }\n    }\n    internalMerge([]);\n  });\n  return clone;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { warning } from 'rc-util';\nfunction getComponentToken(component, token, defaultToken, options) {\n  var customToken = _objectSpread({}, token[component]);\n  if (options !== null && options !== void 0 && options.deprecatedTokens) {\n    var deprecatedTokens = options.deprecatedTokens;\n    deprecatedTokens.forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n        oldTokenKey = _ref2[0],\n        newTokenKey = _ref2[1];\n      if (process.env.NODE_ENV !== 'production') {\n        warning(!(customToken !== null && customToken !== void 0 && customToken[oldTokenKey]), \"Component Token `\".concat(String(oldTokenKey), \"` of \").concat(String(component), \" is deprecated. Please use `\").concat(String(newTokenKey), \"` instead.\"));\n      }\n\n      // Should wrap with `if` clause, or there will be `undefined` in object.\n      if (customToken !== null && customToken !== void 0 && customToken[oldTokenKey] || customToken !== null && customToken !== void 0 && customToken[newTokenKey]) {\n        var _customToken$newToken;\n        (_customToken$newToken = customToken[newTokenKey]) !== null && _customToken$newToken !== void 0 ? _customToken$newToken : customToken[newTokenKey] = customToken === null || customToken === void 0 ? void 0 : customToken[oldTokenKey];\n      }\n    });\n  }\n  var mergedToken = _objectSpread(_objectSpread({}, defaultToken), customToken);\n\n  // Remove same value as global token to minimize size\n  Object.keys(mergedToken).forEach(function (key) {\n    if (mergedToken[key] === token[key]) {\n      delete mergedToken[key];\n    }\n  });\n  return mergedToken;\n}\nexport default getComponentToken;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar enableStatistic = process.env.NODE_ENV !== 'production' || typeof CSSINJS_STATISTIC !== 'undefined';\nvar recording = true;\n\n/**\n * This function will do as `Object.assign` in production. But will use Object.defineProperty:get to\n * pass all value access in development. To support statistic field usage with alias token.\n */\nexport function merge() {\n  for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) {\n    objs[_key] = arguments[_key];\n  }\n  /* istanbul ignore next */\n  if (!enableStatistic) {\n    return Object.assign.apply(Object, [{}].concat(objs));\n  }\n  recording = false;\n  var ret = {};\n  objs.forEach(function (obj) {\n    if (_typeof(obj) !== 'object') {\n      return;\n    }\n    var keys = Object.keys(obj);\n    keys.forEach(function (key) {\n      Object.defineProperty(ret, key, {\n        configurable: true,\n        enumerable: true,\n        get: function get() {\n          return obj[key];\n        }\n      });\n    });\n  });\n  recording = true;\n  return ret;\n}\n\n/** @internal Internal Usage. Not use in your production. */\nexport var statistic = {};\n\n/** @internal Internal Usage. Not use in your production. */\nexport var _statistic_build_ = {};\n\n/* istanbul ignore next */\nfunction noop() {}\n\n/** Statistic token usage case. Should use `merge` function if you do not want spread record. */\nvar statisticToken = function statisticToken(token) {\n  var tokenKeys;\n  var proxy = token;\n  var flush = noop;\n  if (enableStatistic && typeof Proxy !== 'undefined') {\n    tokenKeys = new Set();\n    proxy = new Proxy(token, {\n      get: function get(obj, prop) {\n        if (recording) {\n          var _tokenKeys;\n          (_tokenKeys = tokenKeys) === null || _tokenKeys === void 0 || _tokenKeys.add(prop);\n        }\n        return obj[prop];\n      }\n    });\n    flush = function flush(componentName, componentToken) {\n      var _statistic$componentN;\n      statistic[componentName] = {\n        global: Array.from(tokenKeys),\n        component: _objectSpread(_objectSpread({}, (_statistic$componentN = statistic[componentName]) === null || _statistic$componentN === void 0 ? void 0 : _statistic$componentN.component), componentToken)\n      };\n    };\n  }\n  return {\n    token: proxy,\n    keys: tokenKeys,\n    flush: flush\n  };\n};\nexport default statisticToken;","import { merge as mergeToken } from \"./statistic\";\nfunction getDefaultComponentToken(component, token, getDefaultToken) {\n  if (typeof getDefaultToken === 'function') {\n    var _token$component;\n    return getDefaultToken(mergeToken(token, (_token$component = token[component]) !== null && _token$component !== void 0 ? _token$component : {}));\n  }\n  return getDefaultToken !== null && getDefaultToken !== void 0 ? getDefaultToken : {};\n}\nexport default getDefaultComponentToken;","import { unit } from '@ant-design/cssinjs';\nfunction genMaxMin(type) {\n  if (type === 'js') {\n    return {\n      max: Math.max,\n      min: Math.min\n    };\n  }\n  return {\n    max: function max() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      return \"max(\".concat(args.map(function (value) {\n        return unit(value);\n      }).join(','), \")\");\n    },\n    min: function min() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      return \"min(\".concat(args.map(function (value) {\n        return unit(value);\n      }).join(','), \")\");\n    }\n  };\n}\nexport default genMaxMin;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React from 'react';\nvar BEAT_LIMIT = 1000 * 60 * 10;\n\n/**\n * A helper class to map keys to values.\n * It supports both primitive keys and object keys.\n */\nvar ArrayKeyMap = /*#__PURE__*/function () {\n  function ArrayKeyMap() {\n    _classCallCheck(this, ArrayKeyMap);\n    _defineProperty(this, \"map\", new Map());\n    // Use WeakMap to avoid memory leak\n    _defineProperty(this, \"objectIDMap\", new WeakMap());\n    _defineProperty(this, \"nextID\", 0);\n    _defineProperty(this, \"lastAccessBeat\", new Map());\n    // We will clean up the cache when reach the limit\n    _defineProperty(this, \"accessBeat\", 0);\n  }\n  _createClass(ArrayKeyMap, [{\n    key: \"set\",\n    value: function set(keys, value) {\n      // New set will trigger clear\n      this.clear();\n\n      // Set logic\n      var compositeKey = this.getCompositeKey(keys);\n      this.map.set(compositeKey, value);\n      this.lastAccessBeat.set(compositeKey, Date.now());\n    }\n  }, {\n    key: \"get\",\n    value: function get(keys) {\n      var compositeKey = this.getCompositeKey(keys);\n      var cache = this.map.get(compositeKey);\n      this.lastAccessBeat.set(compositeKey, Date.now());\n      this.accessBeat += 1;\n      return cache;\n    }\n  }, {\n    key: \"getCompositeKey\",\n    value: function getCompositeKey(keys) {\n      var _this = this;\n      var ids = keys.map(function (key) {\n        if (key && _typeof(key) === 'object') {\n          return \"obj_\".concat(_this.getObjectID(key));\n        }\n        return \"\".concat(_typeof(key), \"_\").concat(key);\n      });\n      return ids.join('|');\n    }\n  }, {\n    key: \"getObjectID\",\n    value: function getObjectID(obj) {\n      if (this.objectIDMap.has(obj)) {\n        return this.objectIDMap.get(obj);\n      }\n      var id = this.nextID;\n      this.objectIDMap.set(obj, id);\n      this.nextID += 1;\n      return id;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      var _this2 = this;\n      if (this.accessBeat > 10000) {\n        var now = Date.now();\n        this.lastAccessBeat.forEach(function (beat, key) {\n          if (now - beat > BEAT_LIMIT) {\n            _this2.map.delete(key);\n            _this2.lastAccessBeat.delete(key);\n          }\n        });\n        this.accessBeat = 0;\n      }\n    }\n  }]);\n  return ArrayKeyMap;\n}();\nvar uniqueMap = new ArrayKeyMap();\n\n/**\n * Like `useMemo`, but this hook result will be shared across all instances.\n */\nfunction useUniqueMemo(memoFn, deps) {\n  return React.useMemo(function () {\n    var cachedValue = uniqueMap.get(deps);\n    if (cachedValue) {\n      return cachedValue;\n    }\n    var newValue = memoFn();\n    uniqueMap.set(deps, newValue);\n    return newValue;\n  }, deps);\n}\nexport default useUniqueMemo;","/**\n * Provide a default hook since not everyone needs to config this.\n */\nvar useDefaultCSP = function useDefaultCSP() {\n  return {};\n};\nexport default useDefaultCSP;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport React from 'react';\nimport { token2CSSVar, useCSSVarRegister, useStyleRegister } from '@ant-design/cssinjs';\nimport genCalc from \"./calc\";\nimport getCompVarPrefix from \"./getCompVarPrefix\";\nimport getComponentToken from \"./getComponentToken\";\nimport getDefaultComponentToken from \"./getDefaultComponentToken\";\nimport genMaxMin from \"./maxmin\";\nimport statisticToken, { merge as mergeToken } from \"./statistic\";\nimport useUniqueMemo from \"../_util/hooks/useUniqueMemo\";\nimport useDefaultCSP from \"../hooks/useCSP\";\nfunction genStyleUtils(config) {\n  // Dependency inversion for preparing basic config.\n  var _config$useCSP = config.useCSP,\n    useCSP = _config$useCSP === void 0 ? useDefaultCSP : _config$useCSP,\n    useToken = config.useToken,\n    usePrefix = config.usePrefix,\n    getResetStyles = config.getResetStyles,\n    getCommonStyle = config.getCommonStyle,\n    getCompUnitless = config.getCompUnitless;\n  function genStyleHooks(component, styleFn, getDefaultToken, options) {\n    var componentName = Array.isArray(component) ? component[0] : component;\n    function prefixToken(key) {\n      return \"\".concat(String(componentName)).concat(key.slice(0, 1).toUpperCase()).concat(key.slice(1));\n    }\n\n    // Fill unitless\n    var originUnitless = (options === null || options === void 0 ? void 0 : options.unitless) || {};\n    var originCompUnitless = typeof getCompUnitless === 'function' ? getCompUnitless(component) : {};\n    var compUnitless = _objectSpread(_objectSpread({}, originCompUnitless), {}, _defineProperty({}, prefixToken('zIndexPopup'), true));\n    Object.keys(originUnitless).forEach(function (key) {\n      compUnitless[prefixToken(key)] = originUnitless[key];\n    });\n\n    // Options\n    var mergedOptions = _objectSpread(_objectSpread({}, options), {}, {\n      unitless: compUnitless,\n      prefixToken: prefixToken\n    });\n\n    // Hooks\n    var useStyle = genComponentStyleHook(component, styleFn, getDefaultToken, mergedOptions);\n    var useCSSVar = genCSSVarRegister(componentName, getDefaultToken, mergedOptions);\n    return function (prefixCls) {\n      var rootCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : prefixCls;\n      var _useStyle = useStyle(prefixCls, rootCls),\n        _useStyle2 = _slicedToArray(_useStyle, 2),\n        hashId = _useStyle2[1];\n      var _useCSSVar = useCSSVar(rootCls),\n        _useCSSVar2 = _slicedToArray(_useCSSVar, 2),\n        wrapCSSVar = _useCSSVar2[0],\n        cssVarCls = _useCSSVar2[1];\n      return [wrapCSSVar, hashId, cssVarCls];\n    };\n  }\n  function genCSSVarRegister(component, getDefaultToken, options) {\n    var compUnitless = options.unitless,\n      _options$injectStyle = options.injectStyle,\n      injectStyle = _options$injectStyle === void 0 ? true : _options$injectStyle,\n      prefixToken = options.prefixToken,\n      ignore = options.ignore;\n    var CSSVarRegister = function CSSVarRegister(_ref) {\n      var rootCls = _ref.rootCls,\n        _ref$cssVar = _ref.cssVar,\n        cssVar = _ref$cssVar === void 0 ? {} : _ref$cssVar;\n      var _useToken = useToken(),\n        realToken = _useToken.realToken;\n      useCSSVarRegister({\n        path: [component],\n        prefix: cssVar.prefix,\n        key: cssVar.key,\n        unitless: compUnitless,\n        ignore: ignore,\n        token: realToken,\n        scope: rootCls\n      }, function () {\n        var defaultToken = getDefaultComponentToken(component, realToken, getDefaultToken);\n        var componentToken = getComponentToken(component, realToken, defaultToken, {\n          deprecatedTokens: options === null || options === void 0 ? void 0 : options.deprecatedTokens\n        });\n        Object.keys(defaultToken).forEach(function (key) {\n          componentToken[prefixToken(key)] = componentToken[key];\n          delete componentToken[key];\n        });\n        return componentToken;\n      });\n      return null;\n    };\n    var useCSSVar = function useCSSVar(rootCls) {\n      var _useToken2 = useToken(),\n        cssVar = _useToken2.cssVar;\n      return [function (node) {\n        return injectStyle && cssVar ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CSSVarRegister, {\n          rootCls: rootCls,\n          cssVar: cssVar,\n          component: component\n        }), node) : node;\n      }, cssVar === null || cssVar === void 0 ? void 0 : cssVar.key];\n    };\n    return useCSSVar;\n  }\n  function genComponentStyleHook(componentName, styleFn, getDefaultToken) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var cells = Array.isArray(componentName) ? componentName : [componentName, componentName];\n    var _cells = _slicedToArray(cells, 1),\n      component = _cells[0];\n    var concatComponent = cells.join('-');\n    var mergedLayer = config.layer || {\n      name: 'antd'\n    };\n\n    // Return new style hook\n    return function (prefixCls) {\n      var rootCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : prefixCls;\n      var _useToken3 = useToken(),\n        theme = _useToken3.theme,\n        realToken = _useToken3.realToken,\n        hashId = _useToken3.hashId,\n        token = _useToken3.token,\n        cssVar = _useToken3.cssVar;\n      var _usePrefix = usePrefix(),\n        rootPrefixCls = _usePrefix.rootPrefixCls,\n        iconPrefixCls = _usePrefix.iconPrefixCls;\n      var csp = useCSP();\n      var type = cssVar ? 'css' : 'js';\n\n      // Use unique memo to share the result across all instances\n      var calc = useUniqueMemo(function () {\n        var unitlessCssVar = new Set();\n        if (cssVar) {\n          Object.keys(options.unitless || {}).forEach(function (key) {\n            // Some component proxy the AliasToken (e.g. Image) and some not (e.g. Modal)\n            // We should both pass in `unitlessCssVar` to make sure the CSSVar can be unitless.\n            unitlessCssVar.add(token2CSSVar(key, cssVar.prefix));\n            unitlessCssVar.add(token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix)));\n          });\n        }\n        return genCalc(type, unitlessCssVar);\n      }, [type, component, cssVar === null || cssVar === void 0 ? void 0 : cssVar.prefix]);\n      var _genMaxMin = genMaxMin(type),\n        max = _genMaxMin.max,\n        min = _genMaxMin.min;\n\n      // Shared config\n      var sharedConfig = {\n        theme: theme,\n        token: token,\n        hashId: hashId,\n        nonce: function nonce() {\n          return csp.nonce;\n        },\n        clientOnly: options.clientOnly,\n        layer: mergedLayer,\n        // antd is always at top of styles\n        order: options.order || -999\n      };\n\n      // This if statement is safe, as it will only be used if the generator has the function. It's not dynamic.\n      if (typeof getResetStyles === 'function') {\n        // Generate style for all need reset tags.\n        useStyleRegister(_objectSpread(_objectSpread({}, sharedConfig), {}, {\n          clientOnly: false,\n          path: ['Shared', rootPrefixCls]\n        }), function () {\n          return getResetStyles(token, {\n            prefix: {\n              rootPrefixCls: rootPrefixCls,\n              iconPrefixCls: iconPrefixCls\n            },\n            csp: csp\n          });\n        });\n      }\n      var wrapSSR = useStyleRegister(_objectSpread(_objectSpread({}, sharedConfig), {}, {\n        path: [concatComponent, prefixCls, iconPrefixCls]\n      }), function () {\n        if (options.injectStyle === false) {\n          return [];\n        }\n        var _statisticToken = statisticToken(token),\n          proxyToken = _statisticToken.token,\n          flush = _statisticToken.flush;\n        var defaultComponentToken = getDefaultComponentToken(component, realToken, getDefaultToken);\n        var componentCls = \".\".concat(prefixCls);\n        var componentToken = getComponentToken(component, realToken, defaultComponentToken, {\n          deprecatedTokens: options.deprecatedTokens\n        });\n        if (cssVar && defaultComponentToken && _typeof(defaultComponentToken) === 'object') {\n          Object.keys(defaultComponentToken).forEach(function (key) {\n            defaultComponentToken[key] = \"var(\".concat(token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix)), \")\");\n          });\n        }\n        var mergedToken = mergeToken(proxyToken, {\n          componentCls: componentCls,\n          prefixCls: prefixCls,\n          iconCls: \".\".concat(iconPrefixCls),\n          antCls: \".\".concat(rootPrefixCls),\n          calc: calc,\n          // @ts-ignore\n          max: max,\n          // @ts-ignore\n          min: min\n        }, cssVar ? defaultComponentToken : componentToken);\n        var styleInterpolation = styleFn(mergedToken, {\n          hashId: hashId,\n          prefixCls: prefixCls,\n          rootPrefixCls: rootPrefixCls,\n          iconPrefixCls: iconPrefixCls\n        });\n        flush(component, componentToken);\n        var commonStyle = typeof getCommonStyle === 'function' ? getCommonStyle(mergedToken, prefixCls, rootCls, options.resetFont) : null;\n        return [options.resetStyle === false ? null : commonStyle, styleInterpolation];\n      });\n      return [wrapSSR, hashId];\n    };\n  }\n  function genSubStyleComponent(componentName, styleFn, getDefaultToken) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var useStyle = genComponentStyleHook(componentName, styleFn, getDefaultToken, _objectSpread({\n      resetStyle: false,\n      // Sub Style should default after root one\n      order: -998\n    }, options));\n    var StyledComponent = function StyledComponent(_ref2) {\n      var prefixCls = _ref2.prefixCls,\n        _ref2$rootCls = _ref2.rootCls,\n        rootCls = _ref2$rootCls === void 0 ? prefixCls : _ref2$rootCls;\n      useStyle(prefixCls, rootCls);\n      return null;\n    };\n    if (process.env.NODE_ENV !== 'production') {\n      StyledComponent.displayName = \"SubStyle_\".concat(String(Array.isArray(componentName) ? componentName.join('.') : componentName));\n    }\n    return StyledComponent;\n  }\n  return {\n    genStyleHooks: genStyleHooks,\n    genSubStyleComponent: genSubStyleComponent,\n    genComponentStyleHook: genComponentStyleHook\n  };\n}\nexport default genStyleUtils;","\"use client\";\n\nimport { unit } from '@ant-design/cssinjs';\nexport const textEllipsis = {\n  overflow: 'hidden',\n  whiteSpace: 'nowrap',\n  textOverflow: 'ellipsis'\n};\nexport const resetComponent = function (token) {\n  let needInheritFontFamily = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  return {\n    boxSizing: 'border-box',\n    margin: 0,\n    padding: 0,\n    color: token.colorText,\n    fontSize: token.fontSize,\n    // font-variant: @font-variant-base;\n    lineHeight: token.lineHeight,\n    listStyle: 'none',\n    // font-feature-settings: @font-feature-settings-base;\n    fontFamily: needInheritFontFamily ? 'inherit' : token.fontFamily\n  };\n};\nexport const resetIcon = () => ({\n  display: 'inline-flex',\n  alignItems: 'center',\n  color: 'inherit',\n  fontStyle: 'normal',\n  lineHeight: 0,\n  textAlign: 'center',\n  textTransform: 'none',\n  // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n  verticalAlign: '-0.125em',\n  textRendering: 'optimizeLegibility',\n  '-webkit-font-smoothing': 'antialiased',\n  '-moz-osx-font-smoothing': 'grayscale',\n  '> *': {\n    lineHeight: 1\n  },\n  svg: {\n    display: 'inline-block'\n  }\n});\nexport const clearFix = () => ({\n  // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229\n  '&::before': {\n    display: 'table',\n    content: '\"\"'\n  },\n  '&::after': {\n    // https://github.com/ant-design/ant-design/issues/21864\n    display: 'table',\n    clear: 'both',\n    content: '\"\"'\n  }\n});\nexport const genLinkStyle = token => ({\n  a: {\n    color: token.colorLink,\n    textDecoration: token.linkDecoration,\n    backgroundColor: 'transparent',\n    // remove the gray background on active links in IE 10.\n    outline: 'none',\n    cursor: 'pointer',\n    transition: `color ${token.motionDurationSlow}`,\n    '-webkit-text-decoration-skip': 'objects',\n    // remove gaps in links underline in iOS 8+ and Safari 8+.\n    '&:hover': {\n      color: token.colorLinkHover\n    },\n    '&:active': {\n      color: token.colorLinkActive\n    },\n    '&:active, &:hover': {\n      textDecoration: token.linkHoverDecoration,\n      outline: 0\n    },\n    // https://github.com/ant-design/ant-design/issues/22503\n    '&:focus': {\n      textDecoration: token.linkFocusDecoration,\n      outline: 0\n    },\n    '&[disabled]': {\n      color: token.colorTextDisabled,\n      cursor: 'not-allowed'\n    }\n  }\n});\nexport const genCommonStyle = (token, componentPrefixCls, rootCls, resetFont) => {\n  const prefixSelector = `[class^=\"${componentPrefixCls}\"], [class*=\" ${componentPrefixCls}\"]`;\n  const rootPrefixSelector = rootCls ? `.${rootCls}` : prefixSelector;\n  const resetStyle = {\n    boxSizing: 'border-box',\n    '&::before, &::after': {\n      boxSizing: 'border-box'\n    }\n  };\n  let resetFontStyle = {};\n  if (resetFont !== false) {\n    resetFontStyle = {\n      fontFamily: token.fontFamily,\n      fontSize: token.fontSize\n    };\n  }\n  return {\n    [rootPrefixSelector]: Object.assign(Object.assign(Object.assign({}, resetFontStyle), resetStyle), {\n      [prefixSelector]: resetStyle\n    })\n  };\n};\nexport const genFocusOutline = (token, offset) => ({\n  outline: `${unit(token.lineWidthFocus)} solid ${token.colorPrimaryBorder}`,\n  outlineOffset: offset !== null && offset !== void 0 ? offset : 1,\n  transition: 'outline-offset 0s, outline 0s'\n});\nexport const genFocusStyle = (token, offset) => ({\n  '&:focus-visible': Object.assign({}, genFocusOutline(token, offset))\n});\nexport const genIconStyle = iconPrefixCls => ({\n  [`.${iconPrefixCls}`]: Object.assign(Object.assign({}, resetIcon()), {\n    [`.${iconPrefixCls} .${iconPrefixCls}-icon`]: {\n      display: 'block'\n    }\n  })\n});\nexport const operationUnit = token => Object.assign(Object.assign({\n  // FIXME: This use link but is a operation unit. Seems should be a colorPrimary.\n  // And Typography use this to generate link style which should not do this.\n  color: token.colorLink,\n  textDecoration: token.linkDecoration,\n  outline: 'none',\n  cursor: 'pointer',\n  transition: `all ${token.motionDurationSlow}`,\n  border: 0,\n  padding: 0,\n  background: 'none',\n  userSelect: 'none'\n}, genFocusStyle(token)), {\n  '&:focus, &:hover': {\n    color: token.colorLinkHover\n  },\n  '&:active': {\n    color: token.colorLinkActive\n  }\n});","export const defaultPresetColors = {\n  blue: '#1677FF',\n  purple: '#722ED1',\n  cyan: '#13C2C2',\n  green: '#52C41A',\n  magenta: '#EB2F96',\n  /**\n   * @deprecated Use magenta instead\n   */\n  pink: '#EB2F96',\n  red: '#F5222D',\n  orange: '#FA8C16',\n  yellow: '#FADB14',\n  volcano: '#FA541C',\n  geekblue: '#2F54EB',\n  gold: '#FAAD14',\n  lime: '#A0D911'\n};\nconst seedToken = Object.assign(Object.assign({}, defaultPresetColors), {\n  // Color\n  colorPrimary: '#1677ff',\n  colorSuccess: '#52c41a',\n  colorWarning: '#faad14',\n  colorError: '#ff4d4f',\n  colorInfo: '#1677ff',\n  colorLink: '',\n  colorTextBase: '',\n  colorBgBase: '',\n  // Font\n  fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'`,\n  fontFamilyCode: `'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace`,\n  fontSize: 14,\n  // Line\n  lineWidth: 1,\n  lineType: 'solid',\n  // Motion\n  motionUnit: 0.1,\n  motionBase: 0,\n  motionEaseOutCirc: 'cubic-bezier(0.08, 0.82, 0.17, 1)',\n  motionEaseInOutCirc: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n  motionEaseOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n  motionEaseInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n  motionEaseOutBack: 'cubic-bezier(0.12, 0.4, 0.29, 1.46)',\n  motionEaseInBack: 'cubic-bezier(0.71, -0.46, 0.88, 0.6)',\n  motionEaseInQuint: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)',\n  motionEaseOutQuint: 'cubic-bezier(0.23, 1, 0.32, 1)',\n  // Radius\n  borderRadius: 6,\n  // Size\n  sizeUnit: 4,\n  sizeStep: 4,\n  sizePopupArrow: 16,\n  // Control Base\n  controlHeight: 32,\n  // zIndex\n  zIndexBase: 0,\n  zIndexPopupBase: 1000,\n  // Image\n  opacityImage: 1,\n  // Wireframe\n  wireframe: false,\n  // Motion\n  motion: true\n});\nexport default seedToken;","import React from 'react';\nimport defaultSeedToken from './themes/seed';\nexport { default as defaultTheme } from './themes/default/theme';\n// ================================ Context =================================\n// To ensure snapshot stable. We disable hashed in test env.\nexport const defaultConfig = {\n  token: defaultSeedToken,\n  override: {\n    override: defaultSeedToken\n  },\n  hashed: true\n};\nexport const DesignTokenContext = /*#__PURE__*/React.createContext(defaultConfig);","const genRadius = radiusBase => {\n  let radiusLG = radiusBase;\n  let radiusSM = radiusBase;\n  let radiusXS = radiusBase;\n  let radiusOuter = radiusBase;\n  // radiusLG\n  if (radiusBase < 6 && radiusBase >= 5) {\n    radiusLG = radiusBase + 1;\n  } else if (radiusBase < 16 && radiusBase >= 6) {\n    radiusLG = radiusBase + 2;\n  } else if (radiusBase >= 16) {\n    radiusLG = 16;\n  }\n  // radiusSM\n  if (radiusBase < 7 && radiusBase >= 5) {\n    radiusSM = 4;\n  } else if (radiusBase < 8 && radiusBase >= 7) {\n    radiusSM = 5;\n  } else if (radiusBase < 14 && radiusBase >= 8) {\n    radiusSM = 6;\n  } else if (radiusBase < 16 && radiusBase >= 14) {\n    radiusSM = 7;\n  } else if (radiusBase >= 16) {\n    radiusSM = 8;\n  }\n  // radiusXS\n  if (radiusBase < 6 && radiusBase >= 2) {\n    radiusXS = 1;\n  } else if (radiusBase >= 6) {\n    radiusXS = 2;\n  }\n  // radiusOuter\n  if (radiusBase > 4 && radiusBase < 8) {\n    radiusOuter = 4;\n  } else if (radiusBase >= 8) {\n    radiusOuter = 6;\n  }\n  return {\n    borderRadius: radiusBase,\n    borderRadiusXS: radiusXS,\n    borderRadiusSM: radiusSM,\n    borderRadiusLG: radiusLG,\n    borderRadiusOuter: radiusOuter\n  };\n};\nexport default genRadius;","const genControlHeight = token => {\n  const {\n    controlHeight\n  } = token;\n  return {\n    controlHeightSM: controlHeight * 0.75,\n    controlHeightXS: controlHeight * 0.5,\n    controlHeightLG: controlHeight * 1.25\n  };\n};\nexport default genControlHeight;","export function getLineHeight(fontSize) {\n  return (fontSize + 8) / fontSize;\n}\n// https://zhuanlan.zhihu.com/p/32746810\nexport default function getFontSizes(base) {\n  const fontSizes = Array.from({\n    length: 10\n  }).map((_, index) => {\n    const i = index - 1;\n    const baseSize = base * Math.pow(Math.E, i / 5);\n    const intSize = index > 1 ? Math.floor(baseSize) : Math.ceil(baseSize);\n    // Convert to even\n    return Math.floor(intSize / 2) * 2;\n  });\n  fontSizes[1] = base;\n  return fontSizes.map(size => ({\n    size,\n    lineHeight: getLineHeight(size)\n  }));\n}","import genFontSizes from './genFontSizes';\nconst genFontMapToken = fontSize => {\n  const fontSizePairs = genFontSizes(fontSize);\n  const fontSizes = fontSizePairs.map(pair => pair.size);\n  const lineHeights = fontSizePairs.map(pair => pair.lineHeight);\n  const fontSizeMD = fontSizes[1];\n  const fontSizeSM = fontSizes[0];\n  const fontSizeLG = fontSizes[2];\n  const lineHeight = lineHeights[1];\n  const lineHeightSM = lineHeights[0];\n  const lineHeightLG = lineHeights[2];\n  return {\n    fontSizeSM,\n    fontSize: fontSizeMD,\n    fontSizeLG,\n    fontSizeXL: fontSizes[3],\n    fontSizeHeading1: fontSizes[6],\n    fontSizeHeading2: fontSizes[5],\n    fontSizeHeading3: fontSizes[4],\n    fontSizeHeading4: fontSizes[3],\n    fontSizeHeading5: fontSizes[2],\n    lineHeight,\n    lineHeightLG,\n    lineHeightSM,\n    fontHeight: Math.round(lineHeight * fontSizeMD),\n    fontHeightLG: Math.round(lineHeightLG * fontSizeLG),\n    fontHeightSM: Math.round(lineHeightSM * fontSizeSM),\n    lineHeightHeading1: lineHeights[6],\n    lineHeightHeading2: lineHeights[5],\n    lineHeightHeading3: lineHeights[4],\n    lineHeightHeading4: lineHeights[3],\n    lineHeightHeading5: lineHeights[2]\n  };\n};\nexport default genFontMapToken;","import { FastColor } from '@ant-design/fast-color';\nexport const getAlphaColor = (baseColor, alpha) => new FastColor(baseColor).setA(alpha).toRgbString();\nexport const getSolidColor = (baseColor, brightness) => {\n  const instance = new FastColor(baseColor);\n  return instance.darken(brightness).toHexString();\n};","import { generate } from '@ant-design/colors';\nimport { getAlphaColor, getSolidColor } from './colorAlgorithm';\nexport const generateColorPalettes = baseColor => {\n  const colors = generate(baseColor);\n  return {\n    1: colors[0],\n    2: colors[1],\n    3: colors[2],\n    4: colors[3],\n    5: colors[4],\n    6: colors[5],\n    7: colors[6],\n    8: colors[4],\n    9: colors[5],\n    10: colors[6]\n    // 8: colors[7],\n    // 9: colors[8],\n    // 10: colors[9],\n  };\n};\nexport const generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => {\n  const colorBgBase = bgBaseColor || '#fff';\n  const colorTextBase = textBaseColor || '#000';\n  return {\n    colorBgBase,\n    colorTextBase,\n    colorText: getAlphaColor(colorTextBase, 0.88),\n    colorTextSecondary: getAlphaColor(colorTextBase, 0.65),\n    colorTextTertiary: getAlphaColor(colorTextBase, 0.45),\n    colorTextQuaternary: getAlphaColor(colorTextBase, 0.25),\n    colorFill: getAlphaColor(colorTextBase, 0.15),\n    colorFillSecondary: getAlphaColor(colorTextBase, 0.06),\n    colorFillTertiary: getAlphaColor(colorTextBase, 0.04),\n    colorFillQuaternary: getAlphaColor(colorTextBase, 0.02),\n    colorBgSolid: getAlphaColor(colorTextBase, 1),\n    colorBgSolidHover: getAlphaColor(colorTextBase, 0.75),\n    colorBgSolidActive: getAlphaColor(colorTextBase, 0.95),\n    colorBgLayout: getSolidColor(colorBgBase, 4),\n    colorBgContainer: getSolidColor(colorBgBase, 0),\n    colorBgElevated: getSolidColor(colorBgBase, 0),\n    colorBgSpotlight: getAlphaColor(colorTextBase, 0.85),\n    colorBgBlur: 'transparent',\n    colorBorder: getSolidColor(colorBgBase, 15),\n    colorBorderSecondary: getSolidColor(colorBgBase, 6)\n  };\n};","import { createTheme } from '@ant-design/cssinjs';\nimport defaultDerivative from './index';\nconst defaultTheme = createTheme(defaultDerivative);\nexport default defaultTheme;","import { generate, presetPalettes, presetPrimaryColors } from '@ant-design/colors';\nimport { defaultPresetColors } from '../seed';\nimport genColorMapToken from '../shared/genColorMapToken';\nimport genCommonMapToken from '../shared/genCommonMapToken';\nimport genControlHeight from '../shared/genControlHeight';\nimport genFontMapToken from '../shared/genFontMapToken';\nimport genSizeMapToken from '../shared/genSizeMapToken';\nimport { generateColorPalettes, generateNeutralColorPalettes } from './colors';\nexport default function derivative(token) {\n  // pink is deprecated name of magenta, keep this for backwards compatibility\n  presetPrimaryColors.pink = presetPrimaryColors.magenta;\n  presetPalettes.pink = presetPalettes.magenta;\n  const colorPalettes = Object.keys(defaultPresetColors).map(colorKey => {\n    const colors = token[colorKey] === presetPrimaryColors[colorKey] ? presetPalettes[colorKey] : generate(token[colorKey]);\n    return Array.from({\n      length: 10\n    }, () => 1).reduce((prev, _, i) => {\n      prev[`${colorKey}-${i + 1}`] = colors[i];\n      prev[`${colorKey}${i + 1}`] = colors[i];\n      return prev;\n    }, {});\n  }).reduce((prev, cur) => {\n    // biome-ignore lint/style/noParameterAssign: it is a reduce\n    prev = Object.assign(Object.assign({}, prev), cur);\n    return prev;\n  }, {});\n  return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, token), colorPalettes), genColorMapToken(token, {\n    generateColorPalettes,\n    generateNeutralColorPalettes\n  })), genFontMapToken(token.fontSize)), genSizeMapToken(token)), genControlHeight(token)), genCommonMapToken(token));\n}","import { FastColor } from '@ant-design/fast-color';\nexport default function genColorMapToken(seed, _ref) {\n  let {\n    generateColorPalettes,\n    generateNeutralColorPalettes\n  } = _ref;\n  const {\n    colorSuccess: colorSuccessBase,\n    colorWarning: colorWarningBase,\n    colorError: colorErrorBase,\n    colorInfo: colorInfoBase,\n    colorPrimary: colorPrimaryBase,\n    colorBgBase,\n    colorTextBase\n  } = seed;\n  const primaryColors = generateColorPalettes(colorPrimaryBase);\n  const successColors = generateColorPalettes(colorSuccessBase);\n  const warningColors = generateColorPalettes(colorWarningBase);\n  const errorColors = generateColorPalettes(colorErrorBase);\n  const infoColors = generateColorPalettes(colorInfoBase);\n  const neutralColors = generateNeutralColorPalettes(colorBgBase, colorTextBase);\n  // Color Link\n  const colorLink = seed.colorLink || seed.colorInfo;\n  const linkColors = generateColorPalettes(colorLink);\n  const colorErrorBgFilledHover = new FastColor(errorColors[1]).mix(new FastColor(errorColors[3]), 50).toHexString();\n  return Object.assign(Object.assign({}, neutralColors), {\n    colorPrimaryBg: primaryColors[1],\n    colorPrimaryBgHover: primaryColors[2],\n    colorPrimaryBorder: primaryColors[3],\n    colorPrimaryBorderHover: primaryColors[4],\n    colorPrimaryHover: primaryColors[5],\n    colorPrimary: primaryColors[6],\n    colorPrimaryActive: primaryColors[7],\n    colorPrimaryTextHover: primaryColors[8],\n    colorPrimaryText: primaryColors[9],\n    colorPrimaryTextActive: primaryColors[10],\n    colorSuccessBg: successColors[1],\n    colorSuccessBgHover: successColors[2],\n    colorSuccessBorder: successColors[3],\n    colorSuccessBorderHover: successColors[4],\n    colorSuccessHover: successColors[4],\n    colorSuccess: successColors[6],\n    colorSuccessActive: successColors[7],\n    colorSuccessTextHover: successColors[8],\n    colorSuccessText: successColors[9],\n    colorSuccessTextActive: successColors[10],\n    colorErrorBg: errorColors[1],\n    colorErrorBgHover: errorColors[2],\n    colorErrorBgFilledHover,\n    colorErrorBgActive: errorColors[3],\n    colorErrorBorder: errorColors[3],\n    colorErrorBorderHover: errorColors[4],\n    colorErrorHover: errorColors[5],\n    colorError: errorColors[6],\n    colorErrorActive: errorColors[7],\n    colorErrorTextHover: errorColors[8],\n    colorErrorText: errorColors[9],\n    colorErrorTextActive: errorColors[10],\n    colorWarningBg: warningColors[1],\n    colorWarningBgHover: warningColors[2],\n    colorWarningBorder: warningColors[3],\n    colorWarningBorderHover: warningColors[4],\n    colorWarningHover: warningColors[4],\n    colorWarning: warningColors[6],\n    colorWarningActive: warningColors[7],\n    colorWarningTextHover: warningColors[8],\n    colorWarningText: warningColors[9],\n    colorWarningTextActive: warningColors[10],\n    colorInfoBg: infoColors[1],\n    colorInfoBgHover: infoColors[2],\n    colorInfoBorder: infoColors[3],\n    colorInfoBorderHover: infoColors[4],\n    colorInfoHover: infoColors[4],\n    colorInfo: infoColors[6],\n    colorInfoActive: infoColors[7],\n    colorInfoTextHover: infoColors[8],\n    colorInfoText: infoColors[9],\n    colorInfoTextActive: infoColors[10],\n    colorLinkHover: linkColors[4],\n    colorLink: linkColors[6],\n    colorLinkActive: linkColors[7],\n    colorBgMask: new FastColor('#000').setA(0.45).toRgbString(),\n    colorWhite: '#fff'\n  });\n}","export default function genSizeMapToken(token) {\n  const {\n    sizeUnit,\n    sizeStep\n  } = token;\n  return {\n    sizeXXL: sizeUnit * (sizeStep + 8),\n    // 48\n    sizeXL: sizeUnit * (sizeStep + 4),\n    // 32\n    sizeLG: sizeUnit * (sizeStep + 2),\n    // 24\n    sizeMD: sizeUnit * (sizeStep + 1),\n    // 20\n    sizeMS: sizeUnit * sizeStep,\n    // 16\n    size: sizeUnit * sizeStep,\n    // 16\n    sizeSM: sizeUnit * (sizeStep - 1),\n    // 12\n    sizeXS: sizeUnit * (sizeStep - 2),\n    // 8\n    sizeXXS: sizeUnit * (sizeStep - 3) // 4\n  };\n}","import genRadius from './genRadius';\nexport default function genCommonMapToken(token) {\n  const {\n    motionUnit,\n    motionBase,\n    borderRadius,\n    lineWidth\n  } = token;\n  return Object.assign({\n    // motion\n    motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`,\n    motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`,\n    motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`,\n    // line\n    lineWidthBold: lineWidth + 1\n  }, genRadius(borderRadius));\n}","import { FastColor } from '@ant-design/fast-color';\nfunction isStableColor(color) {\n  return color >= 0 && color <= 255;\n}\nfunction getAlphaColor(frontColor, backgroundColor) {\n  const {\n    r: fR,\n    g: fG,\n    b: fB,\n    a: originAlpha\n  } = new FastColor(frontColor).toRgb();\n  if (originAlpha < 1) {\n    return frontColor;\n  }\n  const {\n    r: bR,\n    g: bG,\n    b: bB\n  } = new FastColor(backgroundColor).toRgb();\n  for (let fA = 0.01; fA <= 1; fA += 0.01) {\n    const r = Math.round((fR - bR * (1 - fA)) / fA);\n    const g = Math.round((fG - bG * (1 - fA)) / fA);\n    const b = Math.round((fB - bB * (1 - fA)) / fA);\n    if (isStableColor(r) && isStableColor(g) && isStableColor(b)) {\n      return new FastColor({\n        r,\n        g,\n        b,\n        a: Math.round(fA * 100) / 100\n      }).toRgbString();\n    }\n  }\n  // fallback\n  /* istanbul ignore next */\n  return new FastColor({\n    r: fR,\n    g: fG,\n    b: fB,\n    a: 1\n  }).toRgbString();\n}\nexport default getAlphaColor;","var __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport { FastColor } from '@ant-design/fast-color';\nimport seedToken from '../themes/seed';\nimport getAlphaColor from './getAlphaColor';\n/**\n * Seed (designer) > Derivative (designer) > Alias (developer).\n *\n * Merge seed & derivative & override token and generate alias token for developer.\n */\nexport default function formatToken(derivativeToken) {\n  const {\n      override\n    } = derivativeToken,\n    restToken = __rest(derivativeToken, [\"override\"]);\n  const overrideTokens = Object.assign({}, override);\n  Object.keys(seedToken).forEach(token => {\n    delete overrideTokens[token];\n  });\n  const mergedToken = Object.assign(Object.assign({}, restToken), overrideTokens);\n  const screenXS = 480;\n  const screenSM = 576;\n  const screenMD = 768;\n  const screenLG = 992;\n  const screenXL = 1200;\n  const screenXXL = 1600;\n  // Motion\n  if (mergedToken.motion === false) {\n    const fastDuration = '0s';\n    mergedToken.motionDurationFast = fastDuration;\n    mergedToken.motionDurationMid = fastDuration;\n    mergedToken.motionDurationSlow = fastDuration;\n  }\n  // Generate alias token\n  const aliasToken = Object.assign(Object.assign(Object.assign({}, mergedToken), {\n    // ============== Background ============== //\n    colorFillContent: mergedToken.colorFillSecondary,\n    colorFillContentHover: mergedToken.colorFill,\n    colorFillAlter: mergedToken.colorFillQuaternary,\n    colorBgContainerDisabled: mergedToken.colorFillTertiary,\n    // ============== Split ============== //\n    colorBorderBg: mergedToken.colorBgContainer,\n    colorSplit: getAlphaColor(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer),\n    // ============== Text ============== //\n    colorTextPlaceholder: mergedToken.colorTextQuaternary,\n    colorTextDisabled: mergedToken.colorTextQuaternary,\n    colorTextHeading: mergedToken.colorText,\n    colorTextLabel: mergedToken.colorTextSecondary,\n    colorTextDescription: mergedToken.colorTextTertiary,\n    colorTextLightSolid: mergedToken.colorWhite,\n    colorHighlight: mergedToken.colorError,\n    colorBgTextHover: mergedToken.colorFillSecondary,\n    colorBgTextActive: mergedToken.colorFill,\n    colorIcon: mergedToken.colorTextTertiary,\n    colorIconHover: mergedToken.colorText,\n    colorErrorOutline: getAlphaColor(mergedToken.colorErrorBg, mergedToken.colorBgContainer),\n    colorWarningOutline: getAlphaColor(mergedToken.colorWarningBg, mergedToken.colorBgContainer),\n    // Font\n    fontSizeIcon: mergedToken.fontSizeSM,\n    // Line\n    lineWidthFocus: mergedToken.lineWidth * 3,\n    // Control\n    lineWidth: mergedToken.lineWidth,\n    controlOutlineWidth: mergedToken.lineWidth * 2,\n    // Checkbox size and expand icon size\n    controlInteractiveSize: mergedToken.controlHeight / 2,\n    controlItemBgHover: mergedToken.colorFillTertiary,\n    controlItemBgActive: mergedToken.colorPrimaryBg,\n    controlItemBgActiveHover: mergedToken.colorPrimaryBgHover,\n    controlItemBgActiveDisabled: mergedToken.colorFill,\n    controlTmpOutline: mergedToken.colorFillQuaternary,\n    controlOutline: getAlphaColor(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer),\n    lineType: mergedToken.lineType,\n    borderRadius: mergedToken.borderRadius,\n    borderRadiusXS: mergedToken.borderRadiusXS,\n    borderRadiusSM: mergedToken.borderRadiusSM,\n    borderRadiusLG: mergedToken.borderRadiusLG,\n    fontWeightStrong: 600,\n    opacityLoading: 0.65,\n    linkDecoration: 'none',\n    linkHoverDecoration: 'none',\n    linkFocusDecoration: 'none',\n    controlPaddingHorizontal: 12,\n    controlPaddingHorizontalSM: 8,\n    paddingXXS: mergedToken.sizeXXS,\n    paddingXS: mergedToken.sizeXS,\n    paddingSM: mergedToken.sizeSM,\n    padding: mergedToken.size,\n    paddingMD: mergedToken.sizeMD,\n    paddingLG: mergedToken.sizeLG,\n    paddingXL: mergedToken.sizeXL,\n    paddingContentHorizontalLG: mergedToken.sizeLG,\n    paddingContentVerticalLG: mergedToken.sizeMS,\n    paddingContentHorizontal: mergedToken.sizeMS,\n    paddingContentVertical: mergedToken.sizeSM,\n    paddingContentHorizontalSM: mergedToken.size,\n    paddingContentVerticalSM: mergedToken.sizeXS,\n    marginXXS: mergedToken.sizeXXS,\n    marginXS: mergedToken.sizeXS,\n    marginSM: mergedToken.sizeSM,\n    margin: mergedToken.size,\n    marginMD: mergedToken.sizeMD,\n    marginLG: mergedToken.sizeLG,\n    marginXL: mergedToken.sizeXL,\n    marginXXL: mergedToken.sizeXXL,\n    boxShadow: `\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowSecondary: `\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowTertiary: `\n      0 1px 2px 0 rgba(0, 0, 0, 0.03),\n      0 1px 6px -1px rgba(0, 0, 0, 0.02),\n      0 2px 4px 0 rgba(0, 0, 0, 0.02)\n    `,\n    screenXS,\n    screenXSMin: screenXS,\n    screenXSMax: screenSM - 1,\n    screenSM,\n    screenSMMin: screenSM,\n    screenSMMax: screenMD - 1,\n    screenMD,\n    screenMDMin: screenMD,\n    screenMDMax: screenLG - 1,\n    screenLG,\n    screenLGMin: screenLG,\n    screenLGMax: screenXL - 1,\n    screenXL,\n    screenXLMin: screenXL,\n    screenXLMax: screenXXL - 1,\n    screenXXL,\n    screenXXLMin: screenXXL,\n    boxShadowPopoverArrow: '2px 2px 5px rgba(0, 0, 0, 0.05)',\n    boxShadowCard: `\n      0 1px 2px -2px ${new FastColor('rgba(0, 0, 0, 0.16)').toRgbString()},\n      0 3px 6px 0 ${new FastColor('rgba(0, 0, 0, 0.12)').toRgbString()},\n      0 5px 12px 4px ${new FastColor('rgba(0, 0, 0, 0.09)').toRgbString()}\n    `,\n    boxShadowDrawerRight: `\n      -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerLeft: `\n      6px 0 16px 0 rgba(0, 0, 0, 0.08),\n      3px 0 6px -4px rgba(0, 0, 0, 0.12),\n      9px 0 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerUp: `\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowDrawerDown: `\n      0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n      0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n    `,\n    boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)',\n    boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)'\n  }), overrideTokens);\n  return aliasToken;\n}","var __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React from 'react';\nimport { useCacheToken } from '@ant-design/cssinjs';\nimport version from '../version';\nimport { defaultTheme, DesignTokenContext } from './context';\nimport defaultSeedToken from './themes/seed';\nimport formatToken from './util/alias';\nexport const unitless = {\n  lineHeight: true,\n  lineHeightSM: true,\n  lineHeightLG: true,\n  lineHeightHeading1: true,\n  lineHeightHeading2: true,\n  lineHeightHeading3: true,\n  lineHeightHeading4: true,\n  lineHeightHeading5: true,\n  opacityLoading: true,\n  fontWeightStrong: true,\n  zIndexPopupBase: true,\n  zIndexBase: true,\n  opacityImage: true\n};\nexport const ignore = {\n  size: true,\n  sizeSM: true,\n  sizeLG: true,\n  sizeMD: true,\n  sizeXS: true,\n  sizeXXS: true,\n  sizeMS: true,\n  sizeXL: true,\n  sizeXXL: true,\n  sizeUnit: true,\n  sizeStep: true,\n  motionBase: true,\n  motionUnit: true\n};\nconst preserve = {\n  screenXS: true,\n  screenXSMin: true,\n  screenXSMax: true,\n  screenSM: true,\n  screenSMMin: true,\n  screenSMMax: true,\n  screenMD: true,\n  screenMDMin: true,\n  screenMDMax: true,\n  screenLG: true,\n  screenLGMin: true,\n  screenLGMax: true,\n  screenXL: true,\n  screenXLMin: true,\n  screenXLMax: true,\n  screenXXL: true,\n  screenXXLMin: true\n};\nexport const getComputedToken = (originToken, overrideToken, theme) => {\n  const derivativeToken = theme.getDerivativeToken(originToken);\n  const {\n      override\n    } = overrideToken,\n    components = __rest(overrideToken, [\"override\"]);\n  // Merge with override\n  let mergedDerivativeToken = Object.assign(Object.assign({}, derivativeToken), {\n    override\n  });\n  // Format if needed\n  mergedDerivativeToken = formatToken(mergedDerivativeToken);\n  if (components) {\n    Object.entries(components).forEach(_ref => {\n      let [key, value] = _ref;\n      const {\n          theme: componentTheme\n        } = value,\n        componentTokens = __rest(value, [\"theme\"]);\n      let mergedComponentToken = componentTokens;\n      if (componentTheme) {\n        mergedComponentToken = getComputedToken(Object.assign(Object.assign({}, mergedDerivativeToken), componentTokens), {\n          override: componentTokens\n        }, componentTheme);\n      }\n      mergedDerivativeToken[key] = mergedComponentToken;\n    });\n  }\n  return mergedDerivativeToken;\n};\n// ================================== Hook ==================================\nexport default function useToken() {\n  const {\n    token: rootDesignToken,\n    hashed,\n    theme,\n    override,\n    cssVar\n  } = React.useContext(DesignTokenContext);\n  const salt = `${version}-${hashed || ''}`;\n  const mergedTheme = theme || defaultTheme;\n  const [token, hashId, realToken] = useCacheToken(mergedTheme, [defaultSeedToken, rootDesignToken], {\n    salt,\n    override,\n    getComputedToken,\n    // formatToken will not be consumed after 1.15.0 with getComputedToken.\n    // But token will break if @ant-design/cssinjs is under 1.15.0 without it\n    formatToken,\n    cssVar: cssVar && {\n      prefix: cssVar.prefix,\n      key: cssVar.key,\n      unitless,\n      ignore,\n      preserve\n    }\n  });\n  return [mergedTheme, realToken, hashed ? hashId : '', token, cssVar];\n}","import { useContext } from 'react';\nimport { genStyleUtils } from '@ant-design/cssinjs-utils';\nimport { ConfigContext, defaultIconPrefixCls } from '../../config-provider/context';\nimport { genCommonStyle, genLinkStyle, genIconStyle } from '../../style';\nimport useLocalToken, { unitless } from '../useToken';\nexport const {\n  genStyleHooks,\n  genComponentStyleHook,\n  genSubStyleComponent\n} = genStyleUtils({\n  usePrefix: () => {\n    const {\n      getPrefixCls,\n      iconPrefixCls\n    } = useContext(ConfigContext);\n    const rootPrefixCls = getPrefixCls();\n    return {\n      rootPrefixCls,\n      iconPrefixCls\n    };\n  },\n  useToken: () => {\n    const [theme, realToken, hashId, token, cssVar] = useLocalToken();\n    return {\n      theme,\n      realToken,\n      hashId,\n      token,\n      cssVar\n    };\n  },\n  useCSP: () => {\n    const {\n      csp\n    } = useContext(ConfigContext);\n    return csp !== null && csp !== void 0 ? csp : {};\n  },\n  getResetStyles: (token, config) => {\n    var _a;\n    return [{\n      '&': genLinkStyle(token)\n    }, genIconStyle((_a = config === null || config === void 0 ? void 0 : config.prefix.iconPrefixCls) !== null && _a !== void 0 ? _a : defaultIconPrefixCls)];\n  },\n  getCommonStyle: genCommonStyle,\n  getCompUnitless: () => unitless\n});","import { unit } from '@ant-design/cssinjs';\nimport { genStyleHooks } from '../../theme/internal';\nconst genLayoutStyle = token => {\n  const {\n    antCls,\n    // .ant\n    componentCls,\n    // .ant-layout\n    colorText,\n    footerBg,\n    headerHeight,\n    headerPadding,\n    headerColor,\n    footerPadding,\n    fontSize,\n    bodyBg,\n    headerBg\n  } = token;\n  return {\n    [componentCls]: {\n      display: 'flex',\n      flex: 'auto',\n      flexDirection: 'column',\n      /* fix firefox can't set height smaller than content on flex item */\n      minHeight: 0,\n      background: bodyBg,\n      '&, *': {\n        boxSizing: 'border-box'\n      },\n      [`&${componentCls}-has-sider`]: {\n        flexDirection: 'row',\n        [`> ${componentCls}, > ${componentCls}-content`]: {\n          // https://segmentfault.com/a/1190000019498300\n          width: 0\n        }\n      },\n      [`${componentCls}-header, &${componentCls}-footer`]: {\n        flex: '0 0 auto'\n      },\n      // RTL\n      '&-rtl': {\n        direction: 'rtl'\n      }\n    },\n    // ==================== Header ====================\n    [`${componentCls}-header`]: {\n      height: headerHeight,\n      padding: headerPadding,\n      color: headerColor,\n      lineHeight: unit(headerHeight),\n      background: headerBg,\n      // Other components/menu/style/index.less line:686\n      // Integration with header element so menu items have the same height\n      [`${antCls}-menu`]: {\n        lineHeight: 'inherit'\n      }\n    },\n    // ==================== Footer ====================\n    [`${componentCls}-footer`]: {\n      padding: footerPadding,\n      color: colorText,\n      fontSize,\n      background: footerBg\n    },\n    // =================== Content ====================\n    [`${componentCls}-content`]: {\n      flex: 'auto',\n      color: colorText,\n      // fix firefox can't set height smaller than content on flex item\n      minHeight: 0\n    }\n  };\n};\nexport const prepareComponentToken = token => {\n  const {\n    colorBgLayout,\n    controlHeight,\n    controlHeightLG,\n    colorText,\n    controlHeightSM,\n    marginXXS,\n    colorTextLightSolid,\n    colorBgContainer\n  } = token;\n  const paddingInline = controlHeightLG * 1.25;\n  return {\n    // Deprecated\n    colorBgHeader: '#001529',\n    colorBgBody: colorBgLayout,\n    colorBgTrigger: '#002140',\n    bodyBg: colorBgLayout,\n    headerBg: '#001529',\n    headerHeight: controlHeight * 2,\n    headerPadding: `0 ${paddingInline}px`,\n    headerColor: colorText,\n    footerPadding: `${controlHeightSM}px ${paddingInline}px`,\n    footerBg: colorBgLayout,\n    siderBg: '#001529',\n    triggerHeight: controlHeightLG + marginXXS * 2,\n    triggerBg: '#002140',\n    triggerColor: colorTextLightSolid,\n    zeroTriggerWidth: controlHeightLG,\n    zeroTriggerHeight: controlHeightLG,\n    lightSiderBg: colorBgContainer,\n    lightTriggerBg: colorBgContainer,\n    lightTriggerColor: colorText\n  };\n};\n// ============================== Export ==============================\nexport const DEPRECATED_TOKENS = [['colorBgBody', 'bodyBg'], ['colorBgHeader', 'headerBg'], ['colorBgTrigger', 'triggerBg']];\nexport default genStyleHooks('Layout', token => [genLayoutStyle(token)], prepareComponentToken, {\n  deprecatedTokens: DEPRECATED_TOKENS\n});","import { unit } from '@ant-design/cssinjs';\nimport { DEPRECATED_TOKENS, prepareComponentToken } from '.';\nimport { genStyleHooks } from '../../theme/internal';\nconst genSiderStyle = token => {\n  const {\n    componentCls,\n    siderBg,\n    motionDurationMid,\n    motionDurationSlow,\n    antCls,\n    triggerHeight,\n    triggerColor,\n    triggerBg,\n    headerHeight,\n    zeroTriggerWidth,\n    zeroTriggerHeight,\n    borderRadiusLG,\n    lightSiderBg,\n    lightTriggerColor,\n    lightTriggerBg,\n    bodyBg\n  } = token;\n  return {\n    [componentCls]: {\n      position: 'relative',\n      // fix firefox can't set width smaller than content on flex item\n      minWidth: 0,\n      background: siderBg,\n      transition: `all ${motionDurationMid}, background 0s`,\n      '&-has-trigger': {\n        paddingBottom: triggerHeight\n      },\n      '&-right': {\n        order: 1\n      },\n      [`${componentCls}-children`]: {\n        height: '100%',\n        // Hack for fixing margin collapse bug\n        // https://github.com/ant-design/ant-design/issues/7967\n        // solution from https://stackoverflow.com/a/33132624/3040605\n        marginTop: -0.1,\n        paddingTop: 0.1,\n        [`${antCls}-menu${antCls}-menu-inline-collapsed`]: {\n          width: 'auto'\n        }\n      },\n      [`${componentCls}-trigger`]: {\n        position: 'fixed',\n        bottom: 0,\n        zIndex: 1,\n        height: triggerHeight,\n        color: triggerColor,\n        lineHeight: unit(triggerHeight),\n        textAlign: 'center',\n        background: triggerBg,\n        cursor: 'pointer',\n        transition: `all ${motionDurationMid}`\n      },\n      [`${componentCls}-zero-width`]: {\n        '> *': {\n          overflow: 'hidden'\n        },\n        '&-trigger': {\n          position: 'absolute',\n          top: headerHeight,\n          insetInlineEnd: token.calc(zeroTriggerWidth).mul(-1).equal(),\n          zIndex: 1,\n          width: zeroTriggerWidth,\n          height: zeroTriggerHeight,\n          color: triggerColor,\n          fontSize: token.fontSizeXL,\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center',\n          background: siderBg,\n          borderRadius: `0 ${unit(borderRadiusLG)} ${unit(borderRadiusLG)} 0`,\n          cursor: 'pointer',\n          transition: `background ${motionDurationSlow} ease`,\n          '&::after': {\n            position: 'absolute',\n            inset: 0,\n            background: 'transparent',\n            transition: `all ${motionDurationSlow}`,\n            content: '\"\"'\n          },\n          '&:hover::after': {\n            background: `rgba(255, 255, 255, 0.2)`\n          },\n          '&-right': {\n            insetInlineStart: token.calc(zeroTriggerWidth).mul(-1).equal(),\n            borderRadius: `${unit(borderRadiusLG)} 0 0 ${unit(borderRadiusLG)}`\n          }\n        }\n      },\n      // Light\n      '&-light': {\n        background: lightSiderBg,\n        [`${componentCls}-trigger`]: {\n          color: lightTriggerColor,\n          background: lightTriggerBg\n        },\n        [`${componentCls}-zero-width-trigger`]: {\n          color: lightTriggerColor,\n          background: lightTriggerBg,\n          border: `1px solid ${bodyBg}`,\n          // Safe to modify to any other color\n          borderInlineStart: 0\n        }\n      }\n    }\n  };\n};\nexport default genStyleHooks(['Layout', 'Sider'], token => [genSiderStyle(token)], prepareComponentToken, {\n  deprecatedTokens: DEPRECATED_TOKENS\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { useContext, useEffect, useRef, useState } from 'react';\nimport BarsOutlined from \"@ant-design/icons/es/icons/BarsOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport { LayoutContext } from './context';\nimport useStyle from './style/sider';\nconst dimensionMaxMap = {\n  xs: '479.98px',\n  sm: '575.98px',\n  md: '767.98px',\n  lg: '991.98px',\n  xl: '1199.98px',\n  xxl: '1599.98px'\n};\nconst isNumeric = value => !Number.isNaN(Number.parseFloat(value)) && isFinite(value);\nexport const SiderContext = /*#__PURE__*/React.createContext({});\nconst generateId = (() => {\n  let i = 0;\n  return function () {\n    let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    i += 1;\n    return `${prefix}${i}`;\n  };\n})();\nconst Sider = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      trigger,\n      children,\n      defaultCollapsed = false,\n      theme = 'dark',\n      style = {},\n      collapsible = false,\n      reverseArrow = false,\n      width = 200,\n      collapsedWidth = 80,\n      zeroWidthTriggerStyle,\n      breakpoint,\n      onCollapse,\n      onBreakpoint\n    } = props,\n    otherProps = __rest(props, [\"prefixCls\", \"className\", \"trigger\", \"children\", \"defaultCollapsed\", \"theme\", \"style\", \"collapsible\", \"reverseArrow\", \"width\", \"collapsedWidth\", \"zeroWidthTriggerStyle\", \"breakpoint\", \"onCollapse\", \"onBreakpoint\"]);\n  const {\n    siderHook\n  } = useContext(LayoutContext);\n  const [collapsed, setCollapsed] = useState('collapsed' in props ? props.collapsed : defaultCollapsed);\n  const [below, setBelow] = useState(false);\n  useEffect(() => {\n    if ('collapsed' in props) {\n      setCollapsed(props.collapsed);\n    }\n  }, [props.collapsed]);\n  const handleSetCollapsed = (value, type) => {\n    if (!('collapsed' in props)) {\n      setCollapsed(value);\n    }\n    onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(value, type);\n  };\n  // =========================== Prefix ===========================\n  const {\n    getPrefixCls,\n    direction\n  } = useContext(ConfigContext);\n  const prefixCls = getPrefixCls('layout-sider', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  // ========================= Responsive =========================\n  const responsiveHandlerRef = useRef(null);\n  responsiveHandlerRef.current = mql => {\n    setBelow(mql.matches);\n    onBreakpoint === null || onBreakpoint === void 0 ? void 0 : onBreakpoint(mql.matches);\n    if (collapsed !== mql.matches) {\n      handleSetCollapsed(mql.matches, 'responsive');\n    }\n  };\n  useEffect(() => {\n    function responsiveHandler(mql) {\n      return responsiveHandlerRef.current(mql);\n    }\n    let mql;\n    if (typeof window !== 'undefined') {\n      const {\n        matchMedia\n      } = window;\n      if (matchMedia && breakpoint && breakpoint in dimensionMaxMap) {\n        mql = matchMedia(`screen and (max-width: ${dimensionMaxMap[breakpoint]})`);\n        try {\n          mql.addEventListener('change', responsiveHandler);\n        } catch (_a) {\n          mql.addListener(responsiveHandler);\n        }\n        responsiveHandler(mql);\n      }\n    }\n    return () => {\n      try {\n        mql === null || mql === void 0 ? void 0 : mql.removeEventListener('change', responsiveHandler);\n      } catch (_a) {\n        mql === null || mql === void 0 ? void 0 : mql.removeListener(responsiveHandler);\n      }\n    };\n  }, [breakpoint]); // in order to accept dynamic 'breakpoint' property, we need to add 'breakpoint' into dependency array.\n  useEffect(() => {\n    const uniqueId = generateId('ant-sider-');\n    siderHook.addSider(uniqueId);\n    return () => siderHook.removeSider(uniqueId);\n  }, []);\n  const toggle = () => {\n    handleSetCollapsed(!collapsed, 'clickTrigger');\n  };\n  const divProps = omit(otherProps, ['collapsed']);\n  const rawWidth = collapsed ? collapsedWidth : width;\n  // use \"px\" as fallback unit for width\n  const siderWidth = isNumeric(rawWidth) ? `${rawWidth}px` : String(rawWidth);\n  // special trigger when collapsedWidth == 0\n  const zeroWidthTrigger = parseFloat(String(collapsedWidth || 0)) === 0 ? (/*#__PURE__*/React.createElement(\"span\", {\n    onClick: toggle,\n    className: classNames(`${prefixCls}-zero-width-trigger`, `${prefixCls}-zero-width-trigger-${reverseArrow ? 'right' : 'left'}`),\n    style: zeroWidthTriggerStyle\n  }, trigger || /*#__PURE__*/React.createElement(BarsOutlined, null))) : null;\n  const reverseIcon = direction === 'rtl' === !reverseArrow;\n  const iconObj = {\n    expanded: reverseIcon ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null),\n    collapsed: reverseIcon ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null)\n  };\n  const status = collapsed ? 'collapsed' : 'expanded';\n  const defaultTrigger = iconObj[status];\n  const triggerDom = trigger !== null ? zeroWidthTrigger || (/*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-trigger`,\n    onClick: toggle,\n    style: {\n      width: siderWidth\n    }\n  }, trigger || defaultTrigger)) : null;\n  const divStyle = Object.assign(Object.assign({}, style), {\n    flex: `0 0 ${siderWidth}`,\n    maxWidth: siderWidth,\n    minWidth: siderWidth,\n    width: siderWidth\n  });\n  const siderCls = classNames(prefixCls, `${prefixCls}-${theme}`, {\n    [`${prefixCls}-collapsed`]: !!collapsed,\n    [`${prefixCls}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger,\n    [`${prefixCls}-below`]: !!below,\n    [`${prefixCls}-zero-width`]: parseFloat(siderWidth) === 0\n  }, className, hashId, cssVarCls);\n  const contextValue = React.useMemo(() => ({\n    siderCollapsed: collapsed\n  }), [collapsed]);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(SiderContext.Provider, {\n    value: contextValue\n  }, /*#__PURE__*/React.createElement(\"aside\", Object.assign({\n    className: siderCls\n  }, divProps, {\n    style: divStyle,\n    ref: ref\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-children`\n  }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null)));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Sider.displayName = 'Sider';\n}\nexport default Sider;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport { LayoutContext } from './context';\nimport useHasSider from './hooks/useHasSider';\nimport useStyle from './style';\nfunction generator(_ref) {\n  let {\n    suffixCls,\n    tagName,\n    displayName\n  } = _ref;\n  return BasicComponent => {\n    const Adapter = /*#__PURE__*/React.forwardRef((props, ref) => (/*#__PURE__*/React.createElement(BasicComponent, Object.assign({\n      ref: ref,\n      suffixCls: suffixCls,\n      tagName: tagName\n    }, props))));\n    if (process.env.NODE_ENV !== 'production') {\n      Adapter.displayName = displayName;\n    }\n    return Adapter;\n  };\n}\nconst Basic = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      suffixCls,\n      className,\n      tagName: TagName\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"suffixCls\", \"className\", \"tagName\"]);\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('layout', customizePrefixCls);\n  const [wrapSSR, hashId, cssVarCls] = useStyle(prefixCls);\n  const prefixWithSuffixCls = suffixCls ? `${prefixCls}-${suffixCls}` : prefixCls;\n  return wrapSSR(/*#__PURE__*/React.createElement(TagName, Object.assign({\n    className: classNames(customizePrefixCls || prefixWithSuffixCls, className, hashId, cssVarCls),\n    ref: ref\n  }, others)));\n});\nconst BasicLayout = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n    direction\n  } = React.useContext(ConfigContext);\n  const [siders, setSiders] = React.useState([]);\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      rootClassName,\n      children,\n      hasSider,\n      tagName: Tag,\n      style\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"children\", \"hasSider\", \"tagName\", \"style\"]);\n  const passedProps = omit(others, ['suffixCls']);\n  const {\n    getPrefixCls,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('layout');\n  const prefixCls = getPrefixCls('layout', customizePrefixCls);\n  const mergedHasSider = useHasSider(siders, children, hasSider);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const classString = classNames(prefixCls, {\n    [`${prefixCls}-has-sider`]: mergedHasSider,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, contextClassName, className, rootClassName, hashId, cssVarCls);\n  const contextValue = React.useMemo(() => ({\n    siderHook: {\n      addSider: id => {\n        setSiders(prev => [].concat(_toConsumableArray(prev), [id]));\n      },\n      removeSider: id => {\n        setSiders(prev => prev.filter(currentId => currentId !== id));\n      }\n    }\n  }), []);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(LayoutContext.Provider, {\n    value: contextValue\n  }, /*#__PURE__*/React.createElement(Tag, Object.assign({\n    ref: ref,\n    className: classString,\n    style: Object.assign(Object.assign({}, contextStyle), style)\n  }, passedProps), children)));\n});\nconst Layout = generator({\n  tagName: 'div',\n  displayName: 'Layout'\n})(BasicLayout);\nconst Header = generator({\n  suffixCls: 'header',\n  tagName: 'header',\n  displayName: 'Header'\n})(Basic);\nconst Footer = generator({\n  suffixCls: 'footer',\n  tagName: 'footer',\n  displayName: 'Footer'\n})(Basic);\nconst Content = generator({\n  suffixCls: 'content',\n  tagName: 'main',\n  displayName: 'Content'\n})(Basic);\nexport { Content, Footer, Header };\nexport default Layout;","import toArray from \"rc-util/es/Children/toArray\";\nimport Sider from '../Sider';\nexport default function useHasSider(siders, children, hasSider) {\n  if (typeof hasSider === 'boolean') {\n    return hasSider;\n  }\n  if (siders.length) {\n    return true;\n  }\n  const childNodes = toArray(children);\n  return childNodes.some(node => node.type === Sider);\n}","\"use client\";\n\nimport InternalLayout, { Content, Footer, Header } from './layout';\nimport Sider, { SiderContext } from './Sider';\nconst Layout = InternalLayout;\nLayout.Header = Header;\nLayout.Footer = Footer;\nLayout.Content = Content;\nLayout.Sider = Sider;\nLayout._InternalSiderContext = SiderContext;\nexport default Layout;","// This icon file is generated automatically.\nvar EditOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\" } }] }, \"name\": \"edit\", \"theme\": \"outlined\" };\nexport default EditOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EditOutlinedSvg from \"@ant-design/icons-svg/es/asn/EditOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EditOutlined = function EditOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: EditOutlinedSvg\n  }));\n};\n\n/**![edit](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1Ny43IDc1MmMyIDAgNC0uMiA2LS41TDQzMS45IDcyMmMyLS40IDMuOS0xLjMgNS4zLTIuOGw0MjMuOS00MjMuOWE5Ljk2IDkuOTYgMCAwMDAtMTQuMUw2OTQuOSAxMTQuOWMtMS45LTEuOS00LjQtMi45LTcuMS0yLjlzLTUuMiAxLTcuMSAyLjlMMjU2LjggNTM4LjhjLTEuNSAxLjUtMi40IDMuMy0yLjggNS4zbC0yOS41IDE2OC4yYTMzLjUgMzMuNSAwIDAwOS40IDI5LjhjNi42IDYuNCAxNC45IDkuOSAyMy44IDkuOXptNjcuNC0xNzQuNEw2ODcuOCAyMTVsNzMuMyA3My4zLTM2Mi43IDM2Mi42LTg4LjkgMTUuNyAxNS42LTg5ek04ODAgODM2SDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTM2YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EditOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'EditOutlined';\n}\nexport default RefIcon;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nexport function isDOM(node) {\n  // https://developer.mozilla.org/en-US/docs/Web/API/Element\n  // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement\n  return node instanceof HTMLElement || node instanceof SVGElement;\n}\n\n/**\n * Retrieves a DOM node via a ref, and does not invoke `findDOMNode`.\n */\nexport function getDOM(node) {\n  if (node && _typeof(node) === 'object' && isDOM(node.nativeElement)) {\n    return node.nativeElement;\n  }\n  if (isDOM(node)) {\n    return node;\n  }\n  return null;\n}\n\n/**\n * Return if a node is a DOM node. Else will return by `findDOMNode`\n */\nexport default function findDOMNode(node) {\n  var domNode = getDOM(node);\n  if (domNode) {\n    return domNode;\n  }\n  if (node instanceof React.Component) {\n    var _ReactDOM$findDOMNode;\n    return (_ReactDOM$findDOMNode = ReactDOM.findDOMNode) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.call(ReactDOM, node);\n  }\n  return null;\n}","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\nexport function Collection(_ref) {\n  var children = _ref.children,\n    onBatchResize = _ref.onBatchResize;\n  var resizeIdRef = React.useRef(0);\n  var resizeInfosRef = React.useRef([]);\n  var onCollectionResize = React.useContext(CollectionContext);\n  var onResize = React.useCallback(function (size, element, data) {\n    resizeIdRef.current += 1;\n    var currentId = resizeIdRef.current;\n    resizeInfosRef.current.push({\n      size: size,\n      element: element,\n      data: data\n    });\n    Promise.resolve().then(function () {\n      if (currentId === resizeIdRef.current) {\n        onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current);\n        resizeInfosRef.current = [];\n      }\n    });\n\n    // Continue bubbling if parent exist\n    onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data);\n  }, [onBatchResize, onCollectionResize]);\n  return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n    value: onResize\n  }, children);\n}","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","import ResizeObserver from 'resize-observer-polyfill';\n// =============================== Const ===============================\nvar elementListeners = new Map();\nfunction onResize(entities) {\n  entities.forEach(function (entity) {\n    var _elementListeners$get;\n    var target = entity.target;\n    (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function (listener) {\n      return listener(target);\n    });\n  });\n}\n\n// Note: ResizeObserver polyfill not support option to measure border-box resize\nvar resizeObserver = new ResizeObserver(onResize);\n\n// Dev env only\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n\n// ============================== Observe ==============================\nexport function observe(element, callback) {\n  if (!elementListeners.has(element)) {\n    elementListeners.set(element, new Set());\n    resizeObserver.observe(element);\n  }\n  elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n  if (elementListeners.has(element)) {\n    elementListeners.get(element).delete(callback);\n    if (!elementListeners.get(element).size) {\n      resizeObserver.unobserve(element);\n      elementListeners.delete(element);\n    }\n  }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n  _inherits(DomWrapper, _React$Component);\n  var _super = _createSuper(DomWrapper);\n  function DomWrapper() {\n    _classCallCheck(this, DomWrapper);\n    return _super.apply(this, arguments);\n  }\n  _createClass(DomWrapper, [{\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n  return DomWrapper;\n}(React.Component);\nexport { DomWrapper as default };","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { supportRef, useComposeRef, getNodeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { CollectionContext } from \"../Collection\";\nimport { observe, unobserve } from \"../utils/observerUtil\";\nimport DomWrapper from \"./DomWrapper\";\nfunction SingleObserver(props, ref) {\n  var children = props.children,\n    disabled = props.disabled;\n  var elementRef = React.useRef(null);\n  var wrapperRef = React.useRef(null);\n  var onCollectionResize = React.useContext(CollectionContext);\n\n  // =========================== Children ===========================\n  var isRenderProps = typeof children === 'function';\n  var mergedChildren = isRenderProps ? children(elementRef) : children;\n\n  // ============================= Size =============================\n  var sizeRef = React.useRef({\n    width: -1,\n    height: -1,\n    offsetWidth: -1,\n    offsetHeight: -1\n  });\n\n  // ============================= Ref ==============================\n  var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n  var originRef = canRef ? getNodeRef(mergedChildren) : null;\n  var mergedRef = useComposeRef(originRef, elementRef);\n  var getDom = function getDom() {\n    var _elementRef$current;\n    return findDOMNode(elementRef.current) || (\n    // Support `nativeElement` format\n    elementRef.current && _typeof(elementRef.current) === 'object' ? findDOMNode((_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.nativeElement) : null) || findDOMNode(wrapperRef.current);\n  };\n  React.useImperativeHandle(ref, function () {\n    return getDom();\n  });\n\n  // =========================== Observe ============================\n  var propsRef = React.useRef(props);\n  propsRef.current = props;\n\n  // Handler\n  var onInternalResize = React.useCallback(function (target) {\n    var _propsRef$current = propsRef.current,\n      onResize = _propsRef$current.onResize,\n      data = _propsRef$current.data;\n    var _target$getBoundingCl = target.getBoundingClientRect(),\n      width = _target$getBoundingCl.width,\n      height = _target$getBoundingCl.height;\n    var offsetWidth = target.offsetWidth,\n      offsetHeight = target.offsetHeight;\n\n    /**\n     * Resize observer trigger when content size changed.\n     * In most case we just care about element size,\n     * let's use `boundary` instead of `contentRect` here to avoid shaking.\n     */\n    var fixedWidth = Math.floor(width);\n    var fixedHeight = Math.floor(height);\n    if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n      var size = {\n        width: fixedWidth,\n        height: fixedHeight,\n        offsetWidth: offsetWidth,\n        offsetHeight: offsetHeight\n      };\n      sizeRef.current = size;\n\n      // IE is strange, right?\n      var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n      var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n      var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n        offsetWidth: mergedOffsetWidth,\n        offsetHeight: mergedOffsetHeight\n      });\n\n      // Let collection know what happened\n      onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data);\n      if (onResize) {\n        // defer the callback but not defer to next frame\n        Promise.resolve().then(function () {\n          onResize(sizeInfo, target);\n        });\n      }\n    }\n  }, []);\n\n  // Dynamic observe\n  React.useEffect(function () {\n    var currentElement = getDom();\n    if (currentElement && !disabled) {\n      observe(currentElement, onInternalResize);\n    }\n    return function () {\n      return unobserve(currentElement, onInternalResize);\n    };\n  }, [elementRef.current, disabled]);\n\n  // ============================ Render ============================\n  return /*#__PURE__*/React.createElement(DomWrapper, {\n    ref: wrapperRef\n  }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n    ref: mergedRef\n  }) : mergedChildren);\n}\nvar RefSingleObserver = /*#__PURE__*/React.forwardRef(SingleObserver);\nif (process.env.NODE_ENV !== 'production') {\n  RefSingleObserver.displayName = 'SingleObserver';\n}\nexport default RefSingleObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from \"./SingleObserver\";\nimport { Collection } from \"./Collection\";\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\nimport { _rs } from \"./utils/observerUtil\";\nexport { /** @private Test only for mock trigger resize event */\n_rs };\nfunction ResizeObserver(props, ref) {\n  var children = props.children;\n  var childNodes = typeof children === 'function' ? [children] : toArray(children);\n  if (process.env.NODE_ENV !== 'production') {\n    if (childNodes.length > 1) {\n      warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n    } else if (childNodes.length === 0) {\n      warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n    }\n  }\n  return childNodes.map(function (child, index) {\n    var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n    return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n      key: key,\n      ref: index === 0 ? ref : undefined\n    }), child);\n  });\n}\nvar RefResizeObserver = /*#__PURE__*/React.forwardRef(ResizeObserver);\nif (process.env.NODE_ENV !== 'production') {\n  RefResizeObserver.displayName = 'ResizeObserver';\n}\nRefResizeObserver.Collection = Collection;\nexport default RefResizeObserver;","import canUseDom from \"./canUseDom\";\nvar isStyleNameSupport = function isStyleNameSupport(styleName) {\n  if (canUseDom() && window.document.documentElement) {\n    var styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n    var documentElement = window.document.documentElement;\n    return styleNameList.some(function (name) {\n      return name in documentElement.style;\n    });\n  }\n  return false;\n};\nvar isStyleValueSupport = function isStyleValueSupport(styleName, value) {\n  if (!isStyleNameSupport(styleName)) {\n    return false;\n  }\n  var ele = document.createElement('div');\n  var origin = ele.style[styleName];\n  ele.style[styleName] = value;\n  return ele.style[styleName] !== origin;\n};\nexport function isStyleSupport(styleName, styleValue) {\n  if (!Array.isArray(styleName) && styleValue !== undefined) {\n    return isStyleValueSupport(styleName, styleValue);\n  }\n  return isStyleNameSupport(styleName);\n}","import { createContext } from 'react';\nconst LocaleContext = /*#__PURE__*/createContext(undefined);\nexport default LocaleContext;","var locale = {\n  // Options\n  items_per_page: '/ page',\n  jump_to: 'Go to',\n  jump_to_confirm: 'confirm',\n  page: 'Page',\n  // Pagination\n  prev_page: 'Previous Page',\n  next_page: 'Next Page',\n  prev_5: 'Previous 5 Pages',\n  next_5: 'Next 5 Pages',\n  prev_3: 'Previous 3 Pages',\n  next_3: 'Next 3 Pages',\n  page_size: 'Page Size'\n};\nexport default locale;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { commonLocale } from \"./common\";\nvar locale = _objectSpread(_objectSpread({}, commonLocale), {}, {\n  locale: 'en_US',\n  today: 'Today',\n  now: 'Now',\n  backToToday: 'Back to today',\n  ok: 'OK',\n  clear: 'Clear',\n  week: 'Week',\n  month: 'Month',\n  year: 'Year',\n  timeSelect: 'select time',\n  dateSelect: 'select date',\n  weekSelect: 'Choose a week',\n  monthSelect: 'Choose a month',\n  yearSelect: 'Choose a year',\n  decadeSelect: 'Choose a decade',\n  dateFormat: 'M/D/YYYY',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  previousMonth: 'Previous month (PageUp)',\n  nextMonth: 'Next month (PageDown)',\n  previousYear: 'Last year (Control + left)',\n  nextYear: 'Next year (Control + right)',\n  previousDecade: 'Last decade',\n  nextDecade: 'Next decade',\n  previousCentury: 'Last century',\n  nextCentury: 'Next century'\n});\nexport default locale;","export var commonLocale = {\n  yearFormat: 'YYYY',\n  dayFormat: 'D',\n  cellMeridiemFormat: 'A',\n  monthBeforeYear: true\n};","const locale = {\n  placeholder: 'Select time',\n  rangePlaceholder: ['Start time', 'End time']\n};\nexport default locale;","import CalendarLocale from \"rc-picker/es/locale/en_US\";\nimport TimePickerLocale from '../../time-picker/locale/en_US';\n// Merge into a locale object\nconst locale = {\n  lang: Object.assign({\n    placeholder: 'Select date',\n    yearPlaceholder: 'Select year',\n    quarterPlaceholder: 'Select quarter',\n    monthPlaceholder: 'Select month',\n    weekPlaceholder: 'Select week',\n    rangePlaceholder: ['Start date', 'End date'],\n    rangeYearPlaceholder: ['Start year', 'End year'],\n    rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n    rangeMonthPlaceholder: ['Start month', 'End month'],\n    rangeWeekPlaceholder: ['Start week', 'End week']\n  }, CalendarLocale),\n  timePickerLocale: Object.assign({}, TimePickerLocale)\n};\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;","import Pagination from \"rc-pagination/es/locale/en_US\";\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nconst typeTemplate = '${label} is not a valid ${type}';\nconst localeValues = {\n  locale: 'en',\n  Pagination,\n  DatePicker,\n  TimePicker,\n  Calendar,\n  global: {\n    placeholder: 'Please select'\n  },\n  Table: {\n    filterTitle: 'Filter menu',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    filterEmptyText: 'No filters',\n    filterCheckAll: 'Select all items',\n    filterSearchPlaceholder: 'Search in filters',\n    emptyText: 'No data',\n    selectAll: 'Select current page',\n    selectInvert: 'Invert current page',\n    selectNone: 'Clear all data',\n    selectionAll: 'Select all data',\n    sortTitle: 'Sort',\n    expand: 'Expand row',\n    collapse: 'Collapse row',\n    triggerDesc: 'Click to sort descending',\n    triggerAsc: 'Click to sort ascending',\n    cancelSort: 'Click to cancel sorting'\n  },\n  Tour: {\n    Next: 'Next',\n    Previous: 'Previous',\n    Finish: 'Finish'\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n    justOkText: 'OK'\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancel'\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Search here',\n    itemUnit: 'item',\n    itemsUnit: 'items',\n    remove: 'Remove',\n    selectCurrent: 'Select current page',\n    removeCurrent: 'Remove current page',\n    selectAll: 'Select all data',\n    deselectAll: 'Deselect all data',\n    removeAll: 'Remove all data',\n    selectInvert: 'Invert current page'\n  },\n  Upload: {\n    uploading: 'Uploading...',\n    removeFile: 'Remove file',\n    uploadError: 'Upload error',\n    previewFile: 'Preview file',\n    downloadFile: 'Download file'\n  },\n  Empty: {\n    description: 'No data'\n  },\n  Icon: {\n    icon: 'icon'\n  },\n  Text: {\n    edit: 'Edit',\n    copy: 'Copy',\n    copied: 'Copied',\n    expand: 'Expand',\n    collapse: 'Collapse'\n  },\n  Form: {\n    optional: '(optional)',\n    defaultValidateMessages: {\n      default: 'Field validation error for ${label}',\n      required: 'Please enter ${label}',\n      enum: '${label} must be one of [${enum}]',\n      whitespace: '${label} cannot be a blank character',\n      date: {\n        format: '${label} date format is invalid',\n        parse: '${label} cannot be converted to a date',\n        invalid: '${label} is an invalid date'\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        boolean: typeTemplate,\n        integer: typeTemplate,\n        float: typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate\n      },\n      string: {\n        len: '${label} must be ${len} characters',\n        min: '${label} must be at least ${min} characters',\n        max: '${label} must be up to ${max} characters',\n        range: '${label} must be between ${min}-${max} characters'\n      },\n      number: {\n        len: '${label} must be equal to ${len}',\n        min: '${label} must be minimum ${min}',\n        max: '${label} must be maximum ${max}',\n        range: '${label} must be between ${min}-${max}'\n      },\n      array: {\n        len: 'Must be ${len} ${label}',\n        min: 'At least ${min} ${label}',\n        max: 'At most ${max} ${label}',\n        range: 'The amount of ${label} must be between ${min}-${max}'\n      },\n      pattern: {\n        mismatch: '${label} does not match the pattern ${pattern}'\n      }\n    }\n  },\n  Image: {\n    preview: 'Preview'\n  },\n  QRCode: {\n    expired: 'QR code expired',\n    refresh: 'Refresh',\n    scanned: 'Scanned'\n  },\n  ColorPicker: {\n    presetEmpty: 'Empty',\n    transparent: 'Transparent',\n    singleColor: 'Single',\n    gradientColor: 'Gradient'\n  }\n};\nexport default localeValues;","import * as React from 'react';\nimport LocaleContext from './context';\nimport defaultLocaleData from './en_US';\nconst useLocale = (componentName, defaultLocale) => {\n  const fullLocale = React.useContext(LocaleContext);\n  const getLocale = React.useMemo(() => {\n    var _a;\n    const locale = defaultLocale || defaultLocaleData[componentName];\n    const localeFromContext = (_a = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale[componentName]) !== null && _a !== void 0 ? _a : {};\n    return Object.assign(Object.assign({}, typeof locale === 'function' ? locale() : locale), localeFromContext || {});\n  }, [componentName, defaultLocale, fullLocale]);\n  const getLocaleCode = React.useMemo(() => {\n    const localeCode = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.locale;\n    // Had use LocaleProvide but didn't set locale\n    if ((fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.exist) && !localeCode) {\n      return defaultLocaleData.locale;\n    }\n    return localeCode;\n  }, [fullLocale]);\n  return [getLocale, getLocaleCode];\n};\nexport default useLocale;","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Popup(props) {\n  var children = props.children,\n    prefixCls = props.prefixCls,\n    id = props.id,\n    innerStyle = props.overlayInnerStyle,\n    bodyClassName = props.bodyClassName,\n    className = props.className,\n    style = props.style;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-content\"), className),\n    style: style\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-inner\"), bodyClassName),\n    id: id,\n    role: \"tooltip\",\n    style: innerStyle\n  }, typeof children === 'function' ? children() : children));\n}","import * as React from 'react';\nvar OrderContext = /*#__PURE__*/React.createContext(null);\nexport default OrderContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport OrderContext from \"./Context\";\nvar EMPTY_LIST = [];\n\n/**\n * Will add `div` to document. Nest call will keep order\n * @param render Render DOM in document\n */\nexport default function useDom(render, debug) {\n  var _React$useState = React.useState(function () {\n      if (!canUseDom()) {\n        return null;\n      }\n      var defaultEle = document.createElement('div');\n      if (process.env.NODE_ENV !== 'production' && debug) {\n        defaultEle.setAttribute('data-debug', debug);\n      }\n      return defaultEle;\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 1),\n    ele = _React$useState2[0];\n\n  // ========================== Order ==========================\n  var appendedRef = React.useRef(false);\n  var queueCreate = React.useContext(OrderContext);\n  var _React$useState3 = React.useState(EMPTY_LIST),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    queue = _React$useState4[0],\n    setQueue = _React$useState4[1];\n  var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {\n    setQueue(function (origin) {\n      var newQueue = [appendFn].concat(_toConsumableArray(origin));\n      return newQueue;\n    });\n  });\n\n  // =========================== DOM ===========================\n  function append() {\n    if (!ele.parentElement) {\n      document.body.appendChild(ele);\n    }\n    appendedRef.current = true;\n  }\n  function cleanup() {\n    var _ele$parentElement;\n    (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);\n    appendedRef.current = false;\n  }\n  useLayoutEffect(function () {\n    if (render) {\n      if (queueCreate) {\n        queueCreate(append);\n      } else {\n        append();\n      }\n    } else {\n      cleanup();\n    }\n    return cleanup;\n  }, [render]);\n  useLayoutEffect(function () {\n    if (queue.length) {\n      queue.forEach(function (appendFn) {\n        return appendFn();\n      });\n      setQueue(EMPTY_LIST);\n    }\n  }, [queue]);\n  return [ele, mergedQueueCreate];\n}","/* eslint-disable no-param-reassign */\nimport { removeCSS, updateCSS } from \"./Dom/dynamicCSS\";\nvar cached;\nfunction measureScrollbarSize(ele) {\n  var randomId = \"rc-scrollbar-measure-\".concat(Math.random().toString(36).substring(7));\n  var measureEle = document.createElement('div');\n  measureEle.id = randomId;\n\n  // Create Style\n  var measureStyle = measureEle.style;\n  measureStyle.position = 'absolute';\n  measureStyle.left = '0';\n  measureStyle.top = '0';\n  measureStyle.width = '100px';\n  measureStyle.height = '100px';\n  measureStyle.overflow = 'scroll';\n\n  // Clone Style if needed\n  var fallbackWidth;\n  var fallbackHeight;\n  if (ele) {\n    var targetStyle = getComputedStyle(ele);\n    measureStyle.scrollbarColor = targetStyle.scrollbarColor;\n    measureStyle.scrollbarWidth = targetStyle.scrollbarWidth;\n\n    // Set Webkit style\n    var webkitScrollbarStyle = getComputedStyle(ele, '::-webkit-scrollbar');\n    var width = parseInt(webkitScrollbarStyle.width, 10);\n    var height = parseInt(webkitScrollbarStyle.height, 10);\n\n    // Try wrap to handle CSP case\n    try {\n      var widthStyle = width ? \"width: \".concat(webkitScrollbarStyle.width, \";\") : '';\n      var heightStyle = height ? \"height: \".concat(webkitScrollbarStyle.height, \";\") : '';\n      updateCSS(\"\\n#\".concat(randomId, \"::-webkit-scrollbar {\\n\").concat(widthStyle, \"\\n\").concat(heightStyle, \"\\n}\"), randomId);\n    } catch (e) {\n      // Can't wrap, just log error\n      console.error(e);\n\n      // Get from style directly\n      fallbackWidth = width;\n      fallbackHeight = height;\n    }\n  }\n  document.body.appendChild(measureEle);\n\n  // Measure. Get fallback style if provided\n  var scrollWidth = ele && fallbackWidth && !isNaN(fallbackWidth) ? fallbackWidth : measureEle.offsetWidth - measureEle.clientWidth;\n  var scrollHeight = ele && fallbackHeight && !isNaN(fallbackHeight) ? fallbackHeight : measureEle.offsetHeight - measureEle.clientHeight;\n\n  // Clean up\n  document.body.removeChild(measureEle);\n  removeCSS(randomId);\n  return {\n    width: scrollWidth,\n    height: scrollHeight\n  };\n}\nexport default function getScrollBarSize(fresh) {\n  if (typeof document === 'undefined') {\n    return 0;\n  }\n  if (fresh || cached === undefined) {\n    cached = measureScrollbarSize();\n  }\n  return cached.width;\n}\nexport function getTargetScrollBarSize(target) {\n  if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n    return {\n      width: 0,\n      height: 0\n    };\n  }\n  return measureScrollbarSize(target);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { updateCSS, removeCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { getTargetScrollBarSize } from \"rc-util/es/getScrollBarSize\";\nimport { isBodyOverflowing } from \"./util\";\nvar UNIQUE_ID = \"rc-util-locker-\".concat(Date.now());\nvar uuid = 0;\nexport default function useScrollLocker(lock) {\n  var mergedLock = !!lock;\n  var _React$useState = React.useState(function () {\n      uuid += 1;\n      return \"\".concat(UNIQUE_ID, \"_\").concat(uuid);\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 1),\n    id = _React$useState2[0];\n  useLayoutEffect(function () {\n    if (mergedLock) {\n      var scrollbarSize = getTargetScrollBarSize(document.body).width;\n      var isOverflow = isBodyOverflowing();\n      updateCSS(\"\\nhtml body {\\n  overflow-y: hidden;\\n  \".concat(isOverflow ? \"width: calc(100% - \".concat(scrollbarSize, \"px);\") : '', \"\\n}\"), id);\n    } else {\n      removeCSS(id);\n    }\n    return function () {\n      removeCSS(id);\n    };\n  }, [mergedLock, id]);\n}","/**\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n  return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}","export var inline = false;\nexport function inlineMock(nextInline) {\n  if (typeof nextInline === 'boolean') {\n    inline = nextInline;\n  }\n  return inline;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport warning from \"rc-util/es/warning\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport OrderContext from \"./Context\";\nimport useDom from \"./useDom\";\nimport useScrollLocker from \"./useScrollLocker\";\nimport { inlineMock } from \"./mock\";\nvar getPortalContainer = function getPortalContainer(getContainer) {\n  if (getContainer === false) {\n    return false;\n  }\n  if (!canUseDom() || !getContainer) {\n    return null;\n  }\n  if (typeof getContainer === 'string') {\n    return document.querySelector(getContainer);\n  }\n  if (typeof getContainer === 'function') {\n    return getContainer();\n  }\n  return getContainer;\n};\nvar Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var open = props.open,\n    autoLock = props.autoLock,\n    getContainer = props.getContainer,\n    debug = props.debug,\n    _props$autoDestroy = props.autoDestroy,\n    autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,\n    children = props.children;\n  var _React$useState = React.useState(open),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    shouldRender = _React$useState2[0],\n    setShouldRender = _React$useState2[1];\n  var mergedRender = shouldRender || open;\n\n  // ========================= Warning =========================\n  if (process.env.NODE_ENV !== 'production') {\n    warning(canUseDom() || !open, \"Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.\");\n  }\n\n  // ====================== Should Render ======================\n  React.useEffect(function () {\n    if (autoDestroy || open) {\n      setShouldRender(open);\n    }\n  }, [open, autoDestroy]);\n\n  // ======================== Container ========================\n  var _React$useState3 = React.useState(function () {\n      return getPortalContainer(getContainer);\n    }),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    innerContainer = _React$useState4[0],\n    setInnerContainer = _React$useState4[1];\n  React.useEffect(function () {\n    var customizeContainer = getPortalContainer(getContainer);\n\n    // Tell component that we check this in effect which is safe to be `null`\n    setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);\n  });\n  var _useDom = useDom(mergedRender && !innerContainer, debug),\n    _useDom2 = _slicedToArray(_useDom, 2),\n    defaultContainer = _useDom2[0],\n    queueCreate = _useDom2[1];\n  var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;\n\n  // ========================= Locker ==========================\n  useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));\n\n  // =========================== Ref ===========================\n  var childRef = null;\n  if (children && supportRef(children) && ref) {\n    var _ref = children;\n    childRef = _ref.ref;\n  }\n  var mergedRef = useComposeRef(childRef, ref);\n\n  // ========================= Render ==========================\n  // Do not render when nothing need render\n  // When innerContainer is `undefined`, it may not ready since user use ref in the same render\n  if (!mergedRender || !canUseDom() || innerContainer === undefined) {\n    return null;\n  }\n\n  // Render inline\n  var renderInline = mergedContainer === false || inlineMock();\n  var reffedChildren = children;\n  if (ref) {\n    reffedChildren = /*#__PURE__*/React.cloneElement(children, {\n      ref: mergedRef\n    });\n  }\n  return /*#__PURE__*/React.createElement(OrderContext.Provider, {\n    value: queueCreate\n  }, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Portal.displayName = 'Portal';\n}\nexport default Portal;","import Portal from \"./Portal\";\nimport { inlineMock } from \"./mock\";\nexport { inlineMock };\nexport default Portal;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nfunction getUseId() {\n  // We need fully clone React function here to avoid webpack warning React 17 do not export `useId`\n  var fullClone = _objectSpread({}, React);\n  return fullClone.useId;\n}\nvar uuid = 0;\n\n/** @private Note only worked in develop env. Not work in production. */\nexport function resetUuid() {\n  if (process.env.NODE_ENV !== 'production') {\n    uuid = 0;\n  }\n}\nvar useOriginId = getUseId();\nexport default useOriginId ?\n// Use React `useId`\nfunction useId(id) {\n  var reactId = useOriginId();\n\n  // Developer passed id is single source of truth\n  if (id) {\n    return id;\n  }\n\n  // Test env always return mock id\n  if (process.env.NODE_ENV === 'test') {\n    return 'test-id';\n  }\n  return reactId;\n} :\n// Use compatible of `useId`\nfunction useCompatId(id) {\n  // Inner id for accessibility usage. Only work in client side\n  var _React$useState = React.useState('ssr-id'),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    innerId = _React$useState2[0],\n    setInnerId = _React$useState2[1];\n  React.useEffect(function () {\n    var nextId = uuid;\n    uuid += 1;\n    setInnerId(\"rc_unique_\".concat(nextId));\n  }, []);\n\n  // Developer passed id is single source of truth\n  if (id) {\n    return id;\n  }\n\n  // Test env always return mock id\n  if (process.env.NODE_ENV === 'test') {\n    return 'test-id';\n  }\n\n  // Return react native id or inner id\n  return innerId;\n};","export default (function () {\n  if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n    return false;\n  }\n  var agent = navigator.userAgent || navigator.vendor || window.opera;\n  return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport * as React from 'react';\nexport var Context = /*#__PURE__*/React.createContext({});\nexport default function MotionProvider(_ref) {\n  var children = _ref.children,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: props\n  }, children);\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n  _inherits(DomWrapper, _React$Component);\n  var _super = _createSuper(DomWrapper);\n  function DomWrapper() {\n    _classCallCheck(this, DomWrapper);\n    return _super.apply(this, arguments);\n  }\n  _createClass(DomWrapper, [{\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n  return DomWrapper;\n}(React.Component);\nexport default DomWrapper;","export var STATUS_NONE = 'none';\nexport var STATUS_APPEAR = 'appear';\nexport var STATUS_ENTER = 'enter';\nexport var STATUS_LEAVE = 'leave';\nexport var STEP_NONE = 'none';\nexport var STEP_PREPARE = 'prepare';\nexport var STEP_START = 'start';\nexport var STEP_ACTIVE = 'active';\nexport var STEP_ACTIVATED = 'end';\n/**\n * Used for disabled motion case.\n * Prepare stage will still work but start & active will be skipped.\n */\nexport var STEP_PREPARED = 'prepared';","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport canUseDOM from \"rc-util/es/Dom/canUseDom\";\n// ================= Transition =================\n// Event wrapper. Copy from react source code\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\".concat(styleProp)] = \"webkit\".concat(eventName);\n  prefixes[\"Moz\".concat(styleProp)] = \"moz\".concat(eventName);\n  prefixes[\"ms\".concat(styleProp)] = \"MS\".concat(eventName);\n  prefixes[\"O\".concat(styleProp)] = \"o\".concat(eventName.toLowerCase());\n  return prefixes;\n}\nexport function getVendorPrefixes(domSupport, win) {\n  var prefixes = {\n    animationend: makePrefixMap('Animation', 'AnimationEnd'),\n    transitionend: makePrefixMap('Transition', 'TransitionEnd')\n  };\n  if (domSupport) {\n    if (!('AnimationEvent' in win)) {\n      delete prefixes.animationend.animation;\n    }\n    if (!('TransitionEvent' in win)) {\n      delete prefixes.transitionend.transition;\n    }\n  }\n  return prefixes;\n}\nvar vendorPrefixes = getVendorPrefixes(canUseDOM(), typeof window !== 'undefined' ? window : {});\nvar style = {};\nif (canUseDOM()) {\n  var _document$createEleme = document.createElement('div');\n  style = _document$createEleme.style;\n}\nvar prefixedEventNames = {};\nexport function getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  }\n  var prefixMap = vendorPrefixes[eventName];\n  if (prefixMap) {\n    var stylePropList = Object.keys(prefixMap);\n    var len = stylePropList.length;\n    for (var i = 0; i < len; i += 1) {\n      var styleProp = stylePropList[i];\n      if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {\n        prefixedEventNames[eventName] = prefixMap[styleProp];\n        return prefixedEventNames[eventName];\n      }\n    }\n  }\n  return '';\n}\nvar internalAnimationEndName = getVendorPrefixedEventName('animationend');\nvar internalTransitionEndName = getVendorPrefixedEventName('transitionend');\nexport var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);\nexport var animationEndName = internalAnimationEndName || 'animationend';\nexport var transitionEndName = internalTransitionEndName || 'transitionend';\nexport function getTransitionName(transitionName, transitionType) {\n  if (!transitionName) return null;\n  if (_typeof(transitionName) === 'object') {\n    var type = transitionType.replace(/-\\w/g, function (match) {\n      return match[1].toUpperCase();\n    });\n    return transitionName[type];\n  }\n  return \"\".concat(transitionName, \"-\").concat(transitionType);\n}","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { useEffect, useLayoutEffect } from 'react';\n\n// It's safe to use `useLayoutEffect` but the warning is annoying\nvar useIsomorphicLayoutEffect = canUseDom() ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;","var raf = function raf(callback) {\n  return +setTimeout(callback, 16);\n};\nvar caf = function caf(num) {\n  return clearTimeout(num);\n};\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n  raf = function raf(callback) {\n    return window.requestAnimationFrame(callback);\n  };\n  caf = function caf(handle) {\n    return window.cancelAnimationFrame(handle);\n  };\n}\nvar rafUUID = 0;\nvar rafIds = new Map();\nfunction cleanup(id) {\n  rafIds.delete(id);\n}\nvar wrapperRaf = function wrapperRaf(callback) {\n  var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  rafUUID += 1;\n  var id = rafUUID;\n  function callRef(leftTimes) {\n    if (leftTimes === 0) {\n      // Clean up\n      cleanup(id);\n\n      // Trigger\n      callback();\n    } else {\n      // Next raf\n      var realId = raf(function () {\n        callRef(leftTimes - 1);\n      });\n\n      // Bind real raf id\n      rafIds.set(id, realId);\n    }\n  }\n  callRef(times);\n  return id;\n};\nwrapperRaf.cancel = function (id) {\n  var realId = rafIds.get(id);\n  cleanup(id);\n  return caf(realId);\n};\nif (process.env.NODE_ENV !== 'production') {\n  wrapperRaf.ids = function () {\n    return rafIds;\n  };\n}\nexport default wrapperRaf;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport { STEP_ACTIVATED, STEP_ACTIVE, STEP_NONE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useNextFrame from \"./useNextFrame\";\nvar FULL_STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];\nvar SIMPLE_STEP_QUEUE = [STEP_PREPARE, STEP_PREPARED];\n\n/** Skip current step */\nexport var SkipStep = false;\n/** Current step should be update in */\nexport var DoStep = true;\nexport function isActive(step) {\n  return step === STEP_ACTIVE || step === STEP_ACTIVATED;\n}\nexport default (function (status, prepareOnly, callback) {\n  var _useState = useState(STEP_NONE),\n    _useState2 = _slicedToArray(_useState, 2),\n    step = _useState2[0],\n    setStep = _useState2[1];\n  var _useNextFrame = useNextFrame(),\n    _useNextFrame2 = _slicedToArray(_useNextFrame, 2),\n    nextFrame = _useNextFrame2[0],\n    cancelNextFrame = _useNextFrame2[1];\n  function startQueue() {\n    setStep(STEP_PREPARE, true);\n  }\n  var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE;\n  useIsomorphicLayoutEffect(function () {\n    if (step !== STEP_NONE && step !== STEP_ACTIVATED) {\n      var index = STEP_QUEUE.indexOf(step);\n      var nextStep = STEP_QUEUE[index + 1];\n      var result = callback(step);\n      if (result === SkipStep) {\n        // Skip when no needed\n        setStep(nextStep, true);\n      } else if (nextStep) {\n        // Do as frame for step update\n        nextFrame(function (info) {\n          function doNext() {\n            // Skip since current queue is ood\n            if (info.isCanceled()) return;\n            setStep(nextStep, true);\n          }\n          if (result === true) {\n            doNext();\n          } else {\n            // Only promise should be async\n            Promise.resolve(result).then(doNext);\n          }\n        });\n      }\n    }\n  }, [status, step]);\n  React.useEffect(function () {\n    return function () {\n      cancelNextFrame();\n    };\n  }, []);\n  return [startQueue, step];\n});","import raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nexport default (function () {\n  var nextFrameRef = React.useRef(null);\n  function cancelNextFrame() {\n    raf.cancel(nextFrameRef.current);\n  }\n  function nextFrame(callback) {\n    var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n    cancelNextFrame();\n    var nextFrameId = raf(function () {\n      if (delay <= 1) {\n        callback({\n          isCanceled: function isCanceled() {\n            return nextFrameId !== nextFrameRef.current;\n          }\n        });\n      } else {\n        nextFrame(callback, delay - 1);\n      }\n    });\n    nextFrameRef.current = nextFrameId;\n  }\n  React.useEffect(function () {\n    return function () {\n      cancelNextFrame();\n    };\n  }, []);\n  return [nextFrame, cancelNextFrame];\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEvent } from 'rc-util';\nimport useState from \"rc-util/es/hooks/useState\";\nimport useSyncState from \"rc-util/es/hooks/useSyncState\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { STATUS_APPEAR, STATUS_ENTER, STATUS_LEAVE, STATUS_NONE, STEP_ACTIVE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useDomMotionEvents from \"./useDomMotionEvents\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useStepQueue, { DoStep, isActive, SkipStep } from \"./useStepQueue\";\nexport default function useStatus(supportMotion, visible, getElement, _ref) {\n  var _ref$motionEnter = _ref.motionEnter,\n    motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter,\n    _ref$motionAppear = _ref.motionAppear,\n    motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear,\n    _ref$motionLeave = _ref.motionLeave,\n    motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave,\n    motionDeadline = _ref.motionDeadline,\n    motionLeaveImmediately = _ref.motionLeaveImmediately,\n    onAppearPrepare = _ref.onAppearPrepare,\n    onEnterPrepare = _ref.onEnterPrepare,\n    onLeavePrepare = _ref.onLeavePrepare,\n    onAppearStart = _ref.onAppearStart,\n    onEnterStart = _ref.onEnterStart,\n    onLeaveStart = _ref.onLeaveStart,\n    onAppearActive = _ref.onAppearActive,\n    onEnterActive = _ref.onEnterActive,\n    onLeaveActive = _ref.onLeaveActive,\n    onAppearEnd = _ref.onAppearEnd,\n    onEnterEnd = _ref.onEnterEnd,\n    onLeaveEnd = _ref.onLeaveEnd,\n    onVisibleChanged = _ref.onVisibleChanged;\n  // Used for outer render usage to avoid `visible: false & status: none` to render nothing\n  var _useState = useState(),\n    _useState2 = _slicedToArray(_useState, 2),\n    asyncVisible = _useState2[0],\n    setAsyncVisible = _useState2[1];\n  var _useSyncState = useSyncState(STATUS_NONE),\n    _useSyncState2 = _slicedToArray(_useSyncState, 2),\n    getStatus = _useSyncState2[0],\n    setStatus = _useSyncState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    style = _useState4[0],\n    setStyle = _useState4[1];\n  var currentStatus = getStatus();\n  var mountedRef = useRef(false);\n  var deadlineRef = useRef(null);\n\n  // =========================== Dom Node ===========================\n  function getDomElement() {\n    return getElement();\n  }\n\n  // ========================== Motion End ==========================\n  var activeRef = useRef(false);\n\n  /**\n   * Clean up status & style\n   */\n  function updateMotionEndStatus() {\n    setStatus(STATUS_NONE);\n    setStyle(null, true);\n  }\n  var onInternalMotionEnd = useEvent(function (event) {\n    var status = getStatus();\n    // Do nothing since not in any transition status.\n    // This may happen when `motionDeadline` trigger.\n    if (status === STATUS_NONE) {\n      return;\n    }\n    var element = getDomElement();\n    if (event && !event.deadline && event.target !== element) {\n      // event exists\n      // not initiated by deadline\n      // transitionEnd not fired by inner elements\n      return;\n    }\n    var currentActive = activeRef.current;\n    var canEnd;\n    if (status === STATUS_APPEAR && currentActive) {\n      canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);\n    } else if (status === STATUS_ENTER && currentActive) {\n      canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);\n    } else if (status === STATUS_LEAVE && currentActive) {\n      canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);\n    }\n\n    // Only update status when `canEnd` and not destroyed\n    if (currentActive && canEnd !== false) {\n      updateMotionEndStatus();\n    }\n  });\n  var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd),\n    _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1),\n    patchMotionEvents = _useDomMotionEvents2[0];\n\n  // ============================= Step =============================\n  var getEventHandlers = function getEventHandlers(targetStatus) {\n    switch (targetStatus) {\n      case STATUS_APPEAR:\n        return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onAppearPrepare), STEP_START, onAppearStart), STEP_ACTIVE, onAppearActive);\n      case STATUS_ENTER:\n        return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onEnterPrepare), STEP_START, onEnterStart), STEP_ACTIVE, onEnterActive);\n      case STATUS_LEAVE:\n        return _defineProperty(_defineProperty(_defineProperty({}, STEP_PREPARE, onLeavePrepare), STEP_START, onLeaveStart), STEP_ACTIVE, onLeaveActive);\n      default:\n        return {};\n    }\n  };\n  var eventHandlers = React.useMemo(function () {\n    return getEventHandlers(currentStatus);\n  }, [currentStatus]);\n  var _useStepQueue = useStepQueue(currentStatus, !supportMotion, function (newStep) {\n      // Only prepare step can be skip\n      if (newStep === STEP_PREPARE) {\n        var onPrepare = eventHandlers[STEP_PREPARE];\n        if (!onPrepare) {\n          return SkipStep;\n        }\n        return onPrepare(getDomElement());\n      }\n\n      // Rest step is sync update\n      if (step in eventHandlers) {\n        var _eventHandlers$step;\n        setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);\n      }\n      if (step === STEP_ACTIVE && currentStatus !== STATUS_NONE) {\n        // Patch events when motion needed\n        patchMotionEvents(getDomElement());\n        if (motionDeadline > 0) {\n          clearTimeout(deadlineRef.current);\n          deadlineRef.current = setTimeout(function () {\n            onInternalMotionEnd({\n              deadline: true\n            });\n          }, motionDeadline);\n        }\n      }\n      if (step === STEP_PREPARED) {\n        updateMotionEndStatus();\n      }\n      return DoStep;\n    }),\n    _useStepQueue2 = _slicedToArray(_useStepQueue, 2),\n    startStep = _useStepQueue2[0],\n    step = _useStepQueue2[1];\n  var active = isActive(step);\n  activeRef.current = active;\n\n  // ============================ Status ============================\n  var visibleRef = useRef(null);\n\n  // Update with new status\n  useIsomorphicLayoutEffect(function () {\n    // When use Suspense, the `visible` will repeat trigger,\n    // But not real change of the `visible`, we need to skip it.\n    // https://github.com/ant-design/ant-design/issues/44379\n    if (mountedRef.current && visibleRef.current === visible) {\n      return;\n    }\n    setAsyncVisible(visible);\n    var isMounted = mountedRef.current;\n    mountedRef.current = true;\n\n    // if (!supportMotion) {\n    //   return;\n    // }\n\n    var nextStatus;\n\n    // Appear\n    if (!isMounted && visible && motionAppear) {\n      nextStatus = STATUS_APPEAR;\n    }\n\n    // Enter\n    if (isMounted && visible && motionEnter) {\n      nextStatus = STATUS_ENTER;\n    }\n\n    // Leave\n    if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {\n      nextStatus = STATUS_LEAVE;\n    }\n    var nextEventHandlers = getEventHandlers(nextStatus);\n\n    // Update to next status\n    if (nextStatus && (supportMotion || nextEventHandlers[STEP_PREPARE])) {\n      setStatus(nextStatus);\n      startStep();\n    } else {\n      // Set back in case no motion but prev status has prepare step\n      setStatus(STATUS_NONE);\n    }\n    visibleRef.current = visible;\n  }, [visible]);\n\n  // ============================ Effect ============================\n  // Reset when motion changed\n  useEffect(function () {\n    if (\n    // Cancel appear\n    currentStatus === STATUS_APPEAR && !motionAppear ||\n    // Cancel enter\n    currentStatus === STATUS_ENTER && !motionEnter ||\n    // Cancel leave\n    currentStatus === STATUS_LEAVE && !motionLeave) {\n      setStatus(STATUS_NONE);\n    }\n  }, [motionAppear, motionEnter, motionLeave]);\n  useEffect(function () {\n    return function () {\n      mountedRef.current = false;\n      clearTimeout(deadlineRef.current);\n    };\n  }, []);\n\n  // Trigger `onVisibleChanged`\n  var firstMountChangeRef = React.useRef(false);\n  useEffect(function () {\n    // [visible & motion not end] => [!visible & motion end] still need trigger onVisibleChanged\n    if (asyncVisible) {\n      firstMountChangeRef.current = true;\n    }\n    if (asyncVisible !== undefined && currentStatus === STATUS_NONE) {\n      // Skip first render is invisible since it's nothing changed\n      if (firstMountChangeRef.current || asyncVisible) {\n        onVisibleChanged === null || onVisibleChanged === void 0 || onVisibleChanged(asyncVisible);\n      }\n      firstMountChangeRef.current = true;\n    }\n  }, [asyncVisible, currentStatus]);\n\n  // ============================ Styles ============================\n  var mergedStyle = style;\n  if (eventHandlers[STEP_PREPARE] && step === STEP_START) {\n    mergedStyle = _objectSpread({\n      transition: 'none'\n    }, mergedStyle);\n  }\n  return [currentStatus, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useEvent from \"./useEvent\";\n/**\n * Same as React.useState but will always get latest state.\n * This is useful when React merge multiple state updates into one.\n * e.g. onTransitionEnd trigger multiple event at once will be merged state update in React.\n */\nexport default function useSyncState(defaultValue) {\n  var _React$useReducer = React.useReducer(function (x) {\n      return x + 1;\n    }, 0),\n    _React$useReducer2 = _slicedToArray(_React$useReducer, 2),\n    forceUpdate = _React$useReducer2[1];\n  var currentValueRef = React.useRef(defaultValue);\n  var getValue = useEvent(function () {\n    return currentValueRef.current;\n  });\n  var setValue = useEvent(function (updater) {\n    currentValueRef.current = typeof updater === 'function' ? updater(currentValueRef.current) : updater;\n    forceUpdate();\n  });\n  return [getValue, setValue];\n}","import * as React from 'react';\nimport { useRef } from 'react';\nimport { animationEndName, transitionEndName } from \"../util/motion\";\nexport default (function (onInternalMotionEnd) {\n  var cacheElementRef = useRef();\n\n  // Remove events\n  function removeMotionEvents(element) {\n    if (element) {\n      element.removeEventListener(transitionEndName, onInternalMotionEnd);\n      element.removeEventListener(animationEndName, onInternalMotionEnd);\n    }\n  }\n\n  // Patch events\n  function patchMotionEvents(element) {\n    if (cacheElementRef.current && cacheElementRef.current !== element) {\n      removeMotionEvents(cacheElementRef.current);\n    }\n    if (element && element !== cacheElementRef.current) {\n      element.addEventListener(transitionEndName, onInternalMotionEnd);\n      element.addEventListener(animationEndName, onInternalMotionEnd);\n\n      // Save as cache in case dom removed trigger by `motionDeadline`\n      cacheElementRef.current = element;\n    }\n  }\n\n  // Clean up when removed\n  React.useEffect(function () {\n    return function () {\n      removeMotionEvents(cacheElementRef.current);\n    };\n  }, []);\n  return [patchMotionEvents, removeMotionEvents];\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */\nimport classNames from 'classnames';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { fillRef, getNodeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport { Context } from \"./context\";\nimport DomWrapper from \"./DomWrapper\";\nimport useStatus from \"./hooks/useStatus\";\nimport { isActive } from \"./hooks/useStepQueue\";\nimport { STATUS_NONE, STEP_PREPARE, STEP_START } from \"./interface\";\nimport { getTransitionName, supportTransition } from \"./util/motion\";\n/**\n * `transitionSupport` is used for none transition test case.\n * Default we use browser transition event support check.\n */\nexport function genCSSMotion(config) {\n  var transitionSupport = config;\n  if (_typeof(config) === 'object') {\n    transitionSupport = config.transitionSupport;\n  }\n  function isSupportTransition(props, contextMotion) {\n    return !!(props.motionName && transitionSupport && contextMotion !== false);\n  }\n  var CSSMotion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n    var _props$visible = props.visible,\n      visible = _props$visible === void 0 ? true : _props$visible,\n      _props$removeOnLeave = props.removeOnLeave,\n      removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave,\n      forceRender = props.forceRender,\n      children = props.children,\n      motionName = props.motionName,\n      leavedClassName = props.leavedClassName,\n      eventProps = props.eventProps;\n    var _React$useContext = React.useContext(Context),\n      contextMotion = _React$useContext.motion;\n    var supportMotion = isSupportTransition(props, contextMotion);\n\n    // Ref to the react node, it may be a HTMLElement\n    var nodeRef = useRef();\n    // Ref to the dom wrapper in case ref can not pass to HTMLElement\n    var wrapperNodeRef = useRef();\n    function getDomElement() {\n      try {\n        // Here we're avoiding call for findDOMNode since it's deprecated\n        // in strict mode. We're calling it only when node ref is not\n        // an instance of DOM HTMLElement. Otherwise use\n        // findDOMNode as a final resort\n        return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);\n      } catch (e) {\n        // Only happen when `motionDeadline` trigger but element removed.\n        return null;\n      }\n    }\n    var _useStatus = useStatus(supportMotion, visible, getDomElement, props),\n      _useStatus2 = _slicedToArray(_useStatus, 4),\n      status = _useStatus2[0],\n      statusStep = _useStatus2[1],\n      statusStyle = _useStatus2[2],\n      mergedVisible = _useStatus2[3];\n\n    // Record whether content has rendered\n    // Will return null for un-rendered even when `removeOnLeave={false}`\n    var renderedRef = React.useRef(mergedVisible);\n    if (mergedVisible) {\n      renderedRef.current = true;\n    }\n\n    // ====================== Refs ======================\n    var setNodeRef = React.useCallback(function (node) {\n      nodeRef.current = node;\n      fillRef(ref, node);\n    }, [ref]);\n\n    // ===================== Render =====================\n    var motionChildren;\n    var mergedProps = _objectSpread(_objectSpread({}, eventProps), {}, {\n      visible: visible\n    });\n    if (!children) {\n      // No children\n      motionChildren = null;\n    } else if (status === STATUS_NONE) {\n      // Stable children\n      if (mergedVisible) {\n        motionChildren = children(_objectSpread({}, mergedProps), setNodeRef);\n      } else if (!removeOnLeave && renderedRef.current && leavedClassName) {\n        motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n          className: leavedClassName\n        }), setNodeRef);\n      } else if (forceRender || !removeOnLeave && !leavedClassName) {\n        motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n          style: {\n            display: 'none'\n          }\n        }), setNodeRef);\n      } else {\n        motionChildren = null;\n      }\n    } else {\n      // In motion\n      var statusSuffix;\n      if (statusStep === STEP_PREPARE) {\n        statusSuffix = 'prepare';\n      } else if (isActive(statusStep)) {\n        statusSuffix = 'active';\n      } else if (statusStep === STEP_START) {\n        statusSuffix = 'start';\n      }\n      var motionCls = getTransitionName(motionName, \"\".concat(status, \"-\").concat(statusSuffix));\n      motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n        className: classNames(getTransitionName(motionName, status), _defineProperty(_defineProperty({}, motionCls, motionCls && statusSuffix), motionName, typeof motionName === 'string')),\n        style: statusStyle\n      }), setNodeRef);\n    }\n\n    // Auto inject ref if child node not have `ref` props\n    if ( /*#__PURE__*/React.isValidElement(motionChildren) && supportRef(motionChildren)) {\n      var originNodeRef = getNodeRef(motionChildren);\n      if (!originNodeRef) {\n        motionChildren = /*#__PURE__*/React.cloneElement(motionChildren, {\n          ref: setNodeRef\n        });\n      }\n    }\n    return /*#__PURE__*/React.createElement(DomWrapper, {\n      ref: wrapperNodeRef\n    }, motionChildren);\n  });\n  CSSMotion.displayName = 'CSSMotion';\n  return CSSMotion;\n}\nexport default genCSSMotion(supportTransition);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport var STATUS_ADD = 'add';\nexport var STATUS_KEEP = 'keep';\nexport var STATUS_REMOVE = 'remove';\nexport var STATUS_REMOVED = 'removed';\nexport function wrapKeyToObject(key) {\n  var keyObj;\n  if (key && _typeof(key) === 'object' && 'key' in key) {\n    keyObj = key;\n  } else {\n    keyObj = {\n      key: key\n    };\n  }\n  return _objectSpread(_objectSpread({}, keyObj), {}, {\n    key: String(keyObj.key)\n  });\n}\nexport function parseKeys() {\n  var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  return keys.map(wrapKeyToObject);\n}\nexport function diffKeys() {\n  var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var list = [];\n  var currentIndex = 0;\n  var currentLen = currentKeys.length;\n  var prevKeyObjects = parseKeys(prevKeys);\n  var currentKeyObjects = parseKeys(currentKeys);\n\n  // Check prev keys to insert or keep\n  prevKeyObjects.forEach(function (keyObj) {\n    var hit = false;\n    for (var i = currentIndex; i < currentLen; i += 1) {\n      var currentKeyObj = currentKeyObjects[i];\n      if (currentKeyObj.key === keyObj.key) {\n        // New added keys should add before current key\n        if (currentIndex < i) {\n          list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) {\n            return _objectSpread(_objectSpread({}, obj), {}, {\n              status: STATUS_ADD\n            });\n          }));\n          currentIndex = i;\n        }\n        list.push(_objectSpread(_objectSpread({}, currentKeyObj), {}, {\n          status: STATUS_KEEP\n        }));\n        currentIndex += 1;\n        hit = true;\n        break;\n      }\n    }\n\n    // If not hit, it means key is removed\n    if (!hit) {\n      list.push(_objectSpread(_objectSpread({}, keyObj), {}, {\n        status: STATUS_REMOVE\n      }));\n    }\n  });\n\n  // Add rest to the list\n  if (currentIndex < currentLen) {\n    list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) {\n      return _objectSpread(_objectSpread({}, obj), {}, {\n        status: STATUS_ADD\n      });\n    }));\n  }\n\n  /**\n   * Merge same key when it remove and add again:\n   *    [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep]\n   */\n  var keys = {};\n  list.forEach(function (_ref) {\n    var key = _ref.key;\n    keys[key] = (keys[key] || 0) + 1;\n  });\n  var duplicatedKeys = Object.keys(keys).filter(function (key) {\n    return keys[key] > 1;\n  });\n  duplicatedKeys.forEach(function (matchKey) {\n    // Remove `STATUS_REMOVE` node.\n    list = list.filter(function (_ref2) {\n      var key = _ref2.key,\n        status = _ref2.status;\n      return key !== matchKey || status !== STATUS_REMOVE;\n    });\n\n    // Update `STATUS_ADD` to `STATUS_KEEP`\n    list.forEach(function (node) {\n      if (node.key === matchKey) {\n        // eslint-disable-next-line no-param-reassign\n        node.status = STATUS_KEEP;\n      }\n    });\n  });\n  return list;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"component\", \"children\", \"onVisibleChanged\", \"onAllRemoved\"],\n  _excluded2 = [\"status\"];\n/* eslint react/prop-types: 0 */\nimport * as React from 'react';\nimport OriginCSSMotion from \"./CSSMotion\";\nimport { diffKeys, parseKeys, STATUS_ADD, STATUS_KEEP, STATUS_REMOVE, STATUS_REMOVED } from \"./util/diff\";\nimport { supportTransition } from \"./util/motion\";\nvar MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearPrepare', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd'];\n/**\n * Generate a CSSMotionList component with config\n * @param transitionSupport No need since CSSMotionList no longer depends on transition support\n * @param CSSMotion CSSMotion component\n */\nexport function genCSSMotionList(transitionSupport) {\n  var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OriginCSSMotion;\n  var CSSMotionList = /*#__PURE__*/function (_React$Component) {\n    _inherits(CSSMotionList, _React$Component);\n    var _super = _createSuper(CSSMotionList);\n    function CSSMotionList() {\n      var _this;\n      _classCallCheck(this, CSSMotionList);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _super.call.apply(_super, [this].concat(args));\n      _defineProperty(_assertThisInitialized(_this), \"state\", {\n        keyEntities: []\n      });\n      // ZombieJ: Return the count of rest keys. It's safe to refactor if need more info.\n      _defineProperty(_assertThisInitialized(_this), \"removeKey\", function (removeKey) {\n        _this.setState(function (prevState) {\n          var nextKeyEntities = prevState.keyEntities.map(function (entity) {\n            if (entity.key !== removeKey) return entity;\n            return _objectSpread(_objectSpread({}, entity), {}, {\n              status: STATUS_REMOVED\n            });\n          });\n          return {\n            keyEntities: nextKeyEntities\n          };\n        }, function () {\n          var keyEntities = _this.state.keyEntities;\n          var restKeysCount = keyEntities.filter(function (_ref) {\n            var status = _ref.status;\n            return status !== STATUS_REMOVED;\n          }).length;\n          if (restKeysCount === 0 && _this.props.onAllRemoved) {\n            _this.props.onAllRemoved();\n          }\n        });\n      });\n      return _this;\n    }\n    _createClass(CSSMotionList, [{\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n        var keyEntities = this.state.keyEntities;\n        var _this$props = this.props,\n          component = _this$props.component,\n          children = _this$props.children,\n          _onVisibleChanged = _this$props.onVisibleChanged,\n          onAllRemoved = _this$props.onAllRemoved,\n          restProps = _objectWithoutProperties(_this$props, _excluded);\n        var Component = component || React.Fragment;\n        var motionProps = {};\n        MOTION_PROP_NAMES.forEach(function (prop) {\n          motionProps[prop] = restProps[prop];\n          delete restProps[prop];\n        });\n        delete restProps.keys;\n        return /*#__PURE__*/React.createElement(Component, restProps, keyEntities.map(function (_ref2, index) {\n          var status = _ref2.status,\n            eventProps = _objectWithoutProperties(_ref2, _excluded2);\n          var visible = status === STATUS_ADD || status === STATUS_KEEP;\n          return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motionProps, {\n            key: eventProps.key,\n            visible: visible,\n            eventProps: eventProps,\n            onVisibleChanged: function onVisibleChanged(changedVisible) {\n              _onVisibleChanged === null || _onVisibleChanged === void 0 || _onVisibleChanged(changedVisible, {\n                key: eventProps.key\n              });\n              if (!changedVisible) {\n                _this2.removeKey(eventProps.key);\n              }\n            }\n          }), function (props, ref) {\n            return children(_objectSpread(_objectSpread({}, props), {}, {\n              index: index\n            }), ref);\n          });\n        }));\n      }\n    }], [{\n      key: \"getDerivedStateFromProps\",\n      value: function getDerivedStateFromProps(_ref3, _ref4) {\n        var keys = _ref3.keys;\n        var keyEntities = _ref4.keyEntities;\n        var parsedKeyObjects = parseKeys(keys);\n        var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);\n        return {\n          keyEntities: mixedKeyEntities.filter(function (entity) {\n            var prevEntity = keyEntities.find(function (_ref5) {\n              var key = _ref5.key;\n              return entity.key === key;\n            });\n\n            // Remove if already mark as removed\n            if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {\n              return false;\n            }\n            return true;\n          })\n        };\n      }\n    }]);\n    return CSSMotionList;\n  }(React.Component);\n  _defineProperty(CSSMotionList, \"defaultProps\", {\n    component: 'div'\n  });\n  return CSSMotionList;\n}\nexport default genCSSMotionList(supportTransition);","import CSSMotion from \"./CSSMotion\";\nimport CSSMotionList from \"./CSSMotionList\";\nexport { default as Provider } from \"./context\";\nexport { CSSMotionList };\nexport default CSSMotion;","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Arrow(props) {\n  var prefixCls = props.prefixCls,\n    align = props.align,\n    arrow = props.arrow,\n    arrowPos = props.arrowPos;\n  var _ref = arrow || {},\n    className = _ref.className,\n    content = _ref.content;\n  var _arrowPos$x = arrowPos.x,\n    x = _arrowPos$x === void 0 ? 0 : _arrowPos$x,\n    _arrowPos$y = arrowPos.y,\n    y = _arrowPos$y === void 0 ? 0 : _arrowPos$y;\n  var arrowRef = React.useRef();\n\n  // Skip if no align\n  if (!align || !align.points) {\n    return null;\n  }\n  var alignStyle = {\n    position: 'absolute'\n  };\n\n  // Skip if no need to align\n  if (align.autoArrow !== false) {\n    var popupPoints = align.points[0];\n    var targetPoints = align.points[1];\n    var popupTB = popupPoints[0];\n    var popupLR = popupPoints[1];\n    var targetTB = targetPoints[0];\n    var targetLR = targetPoints[1];\n\n    // Top & Bottom\n    if (popupTB === targetTB || !['t', 'b'].includes(popupTB)) {\n      alignStyle.top = y;\n    } else if (popupTB === 't') {\n      alignStyle.top = 0;\n    } else {\n      alignStyle.bottom = 0;\n    }\n\n    // Left & Right\n    if (popupLR === targetLR || !['l', 'r'].includes(popupLR)) {\n      alignStyle.left = x;\n    } else if (popupLR === 'l') {\n      alignStyle.left = 0;\n    } else {\n      alignStyle.right = 0;\n    }\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: arrowRef,\n    className: classNames(\"\".concat(prefixCls, \"-arrow\"), className),\n    style: alignStyle\n  }, content);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nexport default function Mask(props) {\n  var prefixCls = props.prefixCls,\n    open = props.open,\n    zIndex = props.zIndex,\n    mask = props.mask,\n    motion = props.motion;\n  if (!mask) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n    motionAppear: true,\n    visible: open,\n    removeOnLeave: true\n  }), function (_ref) {\n    var className = _ref.className;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      style: {\n        zIndex: zIndex\n      },\n      className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n    });\n  });\n}","import * as React from 'react';\nvar PopupContent = /*#__PURE__*/React.memo(function (_ref) {\n  var children = _ref.children;\n  return children;\n}, function (_, next) {\n  return next.cache;\n});\nif (process.env.NODE_ENV !== 'production') {\n  PopupContent.displayName = 'PopupContent';\n}\nexport default PopupContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport Arrow from \"./Arrow\";\nimport Mask from \"./Mask\";\nimport PopupContent from \"./PopupContent\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var popup = props.popup,\n    className = props.className,\n    prefixCls = props.prefixCls,\n    style = props.style,\n    target = props.target,\n    _onVisibleChanged = props.onVisibleChanged,\n    open = props.open,\n    keepDom = props.keepDom,\n    fresh = props.fresh,\n    onClick = props.onClick,\n    mask = props.mask,\n    arrow = props.arrow,\n    arrowPos = props.arrowPos,\n    align = props.align,\n    motion = props.motion,\n    maskMotion = props.maskMotion,\n    forceRender = props.forceRender,\n    getPopupContainer = props.getPopupContainer,\n    autoDestroy = props.autoDestroy,\n    Portal = props.portal,\n    zIndex = props.zIndex,\n    onMouseEnter = props.onMouseEnter,\n    onMouseLeave = props.onMouseLeave,\n    onPointerEnter = props.onPointerEnter,\n    onPointerDownCapture = props.onPointerDownCapture,\n    ready = props.ready,\n    offsetX = props.offsetX,\n    offsetY = props.offsetY,\n    offsetR = props.offsetR,\n    offsetB = props.offsetB,\n    onAlign = props.onAlign,\n    onPrepare = props.onPrepare,\n    stretch = props.stretch,\n    targetWidth = props.targetWidth,\n    targetHeight = props.targetHeight;\n  var childNode = typeof popup === 'function' ? popup() : popup;\n\n  // We can not remove holder only when motion finished.\n  var isNodeVisible = open || keepDom;\n\n  // ======================= Container ========================\n  var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0;\n  var _React$useState = React.useState(!getPopupContainer || !getPopupContainerNeedParams),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    show = _React$useState2[0],\n    setShow = _React$useState2[1];\n\n  // Delay to show since `getPopupContainer` need target element\n  useLayoutEffect(function () {\n    if (!show && getPopupContainerNeedParams && target) {\n      setShow(true);\n    }\n  }, [show, getPopupContainerNeedParams, target]);\n\n  // ========================= Render =========================\n  if (!show) {\n    return null;\n  }\n\n  // >>>>> Offset\n  var AUTO = 'auto';\n  var offsetStyle = {\n    left: '-1000vw',\n    top: '-1000vh',\n    right: AUTO,\n    bottom: AUTO\n  };\n\n  // Set align style\n  if (ready || !open) {\n    var _experimental;\n    var points = align.points;\n    var dynamicInset = align.dynamicInset || ((_experimental = align._experimental) === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset);\n    var alignRight = dynamicInset && points[0][1] === 'r';\n    var alignBottom = dynamicInset && points[0][0] === 'b';\n    if (alignRight) {\n      offsetStyle.right = offsetR;\n      offsetStyle.left = AUTO;\n    } else {\n      offsetStyle.left = offsetX;\n      offsetStyle.right = AUTO;\n    }\n    if (alignBottom) {\n      offsetStyle.bottom = offsetB;\n      offsetStyle.top = AUTO;\n    } else {\n      offsetStyle.top = offsetY;\n      offsetStyle.bottom = AUTO;\n    }\n  }\n\n  // >>>>> Misc\n  var miscStyle = {};\n  if (stretch) {\n    if (stretch.includes('height') && targetHeight) {\n      miscStyle.height = targetHeight;\n    } else if (stretch.includes('minHeight') && targetHeight) {\n      miscStyle.minHeight = targetHeight;\n    }\n    if (stretch.includes('width') && targetWidth) {\n      miscStyle.width = targetWidth;\n    } else if (stretch.includes('minWidth') && targetWidth) {\n      miscStyle.minWidth = targetWidth;\n    }\n  }\n  if (!open) {\n    miscStyle.pointerEvents = 'none';\n  }\n  return /*#__PURE__*/React.createElement(Portal, {\n    open: forceRender || isNodeVisible,\n    getContainer: getPopupContainer && function () {\n      return getPopupContainer(target);\n    },\n    autoDestroy: autoDestroy\n  }, /*#__PURE__*/React.createElement(Mask, {\n    prefixCls: prefixCls,\n    open: open,\n    zIndex: zIndex,\n    mask: mask,\n    motion: maskMotion\n  }), /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onAlign,\n    disabled: !open\n  }, function (resizeObserverRef) {\n    return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n      motionAppear: true,\n      motionEnter: true,\n      motionLeave: true,\n      removeOnLeave: false,\n      forceRender: forceRender,\n      leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n    }, motion, {\n      onAppearPrepare: onPrepare,\n      onEnterPrepare: onPrepare,\n      visible: open,\n      onVisibleChanged: function onVisibleChanged(nextVisible) {\n        var _motion$onVisibleChan;\n        motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible);\n        _onVisibleChanged(nextVisible);\n      }\n    }), function (_ref, motionRef) {\n      var motionClassName = _ref.className,\n        motionStyle = _ref.style;\n      var cls = classNames(prefixCls, motionClassName, className);\n      return /*#__PURE__*/React.createElement(\"div\", {\n        ref: composeRef(resizeObserverRef, ref, motionRef),\n        className: cls,\n        style: _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n          '--arrow-x': \"\".concat(arrowPos.x || 0, \"px\"),\n          '--arrow-y': \"\".concat(arrowPos.y || 0, \"px\")\n        }, offsetStyle), miscStyle), motionStyle), {}, {\n          boxSizing: 'border-box',\n          zIndex: zIndex\n        }, style),\n        onMouseEnter: onMouseEnter,\n        onMouseLeave: onMouseLeave,\n        onPointerEnter: onPointerEnter,\n        onClick: onClick,\n        onPointerDownCapture: onPointerDownCapture\n      }, arrow && /*#__PURE__*/React.createElement(Arrow, {\n        prefixCls: prefixCls,\n        arrow: arrow,\n        arrowPos: arrowPos,\n        align: align\n      }), /*#__PURE__*/React.createElement(PopupContent, {\n        cache: !open && !fresh\n      }, childNode));\n    });\n  }));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Popup.displayName = 'Popup';\n}\nexport default Popup;","import { fillRef, getNodeRef, supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nvar TriggerWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var children = props.children,\n    getTriggerDOMNode = props.getTriggerDOMNode;\n  var canUseRef = supportRef(children);\n\n  // When use `getTriggerDOMNode`, we should do additional work to get the real dom\n  var setRef = React.useCallback(function (node) {\n    fillRef(ref, getTriggerDOMNode ? getTriggerDOMNode(node) : node);\n  }, [getTriggerDOMNode]);\n  var mergedRef = useComposeRef(setRef, getNodeRef(children));\n  return canUseRef ? /*#__PURE__*/React.cloneElement(children, {\n    ref: mergedRef\n  }) : children;\n});\nif (process.env.NODE_ENV !== 'production') {\n  TriggerWrapper.displayName = 'TriggerWrapper';\n}\nexport default TriggerWrapper;","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import * as React from 'react';\nfunction toArray(val) {\n  return val ? Array.isArray(val) ? val : [val] : [];\n}\nexport default function useAction(mobile, action, showAction, hideAction) {\n  return React.useMemo(function () {\n    var mergedShowAction = toArray(showAction !== null && showAction !== void 0 ? showAction : action);\n    var mergedHideAction = toArray(hideAction !== null && hideAction !== void 0 ? hideAction : action);\n    var showActionSet = new Set(mergedShowAction);\n    var hideActionSet = new Set(mergedHideAction);\n    if (mobile) {\n      if (showActionSet.has('hover')) {\n        showActionSet.delete('hover');\n        showActionSet.add('click');\n      }\n      if (hideActionSet.has('hover')) {\n        hideActionSet.delete('hover');\n        hideActionSet.add('click');\n      }\n    }\n    return [showActionSet, hideActionSet];\n  }, [mobile, action, showAction, hideAction]);\n}","export default (function (element) {\n  if (!element) {\n    return false;\n  }\n  if (element instanceof Element) {\n    if (element.offsetParent) {\n      return true;\n    }\n    if (element.getBBox) {\n      var _getBBox = element.getBBox(),\n        width = _getBBox.width,\n        height = _getBBox.height;\n      if (width || height) {\n        return true;\n      }\n    }\n    if (element.getBoundingClientRect) {\n      var _element$getBoundingC = element.getBoundingClientRect(),\n        _width = _element$getBoundingC.width,\n        _height = _element$getBoundingC.height;\n      if (_width || _height) {\n        return true;\n      }\n    }\n  }\n  return false;\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nfunction isPointsEq() {\n  var a1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var isAlignPoint = arguments.length > 2 ? arguments[2] : undefined;\n  if (isAlignPoint) {\n    return a1[0] === a2[0];\n  }\n  return a1[0] === a2[0] && a1[1] === a2[1];\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n  var points = align.points;\n  var placements = Object.keys(builtinPlacements);\n  for (var i = 0; i < placements.length; i += 1) {\n    var _builtinPlacements$pl;\n    var placement = placements[i];\n    if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points, isAlignPoint)) {\n      return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n    }\n  }\n  return '';\n}\n\n/** @deprecated We should not use this if we can refactor all deps */\nexport function getMotion(prefixCls, motion, animation, transitionName) {\n  if (motion) {\n    return motion;\n  }\n  if (animation) {\n    return {\n      motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n    };\n  }\n  if (transitionName) {\n    return {\n      motionName: transitionName\n    };\n  }\n  return null;\n}\nexport function getWin(ele) {\n  return ele.ownerDocument.defaultView;\n}\n\n/**\n * Get all the scrollable parent elements of the element\n * @param ele       The element to be detected\n * @param areaOnly  Only return the parent which will cut visible area\n */\nexport function collectScroller(ele) {\n  var scrollerList = [];\n  var current = ele === null || ele === void 0 ? void 0 : ele.parentElement;\n  var scrollStyle = ['hidden', 'scroll', 'clip', 'auto'];\n  while (current) {\n    var _getWin$getComputedSt = getWin(current).getComputedStyle(current),\n      overflowX = _getWin$getComputedSt.overflowX,\n      overflowY = _getWin$getComputedSt.overflowY,\n      overflow = _getWin$getComputedSt.overflow;\n    if ([overflowX, overflowY, overflow].some(function (o) {\n      return scrollStyle.includes(o);\n    })) {\n      scrollerList.push(current);\n    }\n    current = current.parentElement;\n  }\n  return scrollerList;\n}\nexport function toNum(num) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  return Number.isNaN(num) ? defaultValue : num;\n}\nfunction getPxValue(val) {\n  return toNum(parseFloat(val), 0);\n}\n/**\n *\n *\n *  **************************************\n *  *              Border                *\n *  *     **************************     *\n *  *     *                  *     *     *\n *  *  B  *                  *  S  *  B  *\n *  *  o  *                  *  c  *  o  *\n *  *  r  *      Content     *  r  *  r  *\n *  *  d  *                  *  o  *  d  *\n *  *  e  *                  *  l  *  e  *\n *  *  r  ********************  l  *  r  *\n *  *     *        Scroll          *     *\n *  *     **************************     *\n *  *              Border                *\n *  **************************************\n *\n */\n/**\n * Get visible area of element\n */\nexport function getVisibleArea(initArea, scrollerList) {\n  var visibleArea = _objectSpread({}, initArea);\n  (scrollerList || []).forEach(function (ele) {\n    if (ele instanceof HTMLBodyElement || ele instanceof HTMLHtmlElement) {\n      return;\n    }\n\n    // Skip if static position which will not affect visible area\n    var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele),\n      overflow = _getWin$getComputedSt2.overflow,\n      overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin,\n      borderTopWidth = _getWin$getComputedSt2.borderTopWidth,\n      borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth,\n      borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth,\n      borderRightWidth = _getWin$getComputedSt2.borderRightWidth;\n    var eleRect = ele.getBoundingClientRect();\n    var eleOutHeight = ele.offsetHeight,\n      eleInnerHeight = ele.clientHeight,\n      eleOutWidth = ele.offsetWidth,\n      eleInnerWidth = ele.clientWidth;\n    var borderTopNum = getPxValue(borderTopWidth);\n    var borderBottomNum = getPxValue(borderBottomWidth);\n    var borderLeftNum = getPxValue(borderLeftWidth);\n    var borderRightNum = getPxValue(borderRightWidth);\n    var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1000) / 1000);\n    var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1000) / 1000);\n\n    // Original visible area\n    var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX;\n    var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY;\n\n    // Cut border size\n    var scaledBorderTopWidth = borderTopNum * scaleY;\n    var scaledBorderBottomWidth = borderBottomNum * scaleY;\n    var scaledBorderLeftWidth = borderLeftNum * scaleX;\n    var scaledBorderRightWidth = borderRightNum * scaleX;\n\n    // Clip margin\n    var clipMarginWidth = 0;\n    var clipMarginHeight = 0;\n    if (overflow === 'clip') {\n      var clipNum = getPxValue(overflowClipMargin);\n      clipMarginWidth = clipNum * scaleX;\n      clipMarginHeight = clipNum * scaleY;\n    }\n\n    // Region\n    var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth;\n    var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight;\n    var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth;\n    var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight;\n    visibleArea.left = Math.max(visibleArea.left, eleLeft);\n    visibleArea.top = Math.max(visibleArea.top, eleTop);\n    visibleArea.right = Math.min(visibleArea.right, eleRight);\n    visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom);\n  });\n  return visibleArea;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { collectScroller, getVisibleArea, getWin, toNum } from \"../util\";\nfunction getUnitOffset(size) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var offsetStr = \"\".concat(offset);\n  var cells = offsetStr.match(/^(.*)\\%$/);\n  if (cells) {\n    return size * (parseFloat(cells[1]) / 100);\n  }\n  return parseFloat(offsetStr);\n}\nfunction getNumberOffset(rect, offset) {\n  var _ref = offset || [],\n    _ref2 = _slicedToArray(_ref, 2),\n    offsetX = _ref2[0],\n    offsetY = _ref2[1];\n  return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];\n}\nfunction splitPoints() {\n  var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return [points[0], points[1]];\n}\nfunction getAlignPoint(rect, points) {\n  var topBottom = points[0];\n  var leftRight = points[1];\n  var x;\n  var y;\n\n  // Top & Bottom\n  if (topBottom === 't') {\n    y = rect.y;\n  } else if (topBottom === 'b') {\n    y = rect.y + rect.height;\n  } else {\n    y = rect.y + rect.height / 2;\n  }\n\n  // Left & Right\n  if (leftRight === 'l') {\n    x = rect.x;\n  } else if (leftRight === 'r') {\n    x = rect.x + rect.width;\n  } else {\n    x = rect.x + rect.width / 2;\n  }\n  return {\n    x: x,\n    y: y\n  };\n}\nfunction reversePoints(points, index) {\n  var reverseMap = {\n    t: 'b',\n    b: 't',\n    l: 'r',\n    r: 'l'\n  };\n  return points.map(function (point, i) {\n    if (i === index) {\n      return reverseMap[point] || 'c';\n    }\n    return point;\n  }).join('');\n}\nexport default function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign) {\n  var _React$useState = React.useState({\n      ready: false,\n      offsetX: 0,\n      offsetY: 0,\n      offsetR: 0,\n      offsetB: 0,\n      arrowX: 0,\n      arrowY: 0,\n      scaleX: 1,\n      scaleY: 1,\n      align: builtinPlacements[placement] || {}\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    offsetInfo = _React$useState2[0],\n    setOffsetInfo = _React$useState2[1];\n  var alignCountRef = React.useRef(0);\n  var scrollerList = React.useMemo(function () {\n    if (!popupEle) {\n      return [];\n    }\n    return collectScroller(popupEle);\n  }, [popupEle]);\n\n  // ========================= Flip ==========================\n  // We will memo flip info.\n  // If size change to make flip, it will memo the flip info and use it in next align.\n  var prevFlipRef = React.useRef({});\n  var resetFlipCache = function resetFlipCache() {\n    prevFlipRef.current = {};\n  };\n  if (!open) {\n    resetFlipCache();\n  }\n\n  // ========================= Align =========================\n  var onAlign = useEvent(function () {\n    if (popupEle && target && open) {\n      var _popupElement$parentE, _popupRect$x, _popupRect$y, _popupElement$parentE2;\n      var popupElement = popupEle;\n      var doc = popupElement.ownerDocument;\n      var win = getWin(popupElement);\n      var _win$getComputedStyle = win.getComputedStyle(popupElement),\n        width = _win$getComputedStyle.width,\n        height = _win$getComputedStyle.height,\n        popupPosition = _win$getComputedStyle.position;\n      var originLeft = popupElement.style.left;\n      var originTop = popupElement.style.top;\n      var originRight = popupElement.style.right;\n      var originBottom = popupElement.style.bottom;\n      var originOverflow = popupElement.style.overflow;\n\n      // Placement\n      var placementInfo = _objectSpread(_objectSpread({}, builtinPlacements[placement]), popupAlign);\n\n      // placeholder element\n      var placeholderElement = doc.createElement('div');\n      (_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0 || _popupElement$parentE.appendChild(placeholderElement);\n      placeholderElement.style.left = \"\".concat(popupElement.offsetLeft, \"px\");\n      placeholderElement.style.top = \"\".concat(popupElement.offsetTop, \"px\");\n      placeholderElement.style.position = popupPosition;\n      placeholderElement.style.height = \"\".concat(popupElement.offsetHeight, \"px\");\n      placeholderElement.style.width = \"\".concat(popupElement.offsetWidth, \"px\");\n\n      // Reset first\n      popupElement.style.left = '0';\n      popupElement.style.top = '0';\n      popupElement.style.right = 'auto';\n      popupElement.style.bottom = 'auto';\n      popupElement.style.overflow = 'hidden';\n\n      // Calculate align style, we should consider `transform` case\n      var targetRect;\n      if (Array.isArray(target)) {\n        targetRect = {\n          x: target[0],\n          y: target[1],\n          width: 0,\n          height: 0\n        };\n      } else {\n        var _rect$x, _rect$y;\n        var rect = target.getBoundingClientRect();\n        rect.x = (_rect$x = rect.x) !== null && _rect$x !== void 0 ? _rect$x : rect.left;\n        rect.y = (_rect$y = rect.y) !== null && _rect$y !== void 0 ? _rect$y : rect.top;\n        targetRect = {\n          x: rect.x,\n          y: rect.y,\n          width: rect.width,\n          height: rect.height\n        };\n      }\n      var popupRect = popupElement.getBoundingClientRect();\n      popupRect.x = (_popupRect$x = popupRect.x) !== null && _popupRect$x !== void 0 ? _popupRect$x : popupRect.left;\n      popupRect.y = (_popupRect$y = popupRect.y) !== null && _popupRect$y !== void 0 ? _popupRect$y : popupRect.top;\n      var _doc$documentElement = doc.documentElement,\n        clientWidth = _doc$documentElement.clientWidth,\n        clientHeight = _doc$documentElement.clientHeight,\n        scrollWidth = _doc$documentElement.scrollWidth,\n        scrollHeight = _doc$documentElement.scrollHeight,\n        scrollTop = _doc$documentElement.scrollTop,\n        scrollLeft = _doc$documentElement.scrollLeft;\n      var popupHeight = popupRect.height;\n      var popupWidth = popupRect.width;\n      var targetHeight = targetRect.height;\n      var targetWidth = targetRect.width;\n\n      // Get bounding of visible area\n      var visibleRegion = {\n        left: 0,\n        top: 0,\n        right: clientWidth,\n        bottom: clientHeight\n      };\n      var scrollRegion = {\n        left: -scrollLeft,\n        top: -scrollTop,\n        right: scrollWidth - scrollLeft,\n        bottom: scrollHeight - scrollTop\n      };\n      var htmlRegion = placementInfo.htmlRegion;\n      var VISIBLE = 'visible';\n      var VISIBLE_FIRST = 'visibleFirst';\n      if (htmlRegion !== 'scroll' && htmlRegion !== VISIBLE_FIRST) {\n        htmlRegion = VISIBLE;\n      }\n      var isVisibleFirst = htmlRegion === VISIBLE_FIRST;\n      var scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);\n      var visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);\n      var visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;\n\n      // When set to `visibleFirst`,\n      // the check `adjust` logic will use `visibleRegion` for check first.\n      var adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;\n\n      // Record right & bottom align data\n      popupElement.style.left = 'auto';\n      popupElement.style.top = 'auto';\n      popupElement.style.right = '0';\n      popupElement.style.bottom = '0';\n      var popupMirrorRect = popupElement.getBoundingClientRect();\n\n      // Reset back\n      popupElement.style.left = originLeft;\n      popupElement.style.top = originTop;\n      popupElement.style.right = originRight;\n      popupElement.style.bottom = originBottom;\n      popupElement.style.overflow = originOverflow;\n      (_popupElement$parentE2 = popupElement.parentElement) === null || _popupElement$parentE2 === void 0 || _popupElement$parentE2.removeChild(placeholderElement);\n\n      // Calculate scale\n      var _scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);\n      var _scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1000) / 1000);\n\n      // No need to align since it's not visible in view\n      if (_scaleX === 0 || _scaleY === 0 || isDOM(target) && !isVisible(target)) {\n        return;\n      }\n\n      // Offset\n      var offset = placementInfo.offset,\n        targetOffset = placementInfo.targetOffset;\n      var _getNumberOffset = getNumberOffset(popupRect, offset),\n        _getNumberOffset2 = _slicedToArray(_getNumberOffset, 2),\n        popupOffsetX = _getNumberOffset2[0],\n        popupOffsetY = _getNumberOffset2[1];\n      var _getNumberOffset3 = getNumberOffset(targetRect, targetOffset),\n        _getNumberOffset4 = _slicedToArray(_getNumberOffset3, 2),\n        targetOffsetX = _getNumberOffset4[0],\n        targetOffsetY = _getNumberOffset4[1];\n      targetRect.x -= targetOffsetX;\n      targetRect.y -= targetOffsetY;\n\n      // Points\n      var _ref3 = placementInfo.points || [],\n        _ref4 = _slicedToArray(_ref3, 2),\n        popupPoint = _ref4[0],\n        targetPoint = _ref4[1];\n      var targetPoints = splitPoints(targetPoint);\n      var popupPoints = splitPoints(popupPoint);\n      var targetAlignPoint = getAlignPoint(targetRect, targetPoints);\n      var popupAlignPoint = getAlignPoint(popupRect, popupPoints);\n\n      // Real align info may not same as origin one\n      var nextAlignInfo = _objectSpread({}, placementInfo);\n\n      // Next Offset\n      var nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;\n      var nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;\n\n      // ============== Intersection ===============\n      // Get area by position. Used for check if flip area is better\n      function getIntersectionVisibleArea(offsetX, offsetY) {\n        var area = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : visibleArea;\n        var l = popupRect.x + offsetX;\n        var t = popupRect.y + offsetY;\n        var r = l + popupWidth;\n        var b = t + popupHeight;\n        var visibleL = Math.max(l, area.left);\n        var visibleT = Math.max(t, area.top);\n        var visibleR = Math.min(r, area.right);\n        var visibleB = Math.min(b, area.bottom);\n        return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));\n      }\n      var originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY);\n\n      // As `visibleFirst`, we prepare this for check\n      var originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea);\n\n      // ========================== Overflow ===========================\n      var targetAlignPointTL = getAlignPoint(targetRect, ['t', 'l']);\n      var popupAlignPointTL = getAlignPoint(popupRect, ['t', 'l']);\n      var targetAlignPointBR = getAlignPoint(targetRect, ['b', 'r']);\n      var popupAlignPointBR = getAlignPoint(popupRect, ['b', 'r']);\n      var overflow = placementInfo.overflow || {};\n      var adjustX = overflow.adjustX,\n        adjustY = overflow.adjustY,\n        shiftX = overflow.shiftX,\n        shiftY = overflow.shiftY;\n      var supportAdjust = function supportAdjust(val) {\n        if (typeof val === 'boolean') {\n          return val;\n        }\n        return val >= 0;\n      };\n\n      // Prepare position\n      var nextPopupY;\n      var nextPopupBottom;\n      var nextPopupX;\n      var nextPopupRight;\n      function syncNextPopupPosition() {\n        nextPopupY = popupRect.y + nextOffsetY;\n        nextPopupBottom = nextPopupY + popupHeight;\n        nextPopupX = popupRect.x + nextOffsetX;\n        nextPopupRight = nextPopupX + popupWidth;\n      }\n      syncNextPopupPosition();\n\n      // >>>>>>>>>> Top & Bottom\n      var needAdjustY = supportAdjust(adjustY);\n      var sameTB = popupPoints[0] === targetPoints[0];\n\n      // Bottom to Top\n      if (needAdjustY && popupPoints[0] === 't' && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {\n        var tmpNextOffsetY = nextOffsetY;\n        if (sameTB) {\n          tmpNextOffsetY -= popupHeight - targetHeight;\n        } else {\n          tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;\n        }\n        var newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n        var newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n        if (\n        // Of course use larger one\n        newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n        // Choose recommend one\n        newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n          prevFlipRef.current.bt = true;\n          nextOffsetY = tmpNextOffsetY;\n          popupOffsetY = -popupOffsetY;\n          nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n        } else {\n          prevFlipRef.current.bt = false;\n        }\n      }\n\n      // Top to Bottom\n      if (needAdjustY && popupPoints[0] === 'b' && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {\n        var _tmpNextOffsetY = nextOffsetY;\n        if (sameTB) {\n          _tmpNextOffsetY += popupHeight - targetHeight;\n        } else {\n          _tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;\n        }\n        var _newVisibleArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY);\n        var _newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY, visibleRegionArea);\n        if (\n        // Of course use larger one\n        _newVisibleArea > originIntersectionVisibleArea || _newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n        // Choose recommend one\n        _newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n          prevFlipRef.current.tb = true;\n          nextOffsetY = _tmpNextOffsetY;\n          popupOffsetY = -popupOffsetY;\n          nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n        } else {\n          prevFlipRef.current.tb = false;\n        }\n      }\n\n      // >>>>>>>>>> Left & Right\n      var needAdjustX = supportAdjust(adjustX);\n\n      // >>>>> Flip\n      var sameLR = popupPoints[1] === targetPoints[1];\n\n      // Right to Left\n      if (needAdjustX && popupPoints[1] === 'l' && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {\n        var tmpNextOffsetX = nextOffsetX;\n        if (sameLR) {\n          tmpNextOffsetX -= popupWidth - targetWidth;\n        } else {\n          tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;\n        }\n        var _newVisibleArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n        var _newVisibleRecommendArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n        if (\n        // Of course use larger one\n        _newVisibleArea2 > originIntersectionVisibleArea || _newVisibleArea2 === originIntersectionVisibleArea && (!isVisibleFirst ||\n        // Choose recommend one\n        _newVisibleRecommendArea2 >= originIntersectionRecommendArea)) {\n          prevFlipRef.current.rl = true;\n          nextOffsetX = tmpNextOffsetX;\n          popupOffsetX = -popupOffsetX;\n          nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n        } else {\n          prevFlipRef.current.rl = false;\n        }\n      }\n\n      // Left to Right\n      if (needAdjustX && popupPoints[1] === 'r' && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {\n        var _tmpNextOffsetX = nextOffsetX;\n        if (sameLR) {\n          _tmpNextOffsetX += popupWidth - targetWidth;\n        } else {\n          _tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;\n        }\n        var _newVisibleArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY);\n        var _newVisibleRecommendArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n        if (\n        // Of course use larger one\n        _newVisibleArea3 > originIntersectionVisibleArea || _newVisibleArea3 === originIntersectionVisibleArea && (!isVisibleFirst ||\n        // Choose recommend one\n        _newVisibleRecommendArea3 >= originIntersectionRecommendArea)) {\n          prevFlipRef.current.lr = true;\n          nextOffsetX = _tmpNextOffsetX;\n          popupOffsetX = -popupOffsetX;\n          nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n        } else {\n          prevFlipRef.current.lr = false;\n        }\n      }\n\n      // ============================ Shift ============================\n      syncNextPopupPosition();\n      var numShiftX = shiftX === true ? 0 : shiftX;\n      if (typeof numShiftX === 'number') {\n        // Left\n        if (nextPopupX < visibleRegionArea.left) {\n          nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;\n          if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {\n            nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;\n          }\n        }\n\n        // Right\n        if (nextPopupRight > visibleRegionArea.right) {\n          nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;\n          if (targetRect.x > visibleRegionArea.right - numShiftX) {\n            nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;\n          }\n        }\n      }\n      var numShiftY = shiftY === true ? 0 : shiftY;\n      if (typeof numShiftY === 'number') {\n        // Top\n        if (nextPopupY < visibleRegionArea.top) {\n          nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;\n\n          // When target if far away from visible area\n          // Stop shift\n          if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {\n            nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;\n          }\n        }\n\n        // Bottom\n        if (nextPopupBottom > visibleRegionArea.bottom) {\n          nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;\n          if (targetRect.y > visibleRegionArea.bottom - numShiftY) {\n            nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;\n          }\n        }\n      }\n\n      // ============================ Arrow ============================\n      // Arrow center align\n      var popupLeft = popupRect.x + nextOffsetX;\n      var popupRight = popupLeft + popupWidth;\n      var popupTop = popupRect.y + nextOffsetY;\n      var popupBottom = popupTop + popupHeight;\n      var targetLeft = targetRect.x;\n      var targetRight = targetLeft + targetWidth;\n      var targetTop = targetRect.y;\n      var targetBottom = targetTop + targetHeight;\n      var maxLeft = Math.max(popupLeft, targetLeft);\n      var minRight = Math.min(popupRight, targetRight);\n      var xCenter = (maxLeft + minRight) / 2;\n      var nextArrowX = xCenter - popupLeft;\n      var maxTop = Math.max(popupTop, targetTop);\n      var minBottom = Math.min(popupBottom, targetBottom);\n      var yCenter = (maxTop + minBottom) / 2;\n      var nextArrowY = yCenter - popupTop;\n      onPopupAlign === null || onPopupAlign === void 0 || onPopupAlign(popupEle, nextAlignInfo);\n\n      // Additional calculate right & bottom position\n      var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);\n      var offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);\n      if (_scaleX === 1) {\n        nextOffsetX = Math.round(nextOffsetX);\n        offsetX4Right = Math.round(offsetX4Right);\n      }\n      if (_scaleY === 1) {\n        nextOffsetY = Math.round(nextOffsetY);\n        offsetY4Bottom = Math.round(offsetY4Bottom);\n      }\n      var nextOffsetInfo = {\n        ready: true,\n        offsetX: nextOffsetX / _scaleX,\n        offsetY: nextOffsetY / _scaleY,\n        offsetR: offsetX4Right / _scaleX,\n        offsetB: offsetY4Bottom / _scaleY,\n        arrowX: nextArrowX / _scaleX,\n        arrowY: nextArrowY / _scaleY,\n        scaleX: _scaleX,\n        scaleY: _scaleY,\n        align: nextAlignInfo\n      };\n      setOffsetInfo(nextOffsetInfo);\n    }\n  });\n  var triggerAlign = function triggerAlign() {\n    alignCountRef.current += 1;\n    var id = alignCountRef.current;\n\n    // Merge all align requirement into one frame\n    Promise.resolve().then(function () {\n      if (alignCountRef.current === id) {\n        onAlign();\n      }\n    });\n  };\n\n  // Reset ready status when placement & open changed\n  var resetReady = function resetReady() {\n    setOffsetInfo(function (ori) {\n      return _objectSpread(_objectSpread({}, ori), {}, {\n        ready: false\n      });\n    });\n  };\n  useLayoutEffect(resetReady, [placement]);\n  useLayoutEffect(function () {\n    if (!open) {\n      resetReady();\n    }\n  }, [open]);\n  return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"children\", \"action\", \"showAction\", \"hideAction\", \"popupVisible\", \"defaultPopupVisible\", \"onPopupVisibleChange\", \"afterPopupVisibleChange\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"focusDelay\", \"blurDelay\", \"mask\", \"maskClosable\", \"getPopupContainer\", \"forceRender\", \"autoDestroy\", \"destroyPopupOnHide\", \"popup\", \"popupClassName\", \"popupStyle\", \"popupPlacement\", \"builtinPlacements\", \"popupAlign\", \"zIndex\", \"stretch\", \"getPopupClassNameFromAlign\", \"fresh\", \"alignPoint\", \"onPopupClick\", \"onPopupAlign\", \"arrow\", \"popupMotion\", \"maskMotion\", \"popupTransitionName\", \"popupAnimation\", \"maskTransitionName\", \"maskAnimation\", \"className\", \"getTriggerDOMNode\"];\nimport Portal from '@rc-component/portal';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport * as React from 'react';\nimport Popup from \"./Popup\";\nimport TriggerWrapper from \"./TriggerWrapper\";\nimport TriggerContext from \"./context\";\nimport useAction from \"./hooks/useAction\";\nimport useAlign from \"./hooks/useAlign\";\nimport useWatch from \"./hooks/useWatch\";\nimport useWinClick from \"./hooks/useWinClick\";\nimport { getAlignPopupClassName, getMotion } from \"./util\";\n\n// Removed Props List\n// Seems this can be auto\n// getDocument?: (element?: HTMLElement) => Document;\n\n// New version will not wrap popup with `rc-trigger-popup-content` when multiple children\n\nexport function generateTrigger() {\n  var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Portal;\n  var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {\n    var _props$prefixCls = props.prefixCls,\n      prefixCls = _props$prefixCls === void 0 ? 'rc-trigger-popup' : _props$prefixCls,\n      children = props.children,\n      _props$action = props.action,\n      action = _props$action === void 0 ? 'hover' : _props$action,\n      showAction = props.showAction,\n      hideAction = props.hideAction,\n      popupVisible = props.popupVisible,\n      defaultPopupVisible = props.defaultPopupVisible,\n      onPopupVisibleChange = props.onPopupVisibleChange,\n      afterPopupVisibleChange = props.afterPopupVisibleChange,\n      mouseEnterDelay = props.mouseEnterDelay,\n      _props$mouseLeaveDela = props.mouseLeaveDelay,\n      mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n      focusDelay = props.focusDelay,\n      blurDelay = props.blurDelay,\n      mask = props.mask,\n      _props$maskClosable = props.maskClosable,\n      maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n      getPopupContainer = props.getPopupContainer,\n      forceRender = props.forceRender,\n      autoDestroy = props.autoDestroy,\n      destroyPopupOnHide = props.destroyPopupOnHide,\n      popup = props.popup,\n      popupClassName = props.popupClassName,\n      popupStyle = props.popupStyle,\n      popupPlacement = props.popupPlacement,\n      _props$builtinPlaceme = props.builtinPlacements,\n      builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme,\n      popupAlign = props.popupAlign,\n      zIndex = props.zIndex,\n      stretch = props.stretch,\n      getPopupClassNameFromAlign = props.getPopupClassNameFromAlign,\n      fresh = props.fresh,\n      alignPoint = props.alignPoint,\n      onPopupClick = props.onPopupClick,\n      onPopupAlign = props.onPopupAlign,\n      arrow = props.arrow,\n      popupMotion = props.popupMotion,\n      maskMotion = props.maskMotion,\n      popupTransitionName = props.popupTransitionName,\n      popupAnimation = props.popupAnimation,\n      maskTransitionName = props.maskTransitionName,\n      maskAnimation = props.maskAnimation,\n      className = props.className,\n      getTriggerDOMNode = props.getTriggerDOMNode,\n      restProps = _objectWithoutProperties(props, _excluded);\n    var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false;\n\n    // =========================== Mobile ===========================\n    var _React$useState = React.useState(false),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      mobile = _React$useState2[0],\n      setMobile = _React$useState2[1];\n    useLayoutEffect(function () {\n      setMobile(isMobile());\n    }, []);\n\n    // ========================== Context ===========================\n    var subPopupElements = React.useRef({});\n    var parentContext = React.useContext(TriggerContext);\n    var context = React.useMemo(function () {\n      return {\n        registerSubPopup: function registerSubPopup(id, subPopupEle) {\n          subPopupElements.current[id] = subPopupEle;\n          parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, subPopupEle);\n        }\n      };\n    }, [parentContext]);\n\n    // =========================== Popup ============================\n    var id = useId();\n    var _React$useState3 = React.useState(null),\n      _React$useState4 = _slicedToArray(_React$useState3, 2),\n      popupEle = _React$useState4[0],\n      setPopupEle = _React$useState4[1];\n\n    // Used for forwardRef popup. Not use internal\n    var externalPopupRef = React.useRef(null);\n    var setPopupRef = useEvent(function (node) {\n      externalPopupRef.current = node;\n      if (isDOM(node) && popupEle !== node) {\n        setPopupEle(node);\n      }\n      parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node);\n    });\n\n    // =========================== Target ===========================\n    // Use state to control here since `useRef` update not trigger render\n    var _React$useState5 = React.useState(null),\n      _React$useState6 = _slicedToArray(_React$useState5, 2),\n      targetEle = _React$useState6[0],\n      setTargetEle = _React$useState6[1];\n\n    // Used for forwardRef target. Not use internal\n    var externalForwardRef = React.useRef(null);\n    var setTargetRef = useEvent(function (node) {\n      if (isDOM(node) && targetEle !== node) {\n        setTargetEle(node);\n        externalForwardRef.current = node;\n      }\n    });\n\n    // ========================== Children ==========================\n    var child = React.Children.only(children);\n    var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {};\n    var cloneProps = {};\n    var inPopupOrChild = useEvent(function (ele) {\n      var _getShadowRoot, _getShadowRoot2;\n      var childDOM = targetEle;\n      return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = getShadowRoot(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = getShadowRoot(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function (subPopupEle) {\n        return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle;\n      });\n    });\n\n    // =========================== Motion ===========================\n    var mergePopupMotion = getMotion(prefixCls, popupMotion, popupAnimation, popupTransitionName);\n    var mergeMaskMotion = getMotion(prefixCls, maskMotion, maskAnimation, maskTransitionName);\n\n    // ============================ Open ============================\n    var _React$useState7 = React.useState(defaultPopupVisible || false),\n      _React$useState8 = _slicedToArray(_React$useState7, 2),\n      internalOpen = _React$useState8[0],\n      setInternalOpen = _React$useState8[1];\n\n    // Render still use props as first priority\n    var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen;\n\n    // We use effect sync here in case `popupVisible` back to `undefined`\n    var setMergedOpen = useEvent(function (nextOpen) {\n      if (popupVisible === undefined) {\n        setInternalOpen(nextOpen);\n      }\n    });\n    useLayoutEffect(function () {\n      setInternalOpen(popupVisible || false);\n    }, [popupVisible]);\n    var openRef = React.useRef(mergedOpen);\n    openRef.current = mergedOpen;\n    var lastTriggerRef = React.useRef([]);\n    lastTriggerRef.current = [];\n    var internalTriggerOpen = useEvent(function (nextOpen) {\n      var _lastTriggerRef$curre;\n      setMergedOpen(nextOpen);\n\n      // Enter or Pointer will both trigger open state change\n      // We only need take one to avoid duplicated change event trigger\n      // Use `lastTriggerRef` to record last open type\n      if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) {\n        lastTriggerRef.current.push(nextOpen);\n        onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen);\n      }\n    });\n\n    // Trigger for delay\n    var delayRef = React.useRef();\n    var clearDelay = function clearDelay() {\n      clearTimeout(delayRef.current);\n    };\n    var triggerOpen = function triggerOpen(nextOpen) {\n      var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      clearDelay();\n      if (delay === 0) {\n        internalTriggerOpen(nextOpen);\n      } else {\n        delayRef.current = setTimeout(function () {\n          internalTriggerOpen(nextOpen);\n        }, delay * 1000);\n      }\n    };\n    React.useEffect(function () {\n      return clearDelay;\n    }, []);\n\n    // ========================== Motion ============================\n    var _React$useState9 = React.useState(false),\n      _React$useState10 = _slicedToArray(_React$useState9, 2),\n      inMotion = _React$useState10[0],\n      setInMotion = _React$useState10[1];\n    useLayoutEffect(function (firstMount) {\n      if (!firstMount || mergedOpen) {\n        setInMotion(true);\n      }\n    }, [mergedOpen]);\n    var _React$useState11 = React.useState(null),\n      _React$useState12 = _slicedToArray(_React$useState11, 2),\n      motionPrepareResolve = _React$useState12[0],\n      setMotionPrepareResolve = _React$useState12[1];\n\n    // =========================== Align ============================\n    var _React$useState13 = React.useState(null),\n      _React$useState14 = _slicedToArray(_React$useState13, 2),\n      mousePos = _React$useState14[0],\n      setMousePos = _React$useState14[1];\n    var setMousePosByEvent = function setMousePosByEvent(event) {\n      setMousePos([event.clientX, event.clientY]);\n    };\n    var _useAlign = useAlign(mergedOpen, popupEle, alignPoint && mousePos !== null ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign),\n      _useAlign2 = _slicedToArray(_useAlign, 11),\n      ready = _useAlign2[0],\n      offsetX = _useAlign2[1],\n      offsetY = _useAlign2[2],\n      offsetR = _useAlign2[3],\n      offsetB = _useAlign2[4],\n      arrowX = _useAlign2[5],\n      arrowY = _useAlign2[6],\n      scaleX = _useAlign2[7],\n      scaleY = _useAlign2[8],\n      alignInfo = _useAlign2[9],\n      onAlign = _useAlign2[10];\n    var _useAction = useAction(mobile, action, showAction, hideAction),\n      _useAction2 = _slicedToArray(_useAction, 2),\n      showActions = _useAction2[0],\n      hideActions = _useAction2[1];\n    var clickToShow = showActions.has('click');\n    var clickToHide = hideActions.has('click') || hideActions.has('contextMenu');\n    var triggerAlign = useEvent(function () {\n      if (!inMotion) {\n        onAlign();\n      }\n    });\n    var onScroll = function onScroll() {\n      if (openRef.current && alignPoint && clickToHide) {\n        triggerOpen(false);\n      }\n    };\n    useWatch(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);\n    useLayoutEffect(function () {\n      triggerAlign();\n    }, [mousePos, popupPlacement]);\n\n    // When no builtinPlacements and popupAlign changed\n    useLayoutEffect(function () {\n      if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) {\n        triggerAlign();\n      }\n    }, [JSON.stringify(popupAlign)]);\n    var alignedClassName = React.useMemo(function () {\n      var baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);\n      return classNames(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));\n    }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);\n\n    // ============================ Refs ============================\n    React.useImperativeHandle(ref, function () {\n      return {\n        nativeElement: externalForwardRef.current,\n        popupElement: externalPopupRef.current,\n        forceAlign: triggerAlign\n      };\n    });\n\n    // ========================== Stretch ===========================\n    var _React$useState15 = React.useState(0),\n      _React$useState16 = _slicedToArray(_React$useState15, 2),\n      targetWidth = _React$useState16[0],\n      setTargetWidth = _React$useState16[1];\n    var _React$useState17 = React.useState(0),\n      _React$useState18 = _slicedToArray(_React$useState17, 2),\n      targetHeight = _React$useState18[0],\n      setTargetHeight = _React$useState18[1];\n    var syncTargetSize = function syncTargetSize() {\n      if (stretch && targetEle) {\n        var rect = targetEle.getBoundingClientRect();\n        setTargetWidth(rect.width);\n        setTargetHeight(rect.height);\n      }\n    };\n    var onTargetResize = function onTargetResize() {\n      syncTargetSize();\n      triggerAlign();\n    };\n\n    // ========================== Motion ============================\n    var onVisibleChanged = function onVisibleChanged(visible) {\n      setInMotion(false);\n      onAlign();\n      afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible);\n    };\n\n    // We will trigger align when motion is in prepare\n    var onPrepare = function onPrepare() {\n      return new Promise(function (resolve) {\n        syncTargetSize();\n        setMotionPrepareResolve(function () {\n          return resolve;\n        });\n      });\n    };\n    useLayoutEffect(function () {\n      if (motionPrepareResolve) {\n        onAlign();\n        motionPrepareResolve();\n        setMotionPrepareResolve(null);\n      }\n    }, [motionPrepareResolve]);\n\n    // =========================== Action ===========================\n    /**\n     * Util wrapper for trigger action\n     */\n    function wrapperAction(eventName, nextOpen, delay, preEvent) {\n      cloneProps[eventName] = function (event) {\n        var _originChildProps$eve;\n        preEvent === null || preEvent === void 0 || preEvent(event);\n        triggerOpen(nextOpen, delay);\n\n        // Pass to origin\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        (_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));\n      };\n    }\n\n    // ======================= Action: Click ========================\n    if (clickToShow || clickToHide) {\n      cloneProps.onClick = function (event) {\n        var _originChildProps$onC;\n        if (openRef.current && clickToHide) {\n          triggerOpen(false);\n        } else if (!openRef.current && clickToShow) {\n          setMousePosByEvent(event);\n          triggerOpen(true);\n        }\n\n        // Pass to origin\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n        (_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));\n      };\n    }\n\n    // Click to hide is special action since click popup element should not hide\n    var onPopupPointerDown = useWinClick(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);\n\n    // ======================= Action: Hover ========================\n    var hoverToShow = showActions.has('hover');\n    var hoverToHide = hideActions.has('hover');\n    var onPopupMouseEnter;\n    var onPopupMouseLeave;\n    if (hoverToShow) {\n      // Compatible with old browser which not support pointer event\n      wrapperAction('onMouseEnter', true, mouseEnterDelay, function (event) {\n        setMousePosByEvent(event);\n      });\n      wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) {\n        setMousePosByEvent(event);\n      });\n      onPopupMouseEnter = function onPopupMouseEnter(event) {\n        // Only trigger re-open when popup is visible\n        if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) {\n          triggerOpen(true, mouseEnterDelay);\n        }\n      };\n\n      // Align Point\n      if (alignPoint) {\n        cloneProps.onMouseMove = function (event) {\n          var _originChildProps$onM;\n          // setMousePosByEvent(event);\n          (_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event);\n        };\n      }\n    }\n    if (hoverToHide) {\n      wrapperAction('onMouseLeave', false, mouseLeaveDelay);\n      wrapperAction('onPointerLeave', false, mouseLeaveDelay);\n      onPopupMouseLeave = function onPopupMouseLeave() {\n        triggerOpen(false, mouseLeaveDelay);\n      };\n    }\n\n    // ======================= Action: Focus ========================\n    if (showActions.has('focus')) {\n      wrapperAction('onFocus', true, focusDelay);\n    }\n    if (hideActions.has('focus')) {\n      wrapperAction('onBlur', false, blurDelay);\n    }\n\n    // ==================== Action: ContextMenu =====================\n    if (showActions.has('contextMenu')) {\n      cloneProps.onContextMenu = function (event) {\n        var _originChildProps$onC2;\n        if (openRef.current && hideActions.has('contextMenu')) {\n          triggerOpen(false);\n        } else {\n          setMousePosByEvent(event);\n          triggerOpen(true);\n        }\n        event.preventDefault();\n\n        // Pass to origin\n        for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n          args[_key3 - 1] = arguments[_key3];\n        }\n        (_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));\n      };\n    }\n\n    // ========================= ClassName ==========================\n    if (className) {\n      cloneProps.className = classNames(originChildProps.className, className);\n    }\n\n    // =========================== Render ===========================\n    var mergedChildrenProps = _objectSpread(_objectSpread({}, originChildProps), cloneProps);\n\n    // Pass props into cloneProps for nest usage\n    var passedProps = {};\n    var passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur'];\n    passedEventList.forEach(function (eventName) {\n      if (restProps[eventName]) {\n        passedProps[eventName] = function () {\n          var _mergedChildrenProps$;\n          for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n            args[_key4] = arguments[_key4];\n          }\n          (_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));\n          restProps[eventName].apply(restProps, args);\n        };\n      }\n    });\n\n    // Child Node\n    var triggerNode = /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, mergedChildrenProps), passedProps));\n    var arrowPos = {\n      x: arrowX,\n      y: arrowY\n    };\n    var innerArrow = arrow ? _objectSpread({}, arrow !== true ? arrow : {}) : null;\n\n    // Render\n    return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, {\n      disabled: !mergedOpen,\n      ref: setTargetRef,\n      onResize: onTargetResize\n    }, /*#__PURE__*/React.createElement(TriggerWrapper, {\n      getTriggerDOMNode: getTriggerDOMNode\n    }, triggerNode)), /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n      value: context\n    }, /*#__PURE__*/React.createElement(Popup, {\n      portal: PortalComponent,\n      ref: setPopupRef,\n      prefixCls: prefixCls,\n      popup: popup,\n      className: classNames(popupClassName, alignedClassName),\n      style: popupStyle,\n      target: targetEle,\n      onMouseEnter: onPopupMouseEnter,\n      onMouseLeave: onPopupMouseLeave\n      // https://github.com/ant-design/ant-design/issues/43924\n      ,\n      onPointerEnter: onPopupMouseEnter,\n      zIndex: zIndex\n      // Open\n      ,\n      open: mergedOpen,\n      keepDom: inMotion,\n      fresh: fresh\n      // Click\n      ,\n      onClick: onPopupClick,\n      onPointerDownCapture: onPopupPointerDown\n      // Mask\n      ,\n      mask: mask\n      // Motion\n      ,\n      motion: mergePopupMotion,\n      maskMotion: mergeMaskMotion,\n      onVisibleChanged: onVisibleChanged,\n      onPrepare: onPrepare\n      // Portal\n      ,\n      forceRender: forceRender,\n      autoDestroy: mergedAutoDestroy,\n      getPopupContainer: getPopupContainer\n      // Arrow\n      ,\n      align: alignInfo,\n      arrow: innerArrow,\n      arrowPos: arrowPos\n      // Align\n      ,\n      ready: ready,\n      offsetX: offsetX,\n      offsetY: offsetY,\n      offsetR: offsetR,\n      offsetB: offsetB,\n      onAlign: triggerAlign\n      // Stretch\n      ,\n      stretch: stretch,\n      targetWidth: targetWidth / scaleX,\n      targetHeight: targetHeight / scaleY\n    })));\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    Trigger.displayName = 'Trigger';\n  }\n  return Trigger;\n}\nexport default generateTrigger(Portal);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { collectScroller, getWin } from \"../util\";\nexport default function useWatch(open, target, popup, onAlign, onScroll) {\n  useLayoutEffect(function () {\n    if (open && target && popup) {\n      var targetElement = target;\n      var popupElement = popup;\n      var targetScrollList = collectScroller(targetElement);\n      var popupScrollList = collectScroller(popupElement);\n      var win = getWin(popupElement);\n      var mergedList = new Set([win].concat(_toConsumableArray(targetScrollList), _toConsumableArray(popupScrollList)));\n      function notifyScroll() {\n        onAlign();\n        onScroll();\n      }\n      mergedList.forEach(function (scroller) {\n        scroller.addEventListener('scroll', notifyScroll, {\n          passive: true\n        });\n      });\n      win.addEventListener('resize', notifyScroll, {\n        passive: true\n      });\n\n      // First time always do align\n      onAlign();\n      return function () {\n        mergedList.forEach(function (scroller) {\n          scroller.removeEventListener('scroll', notifyScroll);\n          win.removeEventListener('resize', notifyScroll);\n        });\n      };\n    }\n  }, [open, target, popup]);\n}","import { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport { warning } from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { getWin } from \"../util\";\nexport default function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {\n  var openRef = React.useRef(open);\n  openRef.current = open;\n  var popupPointerDownRef = React.useRef(false);\n\n  // Click to hide is special action since click popup element should not hide\n  React.useEffect(function () {\n    if (clickToHide && popupEle && (!mask || maskClosable)) {\n      var onPointerDown = function onPointerDown() {\n        popupPointerDownRef.current = false;\n      };\n      var onTriggerClose = function onTriggerClose(e) {\n        var _e$composedPath;\n        if (openRef.current && !inPopupOrChild(((_e$composedPath = e.composedPath) === null || _e$composedPath === void 0 || (_e$composedPath = _e$composedPath.call(e)) === null || _e$composedPath === void 0 ? void 0 : _e$composedPath[0]) || e.target) && !popupPointerDownRef.current) {\n          triggerOpen(false);\n        }\n      };\n      var win = getWin(popupEle);\n      win.addEventListener('pointerdown', onPointerDown, true);\n      win.addEventListener('mousedown', onTriggerClose, true);\n      win.addEventListener('contextmenu', onTriggerClose, true);\n\n      // shadow root\n      var targetShadowRoot = getShadowRoot(targetEle);\n      if (targetShadowRoot) {\n        targetShadowRoot.addEventListener('mousedown', onTriggerClose, true);\n        targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true);\n      }\n\n      // Warning if target and popup not in same root\n      if (process.env.NODE_ENV !== 'production') {\n        var _targetEle$getRootNod, _popupEle$getRootNode;\n        var targetRoot = targetEle === null || targetEle === void 0 || (_targetEle$getRootNod = targetEle.getRootNode) === null || _targetEle$getRootNod === void 0 ? void 0 : _targetEle$getRootNod.call(targetEle);\n        var popupRoot = (_popupEle$getRootNode = popupEle.getRootNode) === null || _popupEle$getRootNode === void 0 ? void 0 : _popupEle$getRootNode.call(popupEle);\n        warning(targetRoot === popupRoot, \"trigger element and popup element should in same shadow root.\");\n      }\n      return function () {\n        win.removeEventListener('pointerdown', onPointerDown, true);\n        win.removeEventListener('mousedown', onTriggerClose, true);\n        win.removeEventListener('contextmenu', onTriggerClose, true);\n        if (targetShadowRoot) {\n          targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true);\n          targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true);\n        }\n      };\n    }\n  }, [clickToHide, targetEle, popupEle, mask, maskClosable]);\n  function onPopupPointerDown() {\n    popupPointerDownRef.current = true;\n  }\n  return onPopupPointerDown;\n}","var autoAdjustOverflowTopBottom = {\n  shiftX: 64,\n  adjustY: 1\n};\nvar autoAdjustOverflowLeftRight = {\n  adjustX: 1,\n  shiftY: true\n};\nvar targetOffset = [0, 0];\nexport var placements = {\n  left: {\n    points: ['cr', 'cl'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  },\n  right: {\n    points: ['cl', 'cr'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  top: {\n    points: ['bc', 'tc'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  bottom: {\n    points: ['tc', 'bc'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  leftTop: {\n    points: ['tr', 'tl'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  rightTop: {\n    points: ['tl', 'tr'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  rightBottom: {\n    points: ['bl', 'br'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: autoAdjustOverflowTopBottom,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  leftBottom: {\n    points: ['br', 'bl'],\n    overflow: autoAdjustOverflowLeftRight,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  }\n};\nexport default placements;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"overlayClassName\", \"trigger\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"prefixCls\", \"children\", \"onVisibleChange\", \"afterVisibleChange\", \"transitionName\", \"animation\", \"motion\", \"placement\", \"align\", \"destroyTooltipOnHide\", \"defaultVisible\", \"getTooltipContainer\", \"overlayInnerStyle\", \"arrowContent\", \"overlay\", \"id\", \"showArrow\", \"classNames\", \"styles\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { placements } from \"./placements\";\nimport Popup from \"./Popup\";\nimport useId from \"rc-util/es/hooks/useId\";\nvar Tooltip = function Tooltip(props, ref) {\n  var overlayClassName = props.overlayClassName,\n    _props$trigger = props.trigger,\n    trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n    _props$mouseEnterDela = props.mouseEnterDelay,\n    mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela,\n    _props$mouseLeaveDela = props.mouseLeaveDelay,\n    mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n    overlayStyle = props.overlayStyle,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls,\n    children = props.children,\n    onVisibleChange = props.onVisibleChange,\n    afterVisibleChange = props.afterVisibleChange,\n    transitionName = props.transitionName,\n    animation = props.animation,\n    motion = props.motion,\n    _props$placement = props.placement,\n    placement = _props$placement === void 0 ? 'right' : _props$placement,\n    _props$align = props.align,\n    align = _props$align === void 0 ? {} : _props$align,\n    _props$destroyTooltip = props.destroyTooltipOnHide,\n    destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip,\n    defaultVisible = props.defaultVisible,\n    getTooltipContainer = props.getTooltipContainer,\n    overlayInnerStyle = props.overlayInnerStyle,\n    arrowContent = props.arrowContent,\n    overlay = props.overlay,\n    id = props.id,\n    _props$showArrow = props.showArrow,\n    showArrow = _props$showArrow === void 0 ? true : _props$showArrow,\n    tooltipClassNames = props.classNames,\n    tooltipStyles = props.styles,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var mergedId = useId(id);\n  var triggerRef = useRef(null);\n  useImperativeHandle(ref, function () {\n    return triggerRef.current;\n  });\n  var extraProps = _objectSpread({}, restProps);\n  if ('visible' in props) {\n    extraProps.popupVisible = props.visible;\n  }\n  var getPopupElement = function getPopupElement() {\n    return /*#__PURE__*/React.createElement(Popup, {\n      key: \"content\",\n      prefixCls: prefixCls,\n      id: mergedId,\n      bodyClassName: tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.body,\n      overlayInnerStyle: _objectSpread(_objectSpread({}, overlayInnerStyle), tooltipStyles === null || tooltipStyles === void 0 ? void 0 : tooltipStyles.body)\n    }, overlay);\n  };\n  var getChildren = function getChildren() {\n    var child = React.Children.only(children);\n    var originalProps = (child === null || child === void 0 ? void 0 : child.props) || {};\n    var childProps = _objectSpread(_objectSpread({}, originalProps), {}, {\n      'aria-describedby': overlay ? mergedId : null\n    });\n    return /*#__PURE__*/React.cloneElement(children, childProps);\n  };\n  return /*#__PURE__*/React.createElement(Trigger, _extends({\n    popupClassName: classNames(overlayClassName, tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.root),\n    prefixCls: prefixCls,\n    popup: getPopupElement,\n    action: trigger,\n    builtinPlacements: placements,\n    popupPlacement: placement,\n    ref: triggerRef,\n    popupAlign: align,\n    getPopupContainer: getTooltipContainer,\n    onPopupVisibleChange: onVisibleChange,\n    afterPopupVisibleChange: afterVisibleChange,\n    popupTransitionName: transitionName,\n    popupAnimation: animation,\n    popupMotion: motion,\n    defaultPopupVisible: defaultVisible,\n    autoDestroy: destroyTooltipOnHide,\n    mouseLeaveDelay: mouseLeaveDelay,\n    popupStyle: _objectSpread(_objectSpread({}, overlayStyle), tooltipStyles === null || tooltipStyles === void 0 ? void 0 : tooltipStyles.root),\n    mouseEnterDelay: mouseEnterDelay,\n    arrow: showArrow\n  }, extraProps), getChildren());\n};\nexport default /*#__PURE__*/forwardRef(Tooltip);","import Popup from \"./Popup\";\nimport Tooltip from \"./Tooltip\";\nexport { Popup };\nexport default Tooltip;","import _typeof from \"./typeof.js\";\nfunction _regeneratorRuntime() {\n  \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n  _regeneratorRuntime = function _regeneratorRuntime() {\n    return e;\n  };\n  var t,\n    e = {},\n    r = Object.prototype,\n    n = r.hasOwnProperty,\n    o = Object.defineProperty || function (t, e, r) {\n      t[e] = r.value;\n    },\n    i = \"function\" == typeof Symbol ? Symbol : {},\n    a = i.iterator || \"@@iterator\",\n    c = i.asyncIterator || \"@@asyncIterator\",\n    u = i.toStringTag || \"@@toStringTag\";\n  function define(t, e, r) {\n    return Object.defineProperty(t, e, {\n      value: r,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), t[e];\n  }\n  try {\n    define({}, \"\");\n  } catch (t) {\n    define = function define(t, e, r) {\n      return t[e] = r;\n    };\n  }\n  function wrap(t, e, r, n) {\n    var i = e && e.prototype instanceof Generator ? e : Generator,\n      a = Object.create(i.prototype),\n      c = new Context(n || []);\n    return o(a, \"_invoke\", {\n      value: makeInvokeMethod(t, r, c)\n    }), a;\n  }\n  function tryCatch(t, e, r) {\n    try {\n      return {\n        type: \"normal\",\n        arg: t.call(e, r)\n      };\n    } catch (t) {\n      return {\n        type: \"throw\",\n        arg: t\n      };\n    }\n  }\n  e.wrap = wrap;\n  var h = \"suspendedStart\",\n    l = \"suspendedYield\",\n    f = \"executing\",\n    s = \"completed\",\n    y = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var p = {};\n  define(p, a, function () {\n    return this;\n  });\n  var d = Object.getPrototypeOf,\n    v = d && d(d(values([])));\n  v && v !== r && n.call(v, a) && (p = v);\n  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n  function defineIteratorMethods(t) {\n    [\"next\", \"throw\", \"return\"].forEach(function (e) {\n      define(t, e, function (t) {\n        return this._invoke(e, t);\n      });\n    });\n  }\n  function AsyncIterator(t, e) {\n    function invoke(r, o, i, a) {\n      var c = tryCatch(t[r], t, o);\n      if (\"throw\" !== c.type) {\n        var u = c.arg,\n          h = u.value;\n        return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n          invoke(\"next\", t, i, a);\n        }, function (t) {\n          invoke(\"throw\", t, i, a);\n        }) : e.resolve(h).then(function (t) {\n          u.value = t, i(u);\n        }, function (t) {\n          return invoke(\"throw\", t, i, a);\n        });\n      }\n      a(c.arg);\n    }\n    var r;\n    o(this, \"_invoke\", {\n      value: function value(t, n) {\n        function callInvokeWithMethodAndArg() {\n          return new e(function (e, r) {\n            invoke(t, n, e, r);\n          });\n        }\n        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(e, r, n) {\n    var o = h;\n    return function (i, a) {\n      if (o === f) throw Error(\"Generator is already running\");\n      if (o === s) {\n        if (\"throw\" === i) throw a;\n        return {\n          value: t,\n          done: !0\n        };\n      }\n      for (n.method = i, n.arg = a;;) {\n        var c = n.delegate;\n        if (c) {\n          var u = maybeInvokeDelegate(c, n);\n          if (u) {\n            if (u === y) continue;\n            return u;\n          }\n        }\n        if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n          if (o === h) throw o = s, n.arg;\n          n.dispatchException(n.arg);\n        } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n        o = f;\n        var p = tryCatch(e, r, n);\n        if (\"normal\" === p.type) {\n          if (o = n.done ? s : l, p.arg === y) continue;\n          return {\n            value: p.arg,\n            done: n.done\n          };\n        }\n        \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(e, r) {\n    var n = r.method,\n      o = e.iterator[n];\n    if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n    var i = tryCatch(o, e.iterator, r.arg);\n    if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n    var a = i.arg;\n    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n  }\n  function pushTryEntry(t) {\n    var e = {\n      tryLoc: t[0]\n    };\n    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n  }\n  function resetTryEntry(t) {\n    var e = t.completion || {};\n    e.type = \"normal\", delete e.arg, t.completion = e;\n  }\n  function Context(t) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], t.forEach(pushTryEntry, this), this.reset(!0);\n  }\n  function values(e) {\n    if (e || \"\" === e) {\n      var r = e[a];\n      if (r) return r.call(e);\n      if (\"function\" == typeof e.next) return e;\n      if (!isNaN(e.length)) {\n        var o = -1,\n          i = function next() {\n            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n            return next.value = t, next.done = !0, next;\n          };\n        return i.next = i;\n      }\n    }\n    throw new TypeError(_typeof(e) + \" is not iterable\");\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), o(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n    var e = \"function\" == typeof t && t.constructor;\n    return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n  }, e.mark = function (t) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n  }, e.awrap = function (t) {\n    return {\n      __await: t\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n    return this;\n  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n    void 0 === i && (i = Promise);\n    var a = new AsyncIterator(wrap(t, r, n, o), i);\n    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n      return t.done ? t.value : a.next();\n    });\n  }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n    return this;\n  }), define(g, \"toString\", function () {\n    return \"[object Generator]\";\n  }), e.keys = function (t) {\n    var e = Object(t),\n      r = [];\n    for (var n in e) r.push(n);\n    return r.reverse(), function next() {\n      for (; r.length;) {\n        var t = r.pop();\n        if (t in e) return next.value = t, next.done = !1, next;\n      }\n      return next.done = !0, next;\n    };\n  }, e.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function reset(e) {\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n    },\n    stop: function stop() {\n      this.done = !0;\n      var t = this.tryEntries[0].completion;\n      if (\"throw\" === t.type) throw t.arg;\n      return this.rval;\n    },\n    dispatchException: function dispatchException(e) {\n      if (this.done) throw e;\n      var r = this;\n      function handle(n, o) {\n        return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n      }\n      for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n        var i = this.tryEntries[o],\n          a = i.completion;\n        if (\"root\" === i.tryLoc) return handle(\"end\");\n        if (i.tryLoc <= this.prev) {\n          var c = n.call(i, \"catchLoc\"),\n            u = n.call(i, \"finallyLoc\");\n          if (c && u) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          } else if (c) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n          } else {\n            if (!u) throw Error(\"try statement without catch or finally\");\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(t, e) {\n      for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n        var o = this.tryEntries[r];\n        if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n          var i = o;\n          break;\n        }\n      }\n      i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n      var a = i ? i.completion : {};\n      return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n    },\n    complete: function complete(t, e) {\n      if (\"throw\" === t.type) throw t.arg;\n      return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n    },\n    finish: function finish(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n      }\n    },\n    \"catch\": function _catch(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.tryLoc === t) {\n          var n = r.completion;\n          if (\"throw\" === n.type) {\n            var o = n.arg;\n            resetTryEntry(r);\n          }\n          return o;\n        }\n      }\n      throw Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(e, r, n) {\n      return this.delegate = {\n        iterator: values(e),\n        resultName: r,\n        nextLoc: n\n      }, \"next\" === this.method && (this.arg = t), y;\n    }\n  }, e;\n}\nexport { _regeneratorRuntime as default };","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\nexport { _asyncToGenerator as default };","import warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nexport var HOOK_MARK = 'RC_FORM_INTERNAL_HOOKS';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar warningFunc = function warningFunc() {\n  warning(false, 'Can not find FormContext. Please make sure you wrap Field under Form.');\n};\nvar Context = /*#__PURE__*/React.createContext({\n  getFieldValue: warningFunc,\n  getFieldsValue: warningFunc,\n  getFieldError: warningFunc,\n  getFieldWarning: warningFunc,\n  getFieldsError: warningFunc,\n  isFieldsTouched: warningFunc,\n  isFieldTouched: warningFunc,\n  isFieldValidating: warningFunc,\n  isFieldsValidating: warningFunc,\n  resetFields: warningFunc,\n  setFields: warningFunc,\n  setFieldValue: warningFunc,\n  setFieldsValue: warningFunc,\n  validateFields: warningFunc,\n  submit: warningFunc,\n  getInternalHooks: function getInternalHooks() {\n    warningFunc();\n    return {\n      dispatch: warningFunc,\n      initEntityValue: warningFunc,\n      registerField: warningFunc,\n      useSubscribe: warningFunc,\n      setInitialValues: warningFunc,\n      destroyForm: warningFunc,\n      setCallbacks: warningFunc,\n      registerWatch: warningFunc,\n      getFields: warningFunc,\n      setValidateMessages: warningFunc,\n      setPreserve: warningFunc,\n      getInitialValue: warningFunc\n    };\n  }\n});\nexport default Context;","import * as React from 'react';\nvar ListContext = /*#__PURE__*/React.createContext(null);\nexport default ListContext;","export function toArray(value) {\n  if (value === undefined || value === null) {\n    return [];\n  }\n  return Array.isArray(value) ? value : [value];\n}\nexport function isFormInstance(form) {\n  return form && !!form._init;\n}","export function newMessages() {\n  return {\n    default: 'Validation error on field %s',\n    required: '%s is required',\n    enum: '%s must be one of %s',\n    whitespace: '%s cannot be empty',\n    date: {\n      format: '%s date %s is invalid for format %s',\n      parse: '%s date could not be parsed, %s is invalid ',\n      invalid: '%s date %s is invalid'\n    },\n    types: {\n      string: '%s is not a %s',\n      method: '%s is not a %s (function)',\n      array: '%s is not an %s',\n      object: '%s is not an %s',\n      number: '%s is not a %s',\n      date: '%s is not a %s',\n      boolean: '%s is not a %s',\n      integer: '%s is not an %s',\n      float: '%s is not a %s',\n      regexp: '%s is not a valid %s',\n      email: '%s is not a valid %s',\n      url: '%s is not a valid %s',\n      hex: '%s is not a valid %s'\n    },\n    string: {\n      len: '%s must be exactly %s characters',\n      min: '%s must be at least %s characters',\n      max: '%s cannot be longer than %s characters',\n      range: '%s must be between %s and %s characters'\n    },\n    number: {\n      len: '%s must equal %s',\n      min: '%s cannot be less than %s',\n      max: '%s cannot be greater than %s',\n      range: '%s must be between %s and %s'\n    },\n    array: {\n      len: '%s must be exactly %s in length',\n      min: '%s cannot be less than %s in length',\n      max: '%s cannot be greater than %s in length',\n      range: '%s must be between %s and %s in length'\n    },\n    pattern: {\n      mismatch: '%s value %s does not match pattern %s'\n    },\n    clone: function clone() {\n      var cloned = JSON.parse(JSON.stringify(this));\n      cloned.clone = this.clone;\n      return cloned;\n    }\n  };\n}\nexport var messages = newMessages();","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nfunction _wrapNativeSuper(t) {\n  var r = \"function\" == typeof Map ? new Map() : void 0;\n  return _wrapNativeSuper = function _wrapNativeSuper(t) {\n    if (null === t || !isNativeFunction(t)) return t;\n    if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n    if (void 0 !== r) {\n      if (r.has(t)) return r.get(t);\n      r.set(t, Wrapper);\n    }\n    function Wrapper() {\n      return construct(t, arguments, getPrototypeOf(this).constructor);\n    }\n    return Wrapper.prototype = Object.create(t.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: !1,\n        writable: !0,\n        configurable: !0\n      }\n    }), setPrototypeOf(Wrapper, t);\n  }, _wrapNativeSuper(t);\n}\nexport { _wrapNativeSuper as default };","function _isNativeFunction(t) {\n  try {\n    return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n  } catch (n) {\n    return \"function\" == typeof t;\n  }\n}\nexport { _isNativeFunction as default };","import isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _construct(t, e, r) {\n  if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n  var o = [null];\n  o.push.apply(o, e);\n  var p = new (t.bind.apply(t, o))();\n  return r && setPrototypeOf(p, r.prototype), p;\n}\nexport { _construct as default };","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _wrapNativeSuper from \"@babel/runtime/helpers/esm/wrapNativeSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\n/* eslint no-console:0 */\n\nvar formatRegExp = /%[sdj%]/g;\nexport var warning = function warning() {};\n\n// don't print warning message when in production env or node runtime\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n  warning = function warning(type, errors) {\n    if (typeof console !== 'undefined' && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {\n      if (errors.every(function (e) {\n        return typeof e === 'string';\n      })) {\n        console.warn(type, errors);\n      }\n    }\n  };\n}\nexport function convertFieldsError(errors) {\n  if (!errors || !errors.length) return null;\n  var fields = {};\n  errors.forEach(function (error) {\n    var field = error.field;\n    fields[field] = fields[field] || [];\n    fields[field].push(error);\n  });\n  return fields;\n}\nexport function format(template) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n  var i = 0;\n  var len = args.length;\n  if (typeof template === 'function') {\n    // eslint-disable-next-line prefer-spread\n    return template.apply(null, args);\n  }\n  if (typeof template === 'string') {\n    var str = template.replace(formatRegExp, function (x) {\n      if (x === '%%') {\n        return '%';\n      }\n      if (i >= len) {\n        return x;\n      }\n      switch (x) {\n        case '%s':\n          return String(args[i++]);\n        case '%d':\n          return Number(args[i++]);\n        case '%j':\n          try {\n            return JSON.stringify(args[i++]);\n          } catch (_) {\n            return '[Circular]';\n          }\n          break;\n        default:\n          return x;\n      }\n    });\n    return str;\n  }\n  return template;\n}\nfunction isNativeStringType(type) {\n  return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern';\n}\nexport function isEmptyValue(value, type) {\n  if (value === undefined || value === null) {\n    return true;\n  }\n  if (type === 'array' && Array.isArray(value) && !value.length) {\n    return true;\n  }\n  if (isNativeStringType(type) && typeof value === 'string' && !value) {\n    return true;\n  }\n  return false;\n}\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction asyncParallelArray(arr, func, callback) {\n  var results = [];\n  var total = 0;\n  var arrLength = arr.length;\n  function count(errors) {\n    results.push.apply(results, _toConsumableArray(errors || []));\n    total++;\n    if (total === arrLength) {\n      callback(results);\n    }\n  }\n  arr.forEach(function (a) {\n    func(a, count);\n  });\n}\nfunction asyncSerialArray(arr, func, callback) {\n  var index = 0;\n  var arrLength = arr.length;\n  function next(errors) {\n    if (errors && errors.length) {\n      callback(errors);\n      return;\n    }\n    var original = index;\n    index = index + 1;\n    if (original < arrLength) {\n      func(arr[original], next);\n    } else {\n      callback([]);\n    }\n  }\n  next([]);\n}\nfunction flattenObjArr(objArr) {\n  var ret = [];\n  Object.keys(objArr).forEach(function (k) {\n    ret.push.apply(ret, _toConsumableArray(objArr[k] || []));\n  });\n  return ret;\n}\nexport var AsyncValidationError = /*#__PURE__*/function (_Error) {\n  _inherits(AsyncValidationError, _Error);\n  var _super = _createSuper(AsyncValidationError);\n  function AsyncValidationError(errors, fields) {\n    var _this;\n    _classCallCheck(this, AsyncValidationError);\n    _this = _super.call(this, 'Async Validation Error');\n    _defineProperty(_assertThisInitialized(_this), \"errors\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"fields\", void 0);\n    _this.errors = errors;\n    _this.fields = fields;\n    return _this;\n  }\n  return _createClass(AsyncValidationError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nexport function asyncMap(objArr, option, func, callback, source) {\n  if (option.first) {\n    var _pending = new Promise(function (resolve, reject) {\n      var next = function next(errors) {\n        callback(errors);\n        return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);\n      };\n      var flattenArr = flattenObjArr(objArr);\n      asyncSerialArray(flattenArr, func, next);\n    });\n    _pending.catch(function (e) {\n      return e;\n    });\n    return _pending;\n  }\n  var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];\n  var objArrKeys = Object.keys(objArr);\n  var objArrLength = objArrKeys.length;\n  var total = 0;\n  var results = [];\n  var pending = new Promise(function (resolve, reject) {\n    var next = function next(errors) {\n      // eslint-disable-next-line prefer-spread\n      results.push.apply(results, errors);\n      total++;\n      if (total === objArrLength) {\n        callback(results);\n        return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);\n      }\n    };\n    if (!objArrKeys.length) {\n      callback(results);\n      resolve(source);\n    }\n    objArrKeys.forEach(function (key) {\n      var arr = objArr[key];\n      if (firstFields.indexOf(key) !== -1) {\n        asyncSerialArray(arr, func, next);\n      } else {\n        asyncParallelArray(arr, func, next);\n      }\n    });\n  });\n  pending.catch(function (e) {\n    return e;\n  });\n  return pending;\n}\nfunction isErrorObj(obj) {\n  return !!(obj && obj.message !== undefined);\n}\nfunction getValue(value, path) {\n  var v = value;\n  for (var i = 0; i < path.length; i++) {\n    if (v == undefined) {\n      return v;\n    }\n    v = v[path[i]];\n  }\n  return v;\n}\nexport function complementError(rule, source) {\n  return function (oe) {\n    var fieldValue;\n    if (rule.fullFields) {\n      fieldValue = getValue(source, rule.fullFields);\n    } else {\n      fieldValue = source[oe.field || rule.fullField];\n    }\n    if (isErrorObj(oe)) {\n      oe.field = oe.field || rule.fullField;\n      oe.fieldValue = fieldValue;\n      return oe;\n    }\n    return {\n      message: typeof oe === 'function' ? oe() : oe,\n      fieldValue: fieldValue,\n      field: oe.field || rule.fullField\n    };\n  };\n}\nexport function deepMerge(target, source) {\n  if (source) {\n    for (var s in source) {\n      if (source.hasOwnProperty(s)) {\n        var value = source[s];\n        if (_typeof(value) === 'object' && _typeof(target[s]) === 'object') {\n          target[s] = _objectSpread(_objectSpread({}, target[s]), value);\n        } else {\n          target[s] = value;\n        }\n      }\n    }\n  }\n  return target;\n}","import { format } from \"../util\";\nvar ENUM = 'enum';\nvar enumerable = function enumerable(rule, value, source, errors, options) {\n  rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n  if (rule[ENUM].indexOf(value) === -1) {\n    errors.push(format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')));\n  }\n};\nexport default enumerable;","import { format, isEmptyValue } from \"../util\";\nvar required = function required(rule, value, source, errors, options, type) {\n  if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) {\n    errors.push(format(options.messages.required, rule.fullField));\n  }\n};\nexport default required;","// https://github.com/kevva/url-regex/blob/master/index.js\nvar urlReg;\nexport default (function () {\n  if (urlReg) {\n    return urlReg;\n  }\n  var word = '[a-fA-F\\\\d:]';\n  var b = function b(options) {\n    return options && options.includeBoundaries ? \"(?:(?<=\\\\s|^)(?=\".concat(word, \")|(?<=\").concat(word, \")(?=\\\\s|$))\") : '';\n  };\n  var v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n  var v6seg = '[a-fA-F\\\\d]{1,4}';\n  var v6List = [\"(?:\".concat(v6seg, \":){7}(?:\").concat(v6seg, \"|:)\"), // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\n  \"(?:\".concat(v6seg, \":){6}(?:\").concat(v4, \"|:\").concat(v6seg, \"|:)\"), // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::\n  \"(?:\".concat(v6seg, \":){5}(?::\").concat(v4, \"|(?::\").concat(v6seg, \"){1,2}|:)\"), // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::\n  \"(?:\".concat(v6seg, \":){4}(?:(?::\").concat(v6seg, \"){0,1}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,3}|:)\"), // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::\n  \"(?:\".concat(v6seg, \":){3}(?:(?::\").concat(v6seg, \"){0,2}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,4}|:)\"), // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::\n  \"(?:\".concat(v6seg, \":){2}(?:(?::\").concat(v6seg, \"){0,3}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,5}|:)\"), // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::\n  \"(?:\".concat(v6seg, \":){1}(?:(?::\").concat(v6seg, \"){0,4}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,6}|:)\"), // 1::              1::3:4:5:6:7:8   1::8            1::\n  \"(?::(?:(?::\".concat(v6seg, \"){0,5}:\").concat(v4, \"|(?::\").concat(v6seg, \"){1,7}|:))\") // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::\n  ];\n  var v6Eth0 = \"(?:%[0-9a-zA-Z]{1,})?\"; // %eth0            %1\n\n  var v6 = \"(?:\".concat(v6List.join('|'), \")\").concat(v6Eth0);\n\n  // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n  var v46Exact = new RegExp(\"(?:^\".concat(v4, \"$)|(?:^\").concat(v6, \"$)\"));\n  var v4exact = new RegExp(\"^\".concat(v4, \"$\"));\n  var v6exact = new RegExp(\"^\".concat(v6, \"$\"));\n  var ip = function ip(options) {\n    return options && options.exact ? v46Exact : new RegExp(\"(?:\".concat(b(options)).concat(v4).concat(b(options), \")|(?:\").concat(b(options)).concat(v6).concat(b(options), \")\"), 'g');\n  };\n  ip.v4 = function (options) {\n    return options && options.exact ? v4exact : new RegExp(\"\".concat(b(options)).concat(v4).concat(b(options)), 'g');\n  };\n  ip.v6 = function (options) {\n    return options && options.exact ? v6exact : new RegExp(\"\".concat(b(options)).concat(v6).concat(b(options)), 'g');\n  };\n  var protocol = \"(?:(?:[a-z]+:)?//)\";\n  var auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n  var ipv4 = ip.v4().source;\n  var ipv6 = ip.v6().source;\n  var host = \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\";\n  var domain = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\";\n  var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n  var port = '(?::\\\\d{2,5})?';\n  var path = '(?:[/?#][^\\\\s\"]*)?';\n  var regex = \"(?:\".concat(protocol, \"|www\\\\.)\").concat(auth, \"(?:localhost|\").concat(ipv4, \"|\").concat(ipv6, \"|\").concat(host).concat(domain).concat(tld, \")\").concat(port).concat(path);\n  urlReg = new RegExp(\"(?:^\".concat(regex, \"$)\"), 'i');\n  return urlReg;\n});","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { format } from \"../util\";\nimport required from \"./required\";\nimport getUrlRegex from \"./url\";\n/* eslint max-len:0 */\n\nvar pattern = {\n  // http://emailregex.com/\n  email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n  // url: new RegExp(\n  //   '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n  //   'i',\n  // ),\n  hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\nvar types = {\n  integer: function integer(value) {\n    return types.number(value) && parseInt(value, 10) === value;\n  },\n  float: function float(value) {\n    return types.number(value) && !types.integer(value);\n  },\n  array: function array(value) {\n    return Array.isArray(value);\n  },\n  regexp: function regexp(value) {\n    if (value instanceof RegExp) {\n      return true;\n    }\n    try {\n      return !!new RegExp(value);\n    } catch (e) {\n      return false;\n    }\n  },\n  date: function date(value) {\n    return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime());\n  },\n  number: function number(value) {\n    if (isNaN(value)) {\n      return false;\n    }\n    return typeof value === 'number';\n  },\n  object: function object(value) {\n    return _typeof(value) === 'object' && !types.array(value);\n  },\n  method: function method(value) {\n    return typeof value === 'function';\n  },\n  email: function email(value) {\n    return typeof value === 'string' && value.length <= 320 && !!value.match(pattern.email);\n  },\n  url: function url(value) {\n    return typeof value === 'string' && value.length <= 2048 && !!value.match(getUrlRegex());\n  },\n  hex: function hex(value) {\n    return typeof value === 'string' && !!value.match(pattern.hex);\n  }\n};\nvar type = function type(rule, value, source, errors, options) {\n  if (rule.required && value === undefined) {\n    required(rule, value, source, errors, options);\n    return;\n  }\n  var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n  var ruleType = rule.type;\n  if (custom.indexOf(ruleType) > -1) {\n    if (!types[ruleType](value)) {\n      errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n    }\n    // straight typeof check\n  } else if (ruleType && _typeof(value) !== rule.type) {\n    errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));\n  }\n};\nexport default type;","import { format } from \"../util\";\n\n/**\n *  Rule for validating whitespace.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nvar whitespace = function whitespace(rule, value, source, errors, options) {\n  if (/^\\s+$/.test(value) || value === '') {\n    errors.push(format(options.messages.whitespace, rule.fullField));\n  }\n};\nexport default whitespace;","import enumRule from \"./enum\";\nimport pattern from \"./pattern\";\nimport range from \"./range\";\nimport required from \"./required\";\nimport type from \"./type\";\nimport whitespace from \"./whitespace\";\nexport default {\n  required: required,\n  whitespace: whitespace,\n  type: type,\n  range: range,\n  enum: enumRule,\n  pattern: pattern\n};","import { format } from \"../util\";\nvar range = function range(rule, value, source, errors, options) {\n  var len = typeof rule.len === 'number';\n  var min = typeof rule.min === 'number';\n  var max = typeof rule.max === 'number';\n  // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n  var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n  var val = value;\n  var key = null;\n  var num = typeof value === 'number';\n  var str = typeof value === 'string';\n  var arr = Array.isArray(value);\n  if (num) {\n    key = 'number';\n  } else if (str) {\n    key = 'string';\n  } else if (arr) {\n    key = 'array';\n  }\n  // if the value is not of a supported type for range validation\n  // the validation rule rule should use the\n  // type property to also test for a particular type\n  if (!key) {\n    return false;\n  }\n  if (arr) {\n    val = value.length;\n  }\n  if (str) {\n    // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".length !== 3\n    val = value.replace(spRegexp, '_').length;\n  }\n  if (len) {\n    if (val !== rule.len) {\n      errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n    }\n  } else if (min && !max && val < rule.min) {\n    errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n  } else if (max && !min && val > rule.max) {\n    errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n  } else if (min && max && (val < rule.min || val > rule.max)) {\n    errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n  }\n};\nexport default range;","import { format } from \"../util\";\nvar pattern = function pattern(rule, value, source, errors, options) {\n  if (rule.pattern) {\n    if (rule.pattern instanceof RegExp) {\n      // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n      // flag is accidentally set to `true`, which in a validation scenario\n      // is not necessary and the result might be misleading\n      rule.pattern.lastIndex = 0;\n      if (!rule.pattern.test(value)) {\n        errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    } else if (typeof rule.pattern === 'string') {\n      var _pattern = new RegExp(rule.pattern);\n      if (!_pattern.test(value)) {\n        errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    }\n  }\n};\nexport default pattern;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar type = function type(rule, value, callback, source, options) {\n  var ruleType = rule.type;\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value, ruleType) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, ruleType);\n    if (!isEmptyValue(value, ruleType)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default type;","import any from \"./any\";\nimport array from \"./array\";\nimport boolean from \"./boolean\";\nimport date from \"./date\";\nimport enumValidator from \"./enum\";\nimport float from \"./float\";\nimport integer from \"./integer\";\nimport method from \"./method\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport pattern from \"./pattern\";\nimport regexp from \"./regexp\";\nimport required from \"./required\";\nimport string from \"./string\";\nimport type from \"./type\";\nexport default {\n  string: string,\n  method: method,\n  number: number,\n  boolean: boolean,\n  regexp: regexp,\n  integer: integer,\n  float: float,\n  array: array,\n  object: object,\n  enum: enumValidator,\n  pattern: pattern,\n  date: date,\n  url: type,\n  hex: type,\n  email: type,\n  required: required,\n  any: any\n};","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar string = function string(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, 'string');\n    if (!isEmptyValue(value, 'string')) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n      rules.pattern(rule, value, source, errors, options);\n      if (rule.whitespace === true) {\n        rules.whitespace(rule, value, source, errors, options);\n      }\n    }\n  }\n  callback(errors);\n};\nexport default string;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar method = function method(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default method;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar number = function number(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (value === '') {\n      // eslint-disable-next-line no-param-reassign\n      value = undefined;\n    }\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default number;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar boolean = function boolean(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default boolean;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar regexp = function regexp(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default regexp;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar integer = function integer(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default integer;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar floatFn = function floatFn(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default floatFn;","import rules from \"../rule/index\";\nvar array = function array(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((value === undefined || value === null) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, 'array');\n    if (value !== undefined && value !== null) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default array;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar object = function object(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default object;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar ENUM = 'enum';\nvar enumerable = function enumerable(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules[ENUM](rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default enumerable;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar pattern = function pattern(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value, 'string')) {\n      rules.pattern(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\nexport default pattern;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar date = function date(rule, value, callback, source, options) {\n  // console.log('integer rule called %j', rule);\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  // console.log('validate on %s value', value);\n  if (validate) {\n    if (isEmptyValue(value, 'date') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value, 'date')) {\n      var dateObject;\n      if (value instanceof Date) {\n        dateObject = value;\n      } else {\n        dateObject = new Date(value);\n      }\n      rules.type(rule, dateObject, source, errors, options);\n      if (dateObject) {\n        rules.range(rule, dateObject.getTime(), source, errors, options);\n      }\n    }\n  }\n  callback(errors);\n};\nexport default date;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport rules from \"../rule\";\nvar required = function required(rule, value, callback, source, options) {\n  var errors = [];\n  var type = Array.isArray(value) ? 'array' : _typeof(value);\n  rules.required(rule, value, source, errors, options, type);\n  callback(errors);\n};\nexport default required;","import rules from \"../rule\";\nimport { isEmptyValue } from \"../util\";\nvar any = function any(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n  }\n  callback(errors);\n};\nexport default any;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { messages as defaultMessages, newMessages } from \"./messages\";\nimport { asyncMap, complementError, convertFieldsError, deepMerge, format, warning } from \"./util\";\nimport validators from \"./validator/index\";\nexport * from \"./interface\";\n\n/**\n *  Encapsulates a validation schema.\n *\n *  @param descriptor An object declaring validation rules\n *  for this schema.\n */\nvar Schema = /*#__PURE__*/function () {\n  function Schema(descriptor) {\n    _classCallCheck(this, Schema);\n    // ======================== Instance ========================\n    _defineProperty(this, \"rules\", null);\n    _defineProperty(this, \"_messages\", defaultMessages);\n    this.define(descriptor);\n  }\n  _createClass(Schema, [{\n    key: \"define\",\n    value: function define(rules) {\n      var _this = this;\n      if (!rules) {\n        throw new Error('Cannot configure a schema with no rules');\n      }\n      if (_typeof(rules) !== 'object' || Array.isArray(rules)) {\n        throw new Error('Rules must be an object');\n      }\n      this.rules = {};\n      Object.keys(rules).forEach(function (name) {\n        var item = rules[name];\n        _this.rules[name] = Array.isArray(item) ? item : [item];\n      });\n    }\n  }, {\n    key: \"messages\",\n    value: function messages(_messages) {\n      if (_messages) {\n        this._messages = deepMerge(newMessages(), _messages);\n      }\n      return this._messages;\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(source_) {\n      var _this2 = this;\n      var o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var oc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n      var source = source_;\n      var options = o;\n      var callback = oc;\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      if (!this.rules || Object.keys(this.rules).length === 0) {\n        if (callback) {\n          callback(null, source);\n        }\n        return Promise.resolve(source);\n      }\n      function complete(results) {\n        var errors = [];\n        var fields = {};\n        function add(e) {\n          if (Array.isArray(e)) {\n            var _errors;\n            errors = (_errors = errors).concat.apply(_errors, _toConsumableArray(e));\n          } else {\n            errors.push(e);\n          }\n        }\n        for (var i = 0; i < results.length; i++) {\n          add(results[i]);\n        }\n        if (!errors.length) {\n          callback(null, source);\n        } else {\n          fields = convertFieldsError(errors);\n          callback(errors, fields);\n        }\n      }\n      if (options.messages) {\n        var messages = this.messages();\n        if (messages === defaultMessages) {\n          messages = newMessages();\n        }\n        deepMerge(messages, options.messages);\n        options.messages = messages;\n      } else {\n        options.messages = this.messages();\n      }\n      var series = {};\n      var keys = options.keys || Object.keys(this.rules);\n      keys.forEach(function (z) {\n        var arr = _this2.rules[z];\n        var value = source[z];\n        arr.forEach(function (r) {\n          var rule = r;\n          if (typeof rule.transform === 'function') {\n            if (source === source_) {\n              source = _objectSpread({}, source);\n            }\n            value = source[z] = rule.transform(value);\n            if (value !== undefined && value !== null) {\n              rule.type = rule.type || (Array.isArray(value) ? 'array' : _typeof(value));\n            }\n          }\n          if (typeof rule === 'function') {\n            rule = {\n              validator: rule\n            };\n          } else {\n            rule = _objectSpread({}, rule);\n          }\n\n          // Fill validator. Skip if nothing need to validate\n          rule.validator = _this2.getValidationMethod(rule);\n          if (!rule.validator) {\n            return;\n          }\n          rule.field = z;\n          rule.fullField = rule.fullField || z;\n          rule.type = _this2.getType(rule);\n          series[z] = series[z] || [];\n          series[z].push({\n            rule: rule,\n            value: value,\n            source: source,\n            field: z\n          });\n        });\n      });\n      var errorFields = {};\n      return asyncMap(series, options, function (data, doIt) {\n        var rule = data.rule;\n        var deep = (rule.type === 'object' || rule.type === 'array') && (_typeof(rule.fields) === 'object' || _typeof(rule.defaultField) === 'object');\n        deep = deep && (rule.required || !rule.required && data.value);\n        rule.field = data.field;\n        function addFullField(key, schema) {\n          return _objectSpread(_objectSpread({}, schema), {}, {\n            fullField: \"\".concat(rule.fullField, \".\").concat(key),\n            fullFields: rule.fullFields ? [].concat(_toConsumableArray(rule.fullFields), [key]) : [key]\n          });\n        }\n        function cb() {\n          var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n          var errorList = Array.isArray(e) ? e : [e];\n          if (!options.suppressWarning && errorList.length) {\n            Schema.warning('async-validator:', errorList);\n          }\n          if (errorList.length && rule.message !== undefined) {\n            errorList = [].concat(rule.message);\n          }\n\n          // Fill error info\n          var filledErrors = errorList.map(complementError(rule, source));\n          if (options.first && filledErrors.length) {\n            errorFields[rule.field] = 1;\n            return doIt(filledErrors);\n          }\n          if (!deep) {\n            doIt(filledErrors);\n          } else {\n            // if rule is required but the target object\n            // does not exist fail at the rule level and don't\n            // go deeper\n            if (rule.required && !data.value) {\n              if (rule.message !== undefined) {\n                filledErrors = [].concat(rule.message).map(complementError(rule, source));\n              } else if (options.error) {\n                filledErrors = [options.error(rule, format(options.messages.required, rule.field))];\n              }\n              return doIt(filledErrors);\n            }\n            var fieldsSchema = {};\n            if (rule.defaultField) {\n              Object.keys(data.value).map(function (key) {\n                fieldsSchema[key] = rule.defaultField;\n              });\n            }\n            fieldsSchema = _objectSpread(_objectSpread({}, fieldsSchema), data.rule.fields);\n            var paredFieldsSchema = {};\n            Object.keys(fieldsSchema).forEach(function (field) {\n              var fieldSchema = fieldsSchema[field];\n              var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];\n              paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));\n            });\n            var schema = new Schema(paredFieldsSchema);\n            schema.messages(options.messages);\n            if (data.rule.options) {\n              data.rule.options.messages = options.messages;\n              data.rule.options.error = options.error;\n            }\n            schema.validate(data.value, data.rule.options || options, function (errs) {\n              var finalErrors = [];\n              if (filledErrors && filledErrors.length) {\n                finalErrors.push.apply(finalErrors, _toConsumableArray(filledErrors));\n              }\n              if (errs && errs.length) {\n                finalErrors.push.apply(finalErrors, _toConsumableArray(errs));\n              }\n              doIt(finalErrors.length ? finalErrors : null);\n            });\n          }\n        }\n        var res;\n        if (rule.asyncValidator) {\n          res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n        } else if (rule.validator) {\n          try {\n            res = rule.validator(rule, data.value, cb, data.source, options);\n          } catch (error) {\n            var _console$error, _console;\n            (_console$error = (_console = console).error) === null || _console$error === void 0 || _console$error.call(_console, error);\n            // rethrow to report error\n            if (!options.suppressValidatorError) {\n              setTimeout(function () {\n                throw error;\n              }, 0);\n            }\n            cb(error.message);\n          }\n          if (res === true) {\n            cb();\n          } else if (res === false) {\n            cb(typeof rule.message === 'function' ? rule.message(rule.fullField || rule.field) : rule.message || \"\".concat(rule.fullField || rule.field, \" fails\"));\n          } else if (res instanceof Array) {\n            cb(res);\n          } else if (res instanceof Error) {\n            cb(res.message);\n          }\n        }\n        if (res && res.then) {\n          res.then(function () {\n            return cb();\n          }, function (e) {\n            return cb(e);\n          });\n        }\n      }, function (results) {\n        complete(results);\n      }, source);\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(rule) {\n      if (rule.type === undefined && rule.pattern instanceof RegExp) {\n        rule.type = 'pattern';\n      }\n      if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) {\n        throw new Error(format('Unknown rule type %s', rule.type));\n      }\n      return rule.type || 'string';\n    }\n  }, {\n    key: \"getValidationMethod\",\n    value: function getValidationMethod(rule) {\n      if (typeof rule.validator === 'function') {\n        return rule.validator;\n      }\n      var keys = Object.keys(rule);\n      var messageIndex = keys.indexOf('message');\n      if (messageIndex !== -1) {\n        keys.splice(messageIndex, 1);\n      }\n      if (keys.length === 1 && keys[0] === 'required') {\n        return validators.required;\n      }\n      return validators[this.getType(rule)] || undefined;\n    }\n  }]);\n  return Schema;\n}();\n// ========================= Static =========================\n_defineProperty(Schema, \"register\", function register(type, validator) {\n  if (typeof validator !== 'function') {\n    throw new Error('Cannot register a validator by type, validator is not a function');\n  }\n  validators[type] = validator;\n});\n_defineProperty(Schema, \"warning\", warning);\n_defineProperty(Schema, \"messages\", defaultMessages);\n_defineProperty(Schema, \"validators\", validators);\nexport default Schema;","var typeTemplate = \"'${name}' is not a valid ${type}\";\nexport var defaultValidateMessages = {\n  default: \"Validation error on field '${name}'\",\n  required: \"'${name}' is required\",\n  enum: \"'${name}' must be one of [${enum}]\",\n  whitespace: \"'${name}' cannot be empty\",\n  date: {\n    format: \"'${name}' is invalid for format date\",\n    parse: \"'${name}' could not be parsed as date\",\n    invalid: \"'${name}' is invalid date\"\n  },\n  types: {\n    string: typeTemplate,\n    method: typeTemplate,\n    array: typeTemplate,\n    object: typeTemplate,\n    number: typeTemplate,\n    date: typeTemplate,\n    boolean: typeTemplate,\n    integer: typeTemplate,\n    float: typeTemplate,\n    regexp: typeTemplate,\n    email: typeTemplate,\n    url: typeTemplate,\n    hex: typeTemplate\n  },\n  string: {\n    len: \"'${name}' must be exactly ${len} characters\",\n    min: \"'${name}' must be at least ${min} characters\",\n    max: \"'${name}' cannot be longer than ${max} characters\",\n    range: \"'${name}' must be between ${min} and ${max} characters\"\n  },\n  number: {\n    len: \"'${name}' must equal ${len}\",\n    min: \"'${name}' cannot be less than ${min}\",\n    max: \"'${name}' cannot be greater than ${max}\",\n    range: \"'${name}' must be between ${min} and ${max}\"\n  },\n  array: {\n    len: \"'${name}' must be exactly ${len} in length\",\n    min: \"'${name}' cannot be less than ${min} in length\",\n    max: \"'${name}' cannot be greater than ${max} in length\",\n    range: \"'${name}' must be between ${min} and ${max} in length\"\n  },\n  pattern: {\n    mismatch: \"'${name}' does not match pattern ${pattern}\"\n  }\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport RawAsyncValidator from '@rc-component/async-validator';\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { defaultValidateMessages } from \"./messages\";\nimport { merge } from \"rc-util/es/utils/set\";\n\n// Remove incorrect original ts define\nvar AsyncValidator = RawAsyncValidator;\n\n/**\n * Replace with template.\n *   `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template, kv) {\n  return template.replace(/\\\\?\\$\\{\\w+\\}/g, function (str) {\n    if (str.startsWith('\\\\')) {\n      return str.slice(1);\n    }\n    var key = str.slice(2, -1);\n    return kv[key];\n  });\n}\nvar CODE_LOGIC_ERROR = 'CODE_LOGIC_ERROR';\nfunction validateRule(_x, _x2, _x3, _x4, _x5) {\n  return _validateRule.apply(this, arguments);\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nfunction _validateRule() {\n  _validateRule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name, value, rule, options, messageVariables) {\n    var cloneRule, originValidator, subRuleField, validator, messages, result, subResults, kv, fillVariableResult;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          cloneRule = _objectSpread({}, rule); // Bug of `async-validator`\n          // https://github.com/react-component/field-form/issues/316\n          // https://github.com/react-component/field-form/issues/313\n          delete cloneRule.ruleIndex;\n\n          // https://github.com/ant-design/ant-design/issues/40497#issuecomment-1422282378\n          AsyncValidator.warning = function () {\n            return void 0;\n          };\n          if (cloneRule.validator) {\n            originValidator = cloneRule.validator;\n            cloneRule.validator = function () {\n              try {\n                return originValidator.apply(void 0, arguments);\n              } catch (error) {\n                console.error(error);\n                return Promise.reject(CODE_LOGIC_ERROR);\n              }\n            };\n          }\n\n          // We should special handle array validate\n          subRuleField = null;\n          if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n            subRuleField = cloneRule.defaultField;\n            delete cloneRule.defaultField;\n          }\n          validator = new AsyncValidator(_defineProperty({}, name, [cloneRule]));\n          messages = merge(defaultValidateMessages, options.validateMessages);\n          validator.messages(messages);\n          result = [];\n          _context2.prev = 10;\n          _context2.next = 13;\n          return Promise.resolve(validator.validate(_defineProperty({}, name, value), _objectSpread({}, options)));\n        case 13:\n          _context2.next = 18;\n          break;\n        case 15:\n          _context2.prev = 15;\n          _context2.t0 = _context2[\"catch\"](10);\n          if (_context2.t0.errors) {\n            result = _context2.t0.errors.map(function (_ref4, index) {\n              var message = _ref4.message;\n              var mergedMessage = message === CODE_LOGIC_ERROR ? messages.default : message;\n              return /*#__PURE__*/React.isValidElement(mergedMessage) ?\n              /*#__PURE__*/\n              // Wrap ReactNode with `key`\n              React.cloneElement(mergedMessage, {\n                key: \"error_\".concat(index)\n              }) : mergedMessage;\n            });\n          }\n        case 18:\n          if (!(!result.length && subRuleField)) {\n            _context2.next = 23;\n            break;\n          }\n          _context2.next = 21;\n          return Promise.all(value.map(function (subValue, i) {\n            return validateRule(\"\".concat(name, \".\").concat(i), subValue, subRuleField, options, messageVariables);\n          }));\n        case 21:\n          subResults = _context2.sent;\n          return _context2.abrupt(\"return\", subResults.reduce(function (prev, errors) {\n            return [].concat(_toConsumableArray(prev), _toConsumableArray(errors));\n          }, []));\n        case 23:\n          // Replace message with variables\n          kv = _objectSpread(_objectSpread({}, rule), {}, {\n            name: name,\n            enum: (rule.enum || []).join(', ')\n          }, messageVariables);\n          fillVariableResult = result.map(function (error) {\n            if (typeof error === 'string') {\n              return replaceMessage(error, kv);\n            }\n            return error;\n          });\n          return _context2.abrupt(\"return\", fillVariableResult);\n        case 26:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[10, 15]]);\n  }));\n  return _validateRule.apply(this, arguments);\n}\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n  var name = namePath.join('.');\n\n  // Fill rule with context\n  var filledRules = rules.map(function (currentRule, ruleIndex) {\n    var originValidatorFunc = currentRule.validator;\n    var cloneRule = _objectSpread(_objectSpread({}, currentRule), {}, {\n      ruleIndex: ruleIndex\n    });\n\n    // Replace validator if needed\n    if (originValidatorFunc) {\n      cloneRule.validator = function (rule, val, callback) {\n        var hasPromise = false;\n\n        // Wrap callback only accept when promise not provided\n        var wrappedCallback = function wrappedCallback() {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n          // Wait a tick to make sure return type is a promise\n          Promise.resolve().then(function () {\n            warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n            if (!hasPromise) {\n              callback.apply(void 0, args);\n            }\n          });\n        };\n\n        // Get promise\n        var promise = originValidatorFunc(rule, val, wrappedCallback);\n        hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n\n        /**\n         * 1. Use promise as the first priority.\n         * 2. If promise not exist, use callback with warning instead\n         */\n        warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n        if (hasPromise) {\n          promise.then(function () {\n            callback();\n          }).catch(function (err) {\n            callback(err || ' ');\n          });\n        }\n      };\n    }\n    return cloneRule;\n  }).sort(function (_ref, _ref2) {\n    var w1 = _ref.warningOnly,\n      i1 = _ref.ruleIndex;\n    var w2 = _ref2.warningOnly,\n      i2 = _ref2.ruleIndex;\n    if (!!w1 === !!w2) {\n      // Let keep origin order\n      return i1 - i2;\n    }\n    if (w1) {\n      return 1;\n    }\n    return -1;\n  });\n\n  // Do validate rules\n  var summaryPromise;\n  if (validateFirst === true) {\n    // >>>>> Validate by serialization\n    summaryPromise = new Promise( /*#__PURE__*/function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve, reject) {\n        var i, rule, errors;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              i = 0;\n            case 1:\n              if (!(i < filledRules.length)) {\n                _context.next = 12;\n                break;\n              }\n              rule = filledRules[i];\n              _context.next = 5;\n              return validateRule(name, value, rule, options, messageVariables);\n            case 5:\n              errors = _context.sent;\n              if (!errors.length) {\n                _context.next = 9;\n                break;\n              }\n              reject([{\n                errors: errors,\n                rule: rule\n              }]);\n              return _context.abrupt(\"return\");\n            case 9:\n              i += 1;\n              _context.next = 1;\n              break;\n            case 12:\n              /* eslint-enable */\n\n              resolve([]);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      return function (_x6, _x7) {\n        return _ref3.apply(this, arguments);\n      };\n    }());\n  } else {\n    // >>>>> Validate by parallel\n    var rulePromises = filledRules.map(function (rule) {\n      return validateRule(name, value, rule, options, messageVariables).then(function (errors) {\n        return {\n          errors: errors,\n          rule: rule\n        };\n      });\n    });\n    summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function (errors) {\n      // Always change to rejection for Field to catch\n      return Promise.reject(errors);\n    });\n  }\n\n  // Internal catch error to avoid console error log.\n  summaryPromise.catch(function (e) {\n    return e;\n  });\n  return summaryPromise;\n}\nfunction finishOnAllFailed(_x8) {\n  return _finishOnAllFailed.apply(this, arguments);\n}\nfunction _finishOnAllFailed() {\n  _finishOnAllFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(rulePromises) {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          return _context3.abrupt(\"return\", Promise.all(rulePromises).then(function (errorsList) {\n            var _ref5;\n            var errors = (_ref5 = []).concat.apply(_ref5, _toConsumableArray(errorsList));\n            return errors;\n          }));\n        case 1:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n  return _finishOnAllFailed.apply(this, arguments);\n}\nfunction finishOnFirstFailed(_x9) {\n  return _finishOnFirstFailed.apply(this, arguments);\n}\nfunction _finishOnFirstFailed() {\n  _finishOnFirstFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(rulePromises) {\n    var count;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          count = 0;\n          return _context4.abrupt(\"return\", new Promise(function (resolve) {\n            rulePromises.forEach(function (promise) {\n              promise.then(function (ruleError) {\n                if (ruleError.errors.length) {\n                  resolve([ruleError]);\n                }\n                count += 1;\n                if (count === rulePromises.length) {\n                  resolve([]);\n                }\n              });\n            });\n          }));\n        case 2:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n  return _finishOnFirstFailed.apply(this, arguments);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport getValue from \"rc-util/es/utils/get\";\nimport setValue from \"rc-util/es/utils/set\";\nimport { toArray } from \"./typeUtil\";\nexport { getValue, setValue };\n\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path) {\n  return toArray(path);\n}\nexport function cloneByNamePathList(store, namePathList) {\n  var newStore = {};\n  namePathList.forEach(function (namePath) {\n    var value = getValue(store, namePath);\n    newStore = setValue(newStore, namePath, value);\n  });\n  return newStore;\n}\n\n/**\n * Check if `namePathList` includes `namePath`.\n * @param namePathList A list of `InternalNamePath[]`\n * @param namePath Compare `InternalNamePath`\n * @param partialMatch True will make `[a, b]` match `[a, b, c]`\n */\nexport function containsNamePath(namePathList, namePath) {\n  var partialMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  return namePathList && namePathList.some(function (path) {\n    return matchNamePath(namePath, path, partialMatch);\n  });\n}\n\n/**\n * Check if `namePath` is super set or equal of `subNamePath`.\n * @param namePath A list of `InternalNamePath[]`\n * @param subNamePath Compare `InternalNamePath`\n * @param partialMatch True will make `[a, b]` match `[a, b, c]`\n */\nexport function matchNamePath(namePath, subNamePath) {\n  var partialMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  if (!namePath || !subNamePath) {\n    return false;\n  }\n  if (!partialMatch && namePath.length !== subNamePath.length) {\n    return false;\n  }\n  return subNamePath.every(function (nameUnit, i) {\n    return namePath[i] === nameUnit;\n  });\n}\n\n// Like `shallowEqual`, but we not check the data which may cause re-render\n\nexport function isSimilar(source, target) {\n  if (source === target) {\n    return true;\n  }\n  if (!source && target || source && !target) {\n    return false;\n  }\n  if (!source || !target || _typeof(source) !== 'object' || _typeof(target) !== 'object') {\n    return false;\n  }\n  var sourceKeys = Object.keys(source);\n  var targetKeys = Object.keys(target);\n  var keys = new Set([].concat(sourceKeys, targetKeys));\n  return _toConsumableArray(keys).every(function (key) {\n    var sourceValue = source[key];\n    var targetValue = target[key];\n    if (typeof sourceValue === 'function' && typeof targetValue === 'function') {\n      return true;\n    }\n    return sourceValue === targetValue;\n  });\n}\nexport function defaultGetValueFromEvent(valuePropName) {\n  var event = arguments.length <= 1 ? undefined : arguments[1];\n  if (event && event.target && _typeof(event.target) === 'object' && valuePropName in event.target) {\n    return event.target[valuePropName];\n  }\n  return event;\n}\n\n/**\n * Moves an array item from one position in an array to another.\n *\n * Note: This is a pure function so a new array will be returned, instead\n * of altering the array argument.\n *\n * @param array         Array in which to move an item.         (required)\n * @param moveIndex     The index of the item to move.          (required)\n * @param toIndex       The index to move item at moveIndex to. (required)\n */\nexport function move(array, moveIndex, toIndex) {\n  var length = array.length;\n  if (moveIndex < 0 || moveIndex >= length || toIndex < 0 || toIndex >= length) {\n    return array;\n  }\n  var item = array[moveIndex];\n  var diff = moveIndex - toIndex;\n  if (diff > 0) {\n    // move left\n    return [].concat(_toConsumableArray(array.slice(0, toIndex)), [item], _toConsumableArray(array.slice(toIndex, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, length)));\n  }\n  if (diff < 0) {\n    // move right\n    return [].concat(_toConsumableArray(array.slice(0, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array.slice(toIndex + 1, length)));\n  }\n  return array;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"name\"];\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from \"./FieldContext\";\nimport ListContext from \"./ListContext\";\nimport { toArray } from \"./utils/typeUtil\";\nimport { validateRules } from \"./utils/validateUtil\";\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from \"./utils/valueUtil\";\nvar EMPTY_ERRORS = [];\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n  if (typeof shouldUpdate === 'function') {\n    return shouldUpdate(prev, next, 'source' in info ? {\n      source: info.source\n    } : {});\n  }\n  return prevValue !== nextValue;\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\n// We use Class instead of Hooks here since it will cost much code by using Hooks.\nvar Field = /*#__PURE__*/function (_React$Component) {\n  _inherits(Field, _React$Component);\n  var _super = _createSuper(Field);\n  // ============================== Subscriptions ==============================\n  function Field(props) {\n    var _this;\n    _classCallCheck(this, Field);\n    _this = _super.call(this, props);\n\n    // Register on init\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      resetCount: 0\n    });\n    _defineProperty(_assertThisInitialized(_this), \"cancelRegisterFunc\", null);\n    _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n    /**\n     * Follow state should not management in State since it will async update by React.\n     * This makes first render of form can not get correct state value.\n     */\n    _defineProperty(_assertThisInitialized(_this), \"touched\", false);\n    /**\n     * Mark when touched & validated. Currently only used for `dependencies`.\n     * Note that we do not think field with `initialValue` is dirty\n     * but this will be by `isFieldDirty` func.\n     */\n    _defineProperty(_assertThisInitialized(_this), \"dirty\", false);\n    _defineProperty(_assertThisInitialized(_this), \"validatePromise\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"prevValidating\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"errors\", EMPTY_ERRORS);\n    _defineProperty(_assertThisInitialized(_this), \"warnings\", EMPTY_ERRORS);\n    _defineProperty(_assertThisInitialized(_this), \"cancelRegister\", function () {\n      var _this$props = _this.props,\n        preserve = _this$props.preserve,\n        isListField = _this$props.isListField,\n        name = _this$props.name;\n      if (_this.cancelRegisterFunc) {\n        _this.cancelRegisterFunc(isListField, preserve, getNamePath(name));\n      }\n      _this.cancelRegisterFunc = null;\n    });\n    // ================================== Utils ==================================\n    _defineProperty(_assertThisInitialized(_this), \"getNamePath\", function () {\n      var _this$props2 = _this.props,\n        name = _this$props2.name,\n        fieldContext = _this$props2.fieldContext;\n      var _fieldContext$prefixN = fieldContext.prefixName,\n        prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n      return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getRules\", function () {\n      var _this$props3 = _this.props,\n        _this$props3$rules = _this$props3.rules,\n        rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n        fieldContext = _this$props3.fieldContext;\n      return rules.map(function (rule) {\n        if (typeof rule === 'function') {\n          return rule(fieldContext);\n        }\n        return rule;\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"refresh\", function () {\n      if (!_this.mounted) return;\n\n      /**\n       * Clean up current node.\n       */\n      _this.setState(function (_ref) {\n        var resetCount = _ref.resetCount;\n        return {\n          resetCount: resetCount + 1\n        };\n      });\n    });\n    // Event should only trigger when meta changed\n    _defineProperty(_assertThisInitialized(_this), \"metaCache\", null);\n    _defineProperty(_assertThisInitialized(_this), \"triggerMetaEvent\", function (destroy) {\n      var onMetaChange = _this.props.onMetaChange;\n      if (onMetaChange) {\n        var _meta = _objectSpread(_objectSpread({}, _this.getMeta()), {}, {\n          destroy: destroy\n        });\n        if (!isEqual(_this.metaCache, _meta)) {\n          onMetaChange(_meta);\n        }\n        _this.metaCache = _meta;\n      } else {\n        _this.metaCache = null;\n      }\n    });\n    // ========================= Field Entity Interfaces =========================\n    // Trigger by store update. Check if need update the component\n    _defineProperty(_assertThisInitialized(_this), \"onStoreChange\", function (prevStore, namePathList, info) {\n      var _this$props4 = _this.props,\n        shouldUpdate = _this$props4.shouldUpdate,\n        _this$props4$dependen = _this$props4.dependencies,\n        dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n        onReset = _this$props4.onReset;\n      var store = info.store;\n      var namePath = _this.getNamePath();\n      var prevValue = _this.getValue(prevStore);\n      var curValue = _this.getValue(store);\n      var namePathMatch = namePathList && containsNamePath(namePathList, namePath);\n\n      // `setFieldsValue` is a quick access to update related status\n      if (info.type === 'valueUpdate' && info.source === 'external' && !isEqual(prevValue, curValue)) {\n        _this.touched = true;\n        _this.dirty = true;\n        _this.validatePromise = null;\n        _this.errors = EMPTY_ERRORS;\n        _this.warnings = EMPTY_ERRORS;\n        _this.triggerMetaEvent();\n      }\n      switch (info.type) {\n        case 'reset':\n          if (!namePathList || namePathMatch) {\n            // Clean up state\n            _this.touched = false;\n            _this.dirty = false;\n            _this.validatePromise = undefined;\n            _this.errors = EMPTY_ERRORS;\n            _this.warnings = EMPTY_ERRORS;\n            _this.triggerMetaEvent();\n            onReset === null || onReset === void 0 || onReset();\n            _this.refresh();\n            return;\n          }\n          break;\n\n        /**\n         * In case field with `preserve = false` nest deps like:\n         * - A = 1 => show B\n         * - B = 1 => show C\n         * - Reset A, need clean B, C\n         */\n        case 'remove':\n          {\n            if (shouldUpdate && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        case 'setField':\n          {\n            var data = info.data;\n            if (namePathMatch) {\n              if ('touched' in data) {\n                _this.touched = data.touched;\n              }\n              if ('validating' in data && !('originRCField' in data)) {\n                _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n              }\n              if ('errors' in data) {\n                _this.errors = data.errors || EMPTY_ERRORS;\n              }\n              if ('warnings' in data) {\n                _this.warnings = data.warnings || EMPTY_ERRORS;\n              }\n              _this.dirty = true;\n              _this.triggerMetaEvent();\n              _this.reRender();\n              return;\n            } else if ('value' in data && containsNamePath(namePathList, namePath, true)) {\n              // Contains path with value should also check\n              _this.reRender();\n              return;\n            }\n\n            // Handle update by `setField` with `shouldUpdate`\n            if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        case 'dependenciesUpdate':\n          {\n            /**\n             * Trigger when marked `dependencies` updated. Related fields will all update\n             */\n            var dependencyList = dependencies.map(getNamePath);\n            // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n            // emitted earlier and they will work there\n            // If set it may cause unnecessary twice rerendering\n            if (dependencyList.some(function (dependency) {\n              return containsNamePath(info.relatedFields, dependency);\n            })) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        default:\n          // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n          //      For example <List name=\"list\"><Field name={['list', 0]}></List>\n          //      If `namePathList` is [['list']] (List value update), Field should be updated\n          //      If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n          // 2.\n          //   2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n          //       don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n          //       is not provided\n          //   2.2 If `shouldUpdate` provided, use customize logic to update the field\n          //       else to check if value changed\n          if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n            _this.reRender();\n            return;\n          }\n          break;\n      }\n      if (shouldUpdate === true) {\n        _this.reRender();\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"validateRules\", function (options) {\n      // We should fixed namePath & value to avoid developer change then by form function\n      var namePath = _this.getNamePath();\n      var currentValue = _this.getValue();\n      var _ref2 = options || {},\n        triggerName = _ref2.triggerName,\n        _ref2$validateOnly = _ref2.validateOnly,\n        validateOnly = _ref2$validateOnly === void 0 ? false : _ref2$validateOnly;\n\n      // Force change to async to avoid rule OOD under renderProps field\n      var rootPromise = Promise.resolve().then( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var _this$props5, _this$props5$validate, validateFirst, messageVariables, validateDebounce, filteredRules, promise;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (_this.mounted) {\n                _context.next = 2;\n                break;\n              }\n              return _context.abrupt(\"return\", []);\n            case 2:\n              _this$props5 = _this.props, _this$props5$validate = _this$props5.validateFirst, validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate, messageVariables = _this$props5.messageVariables, validateDebounce = _this$props5.validateDebounce; // Start validate\n              filteredRules = _this.getRules();\n              if (triggerName) {\n                filteredRules = filteredRules.filter(function (rule) {\n                  return rule;\n                }).filter(function (rule) {\n                  var validateTrigger = rule.validateTrigger;\n                  if (!validateTrigger) {\n                    return true;\n                  }\n                  var triggerList = toArray(validateTrigger);\n                  return triggerList.includes(triggerName);\n                });\n              }\n\n              // Wait for debounce. Skip if no `triggerName` since its from `validateFields / submit`\n              if (!(validateDebounce && triggerName)) {\n                _context.next = 10;\n                break;\n              }\n              _context.next = 8;\n              return new Promise(function (resolve) {\n                setTimeout(resolve, validateDebounce);\n              });\n            case 8:\n              if (!(_this.validatePromise !== rootPromise)) {\n                _context.next = 10;\n                break;\n              }\n              return _context.abrupt(\"return\", []);\n            case 10:\n              promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n              promise.catch(function (e) {\n                return e;\n              }).then(function () {\n                var ruleErrors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_ERRORS;\n                if (_this.validatePromise === rootPromise) {\n                  var _ruleErrors$forEach;\n                  _this.validatePromise = null;\n\n                  // Get errors & warnings\n                  var nextErrors = [];\n                  var nextWarnings = [];\n                  (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 || _ruleErrors$forEach.call(ruleErrors, function (_ref4) {\n                    var warningOnly = _ref4.rule.warningOnly,\n                      _ref4$errors = _ref4.errors,\n                      errors = _ref4$errors === void 0 ? EMPTY_ERRORS : _ref4$errors;\n                    if (warningOnly) {\n                      nextWarnings.push.apply(nextWarnings, _toConsumableArray(errors));\n                    } else {\n                      nextErrors.push.apply(nextErrors, _toConsumableArray(errors));\n                    }\n                  });\n                  _this.errors = nextErrors;\n                  _this.warnings = nextWarnings;\n                  _this.triggerMetaEvent();\n                  _this.reRender();\n                }\n              });\n              return _context.abrupt(\"return\", promise);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      })));\n      if (validateOnly) {\n        return rootPromise;\n      }\n      _this.validatePromise = rootPromise;\n      _this.dirty = true;\n      _this.errors = EMPTY_ERRORS;\n      _this.warnings = EMPTY_ERRORS;\n      _this.triggerMetaEvent();\n\n      // Force trigger re-render since we need sync renderProps with new meta\n      _this.reRender();\n      return rootPromise;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isFieldValidating\", function () {\n      return !!_this.validatePromise;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isFieldTouched\", function () {\n      return _this.touched;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isFieldDirty\", function () {\n      // Touched or validate or has initialValue\n      if (_this.dirty || _this.props.initialValue !== undefined) {\n        return true;\n      }\n\n      // Form set initialValue\n      var fieldContext = _this.props.fieldContext;\n      var _fieldContext$getInte = fieldContext.getInternalHooks(HOOK_MARK),\n        getInitialValue = _fieldContext$getInte.getInitialValue;\n      if (getInitialValue(_this.getNamePath()) !== undefined) {\n        return true;\n      }\n      return false;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getErrors\", function () {\n      return _this.errors;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getWarnings\", function () {\n      return _this.warnings;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isListField\", function () {\n      return _this.props.isListField;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isList\", function () {\n      return _this.props.isList;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"isPreserve\", function () {\n      return _this.props.preserve;\n    });\n    // ============================= Child Component =============================\n    _defineProperty(_assertThisInitialized(_this), \"getMeta\", function () {\n      // Make error & validating in cache to save perf\n      _this.prevValidating = _this.isFieldValidating();\n      var meta = {\n        touched: _this.isFieldTouched(),\n        validating: _this.prevValidating,\n        errors: _this.errors,\n        warnings: _this.warnings,\n        name: _this.getNamePath(),\n        validated: _this.validatePromise === null\n      };\n      return meta;\n    });\n    // Only return validate child node. If invalidate, will do nothing about field.\n    _defineProperty(_assertThisInitialized(_this), \"getOnlyChild\", function (children) {\n      // Support render props\n      if (typeof children === 'function') {\n        var _meta2 = _this.getMeta();\n        return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), _meta2, _this.props.fieldContext))), {}, {\n          isFunction: true\n        });\n      }\n\n      // Filed element only\n      var childList = toChildrenArray(children);\n      if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n        return {\n          child: childList,\n          isFunction: false\n        };\n      }\n      return {\n        child: childList[0],\n        isFunction: false\n      };\n    });\n    // ============================== Field Control ==============================\n    _defineProperty(_assertThisInitialized(_this), \"getValue\", function (store) {\n      var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n      var namePath = _this.getNamePath();\n      return getValue(store || getFieldsValue(true), namePath);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getControlled\", function () {\n      var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _this$props6 = _this.props,\n        name = _this$props6.name,\n        trigger = _this$props6.trigger,\n        validateTrigger = _this$props6.validateTrigger,\n        getValueFromEvent = _this$props6.getValueFromEvent,\n        normalize = _this$props6.normalize,\n        valuePropName = _this$props6.valuePropName,\n        getValueProps = _this$props6.getValueProps,\n        fieldContext = _this$props6.fieldContext;\n      var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n      var namePath = _this.getNamePath();\n      var getInternalHooks = fieldContext.getInternalHooks,\n        getFieldsValue = fieldContext.getFieldsValue;\n      var _getInternalHooks = getInternalHooks(HOOK_MARK),\n        dispatch = _getInternalHooks.dispatch;\n      var value = _this.getValue();\n      var mergedGetValueProps = getValueProps || function (val) {\n        return _defineProperty({}, valuePropName, val);\n      };\n      var originTriggerFunc = childProps[trigger];\n      var valueProps = name !== undefined ? mergedGetValueProps(value) : {};\n\n      // warning when prop value is function\n      if (process.env.NODE_ENV !== 'production' && valueProps) {\n        Object.keys(valueProps).forEach(function (key) {\n          warning(typeof valueProps[key] !== 'function', \"It's not recommended to generate dynamic function prop by `getValueProps`. Please pass it to child component directly (prop: \".concat(key, \")\"));\n        });\n      }\n      var control = _objectSpread(_objectSpread({}, childProps), valueProps);\n\n      // Add trigger\n      control[trigger] = function () {\n        // Mark as touched\n        _this.touched = true;\n        _this.dirty = true;\n        _this.triggerMetaEvent();\n        var newValue;\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        if (getValueFromEvent) {\n          newValue = getValueFromEvent.apply(void 0, args);\n        } else {\n          newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n        }\n        if (normalize) {\n          newValue = normalize(newValue, value, getFieldsValue(true));\n        }\n        if (newValue !== value) {\n          dispatch({\n            type: 'updateValue',\n            namePath: namePath,\n            value: newValue\n          });\n        }\n        if (originTriggerFunc) {\n          originTriggerFunc.apply(void 0, args);\n        }\n      };\n\n      // Add validateTrigger\n      var validateTriggerList = toArray(mergedValidateTrigger || []);\n      validateTriggerList.forEach(function (triggerName) {\n        // Wrap additional function of component, so that we can get latest value from store\n        var originTrigger = control[triggerName];\n        control[triggerName] = function () {\n          if (originTrigger) {\n            originTrigger.apply(void 0, arguments);\n          }\n\n          // Always use latest rules\n          var rules = _this.props.rules;\n          if (rules && rules.length) {\n            // We dispatch validate to root,\n            // since it will update related data with other field with same name\n            dispatch({\n              type: 'validateField',\n              namePath: namePath,\n              triggerName: triggerName\n            });\n          }\n        };\n      });\n      return control;\n    });\n    if (props.fieldContext) {\n      var getInternalHooks = props.fieldContext.getInternalHooks;\n      var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n        initEntityValue = _getInternalHooks2.initEntityValue;\n      initEntityValue(_assertThisInitialized(_this));\n    }\n    return _this;\n  }\n  _createClass(Field, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props7 = this.props,\n        shouldUpdate = _this$props7.shouldUpdate,\n        fieldContext = _this$props7.fieldContext;\n      this.mounted = true;\n\n      // Register on init\n      if (fieldContext) {\n        var getInternalHooks = fieldContext.getInternalHooks;\n        var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n          registerField = _getInternalHooks3.registerField;\n        this.cancelRegisterFunc = registerField(this);\n      }\n\n      // One more render for component in case fields not ready\n      if (shouldUpdate === true) {\n        this.reRender();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.cancelRegister();\n      this.triggerMetaEvent(true);\n      this.mounted = false;\n    }\n  }, {\n    key: \"reRender\",\n    value: function reRender() {\n      if (!this.mounted) return;\n      this.forceUpdate();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var resetCount = this.state.resetCount;\n      var children = this.props.children;\n      var _this$getOnlyChild = this.getOnlyChild(children),\n        child = _this$getOnlyChild.child,\n        isFunction = _this$getOnlyChild.isFunction;\n\n      // Not need to `cloneElement` since user can handle this in render function self\n      var returnChildNode;\n      if (isFunction) {\n        returnChildNode = child;\n      } else if ( /*#__PURE__*/React.isValidElement(child)) {\n        returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n      } else {\n        warning(!child, '`children` of Field is not validate ReactElement.');\n        returnChildNode = child;\n      }\n      return /*#__PURE__*/React.createElement(React.Fragment, {\n        key: resetCount\n      }, returnChildNode);\n    }\n  }]);\n  return Field;\n}(React.Component);\n_defineProperty(Field, \"contextType\", FieldContext);\n_defineProperty(Field, \"defaultProps\", {\n  trigger: 'onChange',\n  valuePropName: 'value'\n});\nfunction WrapperField(_ref6) {\n  var _restProps$isListFiel;\n  var name = _ref6.name,\n    restProps = _objectWithoutProperties(_ref6, _excluded);\n  var fieldContext = React.useContext(FieldContext);\n  var listContext = React.useContext(ListContext);\n  var namePath = name !== undefined ? getNamePath(name) : undefined;\n  var isMergedListField = (_restProps$isListFiel = restProps.isListField) !== null && _restProps$isListFiel !== void 0 ? _restProps$isListFiel : !!listContext;\n  var key = 'keep';\n  if (!isMergedListField) {\n    key = \"_\".concat((namePath || []).join('_'));\n  }\n\n  // Warning if it's a directly list field.\n  // We can still support multiple level field preserve.\n  if (process.env.NODE_ENV !== 'production' && restProps.preserve === false && isMergedListField && namePath.length <= 1) {\n    warning(false, '`preserve` should not apply on Form.List fields.');\n  }\n  return /*#__PURE__*/React.createElement(Field, _extends({\n    key: key,\n    name: namePath,\n    isListField: isMergedListField\n  }, restProps, {\n    fieldContext: fieldContext\n  }));\n}\nexport default WrapperField;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport FieldContext from \"./FieldContext\";\nimport Field from \"./Field\";\nimport { move as _move, getNamePath } from \"./utils/valueUtil\";\nimport ListContext from \"./ListContext\";\nfunction List(_ref) {\n  var name = _ref.name,\n    initialValue = _ref.initialValue,\n    children = _ref.children,\n    rules = _ref.rules,\n    validateTrigger = _ref.validateTrigger,\n    isListField = _ref.isListField;\n  var context = React.useContext(FieldContext);\n  var wrapperListContext = React.useContext(ListContext);\n  var keyRef = React.useRef({\n    keys: [],\n    id: 0\n  });\n  var keyManager = keyRef.current;\n  var prefixName = React.useMemo(function () {\n    var parentPrefixName = getNamePath(context.prefixName) || [];\n    return [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));\n  }, [context.prefixName, name]);\n  var fieldContext = React.useMemo(function () {\n    return _objectSpread(_objectSpread({}, context), {}, {\n      prefixName: prefixName\n    });\n  }, [context, prefixName]);\n\n  // List context\n  var listContext = React.useMemo(function () {\n    return {\n      getKey: function getKey(namePath) {\n        var len = prefixName.length;\n        var pathName = namePath[len];\n        return [keyManager.keys[pathName], namePath.slice(len + 1)];\n      }\n    };\n  }, [prefixName]);\n\n  // User should not pass `children` as other type.\n  if (typeof children !== 'function') {\n    warning(false, 'Form.List only accepts function as children.');\n    return null;\n  }\n  var shouldUpdate = function shouldUpdate(prevValue, nextValue, _ref2) {\n    var source = _ref2.source;\n    if (source === 'internal') {\n      return false;\n    }\n    return prevValue !== nextValue;\n  };\n  return /*#__PURE__*/React.createElement(ListContext.Provider, {\n    value: listContext\n  }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n    value: fieldContext\n  }, /*#__PURE__*/React.createElement(Field, {\n    name: [],\n    shouldUpdate: shouldUpdate,\n    rules: rules,\n    validateTrigger: validateTrigger,\n    initialValue: initialValue,\n    isList: true,\n    isListField: isListField !== null && isListField !== void 0 ? isListField : !!wrapperListContext\n  }, function (_ref3, meta) {\n    var _ref3$value = _ref3.value,\n      value = _ref3$value === void 0 ? [] : _ref3$value,\n      onChange = _ref3.onChange;\n    var getFieldValue = context.getFieldValue;\n    var getNewValue = function getNewValue() {\n      var values = getFieldValue(prefixName || []);\n      return values || [];\n    };\n    /**\n     * Always get latest value in case user update fields by `form` api.\n     */\n    var operations = {\n      add: function add(defaultValue, index) {\n        // Mapping keys\n        var newValue = getNewValue();\n        if (index >= 0 && index <= newValue.length) {\n          keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index)));\n          onChange([].concat(_toConsumableArray(newValue.slice(0, index)), [defaultValue], _toConsumableArray(newValue.slice(index))));\n        } else {\n          if (process.env.NODE_ENV !== 'production' && (index < 0 || index > newValue.length)) {\n            warning(false, 'The second parameter of the add function should be a valid positive number.');\n          }\n          keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);\n          onChange([].concat(_toConsumableArray(newValue), [defaultValue]));\n        }\n        keyManager.id += 1;\n      },\n      remove: function remove(index) {\n        var newValue = getNewValue();\n        var indexSet = new Set(Array.isArray(index) ? index : [index]);\n        if (indexSet.size <= 0) {\n          return;\n        }\n        keyManager.keys = keyManager.keys.filter(function (_, keysIndex) {\n          return !indexSet.has(keysIndex);\n        });\n\n        // Trigger store change\n        onChange(newValue.filter(function (_, valueIndex) {\n          return !indexSet.has(valueIndex);\n        }));\n      },\n      move: function move(from, to) {\n        if (from === to) {\n          return;\n        }\n        var newValue = getNewValue();\n\n        // Do not handle out of range\n        if (from < 0 || from >= newValue.length || to < 0 || to >= newValue.length) {\n          return;\n        }\n        keyManager.keys = _move(keyManager.keys, from, to);\n\n        // Trigger store change\n        onChange(_move(newValue, from, to));\n      }\n    };\n    var listValue = value || [];\n    if (!Array.isArray(listValue)) {\n      listValue = [];\n      if (process.env.NODE_ENV !== 'production') {\n        warning(false, \"Current value of '\".concat(prefixName.join(' > '), \"' is not an array type.\"));\n      }\n    }\n    return children(listValue.map(function (__, index) {\n      var key = keyManager.keys[index];\n      if (key === undefined) {\n        keyManager.keys[index] = keyManager.id;\n        key = keyManager.keys[index];\n        keyManager.id += 1;\n      }\n      return {\n        name: index,\n        key: key,\n        isListField: true\n      };\n    }), operations, meta);\n  })));\n}\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar SPLIT = '__@field_split__';\n\n/**\n * Convert name path into string to fast the fetch speed of Map.\n */\nfunction normalize(namePath) {\n  return namePath.map(function (cell) {\n    return \"\".concat(_typeof(cell), \":\").concat(cell);\n  })\n  // Magic split\n  .join(SPLIT);\n}\n\n/**\n * NameMap like a `Map` but accepts `string[]` as key.\n */\nvar NameMap = /*#__PURE__*/function () {\n  function NameMap() {\n    _classCallCheck(this, NameMap);\n    _defineProperty(this, \"kvs\", new Map());\n  }\n  _createClass(NameMap, [{\n    key: \"set\",\n    value: function set(key, value) {\n      this.kvs.set(normalize(key), value);\n    }\n  }, {\n    key: \"get\",\n    value: function get(key) {\n      return this.kvs.get(normalize(key));\n    }\n  }, {\n    key: \"update\",\n    value: function update(key, updater) {\n      var origin = this.get(key);\n      var next = updater(origin);\n      if (!next) {\n        this.delete(key);\n      } else {\n        this.set(key, next);\n      }\n    }\n  }, {\n    key: \"delete\",\n    value: function _delete(key) {\n      this.kvs.delete(normalize(key));\n    }\n\n    // Since we only use this in test, let simply realize this\n  }, {\n    key: \"map\",\n    value: function map(callback) {\n      return _toConsumableArray(this.kvs.entries()).map(function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n          key = _ref2[0],\n          value = _ref2[1];\n        var cells = key.split(SPLIT);\n        return callback({\n          key: cells.map(function (cell) {\n            var _cell$match = cell.match(/^([^:]*):(.*)$/),\n              _cell$match2 = _slicedToArray(_cell$match, 3),\n              type = _cell$match2[1],\n              unit = _cell$match2[2];\n            return type === 'number' ? Number(unit) : unit;\n          }),\n          value: value\n        });\n      });\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      var json = {};\n      this.map(function (_ref3) {\n        var key = _ref3.key,\n          value = _ref3.value;\n        json[key.join('.')] = value;\n        return null;\n      });\n      return json;\n    }\n  }]);\n  return NameMap;\n}();\nexport default NameMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"name\"];\nimport { merge } from \"rc-util/es/utils/set\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { HOOK_MARK } from \"./FieldContext\";\nimport { allPromiseFinish } from \"./utils/asyncUtil\";\nimport { defaultValidateMessages } from \"./utils/messages\";\nimport NameMap from \"./utils/NameMap\";\nimport { cloneByNamePathList, containsNamePath, getNamePath, getValue, matchNamePath, setValue } from \"./utils/valueUtil\";\nexport var FormStore = /*#__PURE__*/_createClass(function FormStore(forceRootUpdate) {\n  var _this = this;\n  _classCallCheck(this, FormStore);\n  _defineProperty(this, \"formHooked\", false);\n  _defineProperty(this, \"forceRootUpdate\", void 0);\n  _defineProperty(this, \"subscribable\", true);\n  _defineProperty(this, \"store\", {});\n  _defineProperty(this, \"fieldEntities\", []);\n  _defineProperty(this, \"initialValues\", {});\n  _defineProperty(this, \"callbacks\", {});\n  _defineProperty(this, \"validateMessages\", null);\n  _defineProperty(this, \"preserve\", null);\n  _defineProperty(this, \"lastValidatePromise\", null);\n  _defineProperty(this, \"getForm\", function () {\n    return {\n      getFieldValue: _this.getFieldValue,\n      getFieldsValue: _this.getFieldsValue,\n      getFieldError: _this.getFieldError,\n      getFieldWarning: _this.getFieldWarning,\n      getFieldsError: _this.getFieldsError,\n      isFieldsTouched: _this.isFieldsTouched,\n      isFieldTouched: _this.isFieldTouched,\n      isFieldValidating: _this.isFieldValidating,\n      isFieldsValidating: _this.isFieldsValidating,\n      resetFields: _this.resetFields,\n      setFields: _this.setFields,\n      setFieldValue: _this.setFieldValue,\n      setFieldsValue: _this.setFieldsValue,\n      validateFields: _this.validateFields,\n      submit: _this.submit,\n      _init: true,\n      getInternalHooks: _this.getInternalHooks\n    };\n  });\n  // ======================== Internal Hooks ========================\n  _defineProperty(this, \"getInternalHooks\", function (key) {\n    if (key === HOOK_MARK) {\n      _this.formHooked = true;\n      return {\n        dispatch: _this.dispatch,\n        initEntityValue: _this.initEntityValue,\n        registerField: _this.registerField,\n        useSubscribe: _this.useSubscribe,\n        setInitialValues: _this.setInitialValues,\n        destroyForm: _this.destroyForm,\n        setCallbacks: _this.setCallbacks,\n        setValidateMessages: _this.setValidateMessages,\n        getFields: _this.getFields,\n        setPreserve: _this.setPreserve,\n        getInitialValue: _this.getInitialValue,\n        registerWatch: _this.registerWatch\n      };\n    }\n    warning(false, '`getInternalHooks` is internal usage. Should not call directly.');\n    return null;\n  });\n  _defineProperty(this, \"useSubscribe\", function (subscribable) {\n    _this.subscribable = subscribable;\n  });\n  /**\n   * Record prev Form unmount fieldEntities which config preserve false.\n   * This need to be refill with initialValues instead of store value.\n   */\n  _defineProperty(this, \"prevWithoutPreserves\", null);\n  /**\n   * First time `setInitialValues` should update store with initial value\n   */\n  _defineProperty(this, \"setInitialValues\", function (initialValues, init) {\n    _this.initialValues = initialValues || {};\n    if (init) {\n      var _this$prevWithoutPres;\n      var nextStore = merge(initialValues, _this.store);\n\n      // We will take consider prev form unmount fields.\n      // When the field is not `preserve`, we need fill this with initialValues instead of store.\n      // eslint-disable-next-line array-callback-return\n      (_this$prevWithoutPres = _this.prevWithoutPreserves) === null || _this$prevWithoutPres === void 0 || _this$prevWithoutPres.map(function (_ref) {\n        var namePath = _ref.key;\n        nextStore = setValue(nextStore, namePath, getValue(initialValues, namePath));\n      });\n      _this.prevWithoutPreserves = null;\n      _this.updateStore(nextStore);\n    }\n  });\n  _defineProperty(this, \"destroyForm\", function (clearOnDestroy) {\n    if (clearOnDestroy) {\n      // destroy form reset store\n      _this.updateStore({});\n    } else {\n      // Fill preserve fields\n      var prevWithoutPreserves = new NameMap();\n      _this.getFieldEntities(true).forEach(function (entity) {\n        if (!_this.isMergedPreserve(entity.isPreserve())) {\n          prevWithoutPreserves.set(entity.getNamePath(), true);\n        }\n      });\n      _this.prevWithoutPreserves = prevWithoutPreserves;\n    }\n  });\n  _defineProperty(this, \"getInitialValue\", function (namePath) {\n    var initValue = getValue(_this.initialValues, namePath);\n\n    // Not cloneDeep when without `namePath`\n    return namePath.length ? merge(initValue) : initValue;\n  });\n  _defineProperty(this, \"setCallbacks\", function (callbacks) {\n    _this.callbacks = callbacks;\n  });\n  _defineProperty(this, \"setValidateMessages\", function (validateMessages) {\n    _this.validateMessages = validateMessages;\n  });\n  _defineProperty(this, \"setPreserve\", function (preserve) {\n    _this.preserve = preserve;\n  });\n  // ============================= Watch ============================\n  _defineProperty(this, \"watchList\", []);\n  _defineProperty(this, \"registerWatch\", function (callback) {\n    _this.watchList.push(callback);\n    return function () {\n      _this.watchList = _this.watchList.filter(function (fn) {\n        return fn !== callback;\n      });\n    };\n  });\n  _defineProperty(this, \"notifyWatch\", function () {\n    var namePath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    // No need to cost perf when nothing need to watch\n    if (_this.watchList.length) {\n      var values = _this.getFieldsValue();\n      var allValues = _this.getFieldsValue(true);\n      _this.watchList.forEach(function (callback) {\n        callback(values, allValues, namePath);\n      });\n    }\n  });\n  // ========================== Dev Warning =========================\n  _defineProperty(this, \"timeoutId\", null);\n  _defineProperty(this, \"warningUnhooked\", function () {\n    if (process.env.NODE_ENV !== 'production' && !_this.timeoutId && typeof window !== 'undefined') {\n      _this.timeoutId = setTimeout(function () {\n        _this.timeoutId = null;\n        if (!_this.formHooked) {\n          warning(false, 'Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?');\n        }\n      });\n    }\n  });\n  // ============================ Store =============================\n  _defineProperty(this, \"updateStore\", function (nextStore) {\n    _this.store = nextStore;\n  });\n  // ============================ Fields ============================\n  /**\n   * Get registered field entities.\n   * @param pure Only return field which has a `name`. Default: false\n   */\n  _defineProperty(this, \"getFieldEntities\", function () {\n    var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    if (!pure) {\n      return _this.fieldEntities;\n    }\n    return _this.fieldEntities.filter(function (field) {\n      return field.getNamePath().length;\n    });\n  });\n  _defineProperty(this, \"getFieldsMap\", function () {\n    var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var cache = new NameMap();\n    _this.getFieldEntities(pure).forEach(function (field) {\n      var namePath = field.getNamePath();\n      cache.set(namePath, field);\n    });\n    return cache;\n  });\n  _defineProperty(this, \"getFieldEntitiesForNamePathList\", function (nameList) {\n    if (!nameList) {\n      return _this.getFieldEntities(true);\n    }\n    var cache = _this.getFieldsMap(true);\n    return nameList.map(function (name) {\n      var namePath = getNamePath(name);\n      return cache.get(namePath) || {\n        INVALIDATE_NAME_PATH: getNamePath(name)\n      };\n    });\n  });\n  _defineProperty(this, \"getFieldsValue\", function (nameList, filterFunc) {\n    _this.warningUnhooked();\n\n    // Fill args\n    var mergedNameList;\n    var mergedFilterFunc;\n    var mergedStrict;\n    if (nameList === true || Array.isArray(nameList)) {\n      mergedNameList = nameList;\n      mergedFilterFunc = filterFunc;\n    } else if (nameList && _typeof(nameList) === 'object') {\n      mergedStrict = nameList.strict;\n      mergedFilterFunc = nameList.filter;\n    }\n    if (mergedNameList === true && !mergedFilterFunc) {\n      return _this.store;\n    }\n    var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(mergedNameList) ? mergedNameList : null);\n    var filteredNameList = [];\n    fieldEntities.forEach(function (entity) {\n      var _isListField, _ref3;\n      var namePath = 'INVALIDATE_NAME_PATH' in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath();\n\n      // Ignore when it's a list item and not specific the namePath,\n      // since parent field is already take in count\n      if (mergedStrict) {\n        var _isList, _ref2;\n        if ((_isList = (_ref2 = entity).isList) !== null && _isList !== void 0 && _isList.call(_ref2)) {\n          return;\n        }\n      } else if (!mergedNameList && (_isListField = (_ref3 = entity).isListField) !== null && _isListField !== void 0 && _isListField.call(_ref3)) {\n        return;\n      }\n      if (!mergedFilterFunc) {\n        filteredNameList.push(namePath);\n      } else {\n        var meta = 'getMeta' in entity ? entity.getMeta() : null;\n        if (mergedFilterFunc(meta)) {\n          filteredNameList.push(namePath);\n        }\n      }\n    });\n    return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));\n  });\n  _defineProperty(this, \"getFieldValue\", function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    return getValue(_this.store, namePath);\n  });\n  _defineProperty(this, \"getFieldsError\", function (nameList) {\n    _this.warningUnhooked();\n    var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);\n    return fieldEntities.map(function (entity, index) {\n      if (entity && !('INVALIDATE_NAME_PATH' in entity)) {\n        return {\n          name: entity.getNamePath(),\n          errors: entity.getErrors(),\n          warnings: entity.getWarnings()\n        };\n      }\n      return {\n        name: getNamePath(nameList[index]),\n        errors: [],\n        warnings: []\n      };\n    });\n  });\n  _defineProperty(this, \"getFieldError\", function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    var fieldError = _this.getFieldsError([namePath])[0];\n    return fieldError.errors;\n  });\n  _defineProperty(this, \"getFieldWarning\", function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    var fieldError = _this.getFieldsError([namePath])[0];\n    return fieldError.warnings;\n  });\n  _defineProperty(this, \"isFieldsTouched\", function () {\n    _this.warningUnhooked();\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var arg0 = args[0],\n      arg1 = args[1];\n    var namePathList;\n    var isAllFieldsTouched = false;\n    if (args.length === 0) {\n      namePathList = null;\n    } else if (args.length === 1) {\n      if (Array.isArray(arg0)) {\n        namePathList = arg0.map(getNamePath);\n        isAllFieldsTouched = false;\n      } else {\n        namePathList = null;\n        isAllFieldsTouched = arg0;\n      }\n    } else {\n      namePathList = arg0.map(getNamePath);\n      isAllFieldsTouched = arg1;\n    }\n    var fieldEntities = _this.getFieldEntities(true);\n    var isFieldTouched = function isFieldTouched(field) {\n      return field.isFieldTouched();\n    };\n\n    // ===== Will get fully compare when not config namePathList =====\n    if (!namePathList) {\n      return isAllFieldsTouched ? fieldEntities.every(function (entity) {\n        return isFieldTouched(entity) || entity.isList();\n      }) : fieldEntities.some(isFieldTouched);\n    }\n\n    // Generate a nest tree for validate\n    var map = new NameMap();\n    namePathList.forEach(function (shortNamePath) {\n      map.set(shortNamePath, []);\n    });\n    fieldEntities.forEach(function (field) {\n      var fieldNamePath = field.getNamePath();\n\n      // Find matched entity and put into list\n      namePathList.forEach(function (shortNamePath) {\n        if (shortNamePath.every(function (nameUnit, i) {\n          return fieldNamePath[i] === nameUnit;\n        })) {\n          map.update(shortNamePath, function (list) {\n            return [].concat(_toConsumableArray(list), [field]);\n          });\n        }\n      });\n    });\n\n    // Check if NameMap value is touched\n    var isNamePathListTouched = function isNamePathListTouched(entities) {\n      return entities.some(isFieldTouched);\n    };\n    var namePathListEntities = map.map(function (_ref4) {\n      var value = _ref4.value;\n      return value;\n    });\n    return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);\n  });\n  _defineProperty(this, \"isFieldTouched\", function (name) {\n    _this.warningUnhooked();\n    return _this.isFieldsTouched([name]);\n  });\n  _defineProperty(this, \"isFieldsValidating\", function (nameList) {\n    _this.warningUnhooked();\n    var fieldEntities = _this.getFieldEntities();\n    if (!nameList) {\n      return fieldEntities.some(function (testField) {\n        return testField.isFieldValidating();\n      });\n    }\n    var namePathList = nameList.map(getNamePath);\n    return fieldEntities.some(function (testField) {\n      var fieldNamePath = testField.getNamePath();\n      return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();\n    });\n  });\n  _defineProperty(this, \"isFieldValidating\", function (name) {\n    _this.warningUnhooked();\n    return _this.isFieldsValidating([name]);\n  });\n  /**\n   * Reset Field with field `initialValue` prop.\n   * Can pass `entities` or `namePathList` or just nothing.\n   */\n  _defineProperty(this, \"resetWithFieldInitialValue\", function () {\n    var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // Create cache\n    var cache = new NameMap();\n    var fieldEntities = _this.getFieldEntities(true);\n    fieldEntities.forEach(function (field) {\n      var initialValue = field.props.initialValue;\n      var namePath = field.getNamePath();\n\n      // Record only if has `initialValue`\n      if (initialValue !== undefined) {\n        var records = cache.get(namePath) || new Set();\n        records.add({\n          entity: field,\n          value: initialValue\n        });\n        cache.set(namePath, records);\n      }\n    });\n\n    // Reset\n    var resetWithFields = function resetWithFields(entities) {\n      entities.forEach(function (field) {\n        var initialValue = field.props.initialValue;\n        if (initialValue !== undefined) {\n          var namePath = field.getNamePath();\n          var formInitialValue = _this.getInitialValue(namePath);\n          if (formInitialValue !== undefined) {\n            // Warning if conflict with form initialValues and do not modify value\n            warning(false, \"Form already set 'initialValues' with path '\".concat(namePath.join('.'), \"'. Field can not overwrite it.\"));\n          } else {\n            var records = cache.get(namePath);\n            if (records && records.size > 1) {\n              // Warning if multiple field set `initialValue`and do not modify value\n              warning(false, \"Multiple Field with path '\".concat(namePath.join('.'), \"' set 'initialValue'. Can not decide which one to pick.\"));\n            } else if (records) {\n              var originValue = _this.getFieldValue(namePath);\n              var isListField = field.isListField();\n\n              // Set `initialValue`\n              if (!isListField && (!info.skipExist || originValue === undefined)) {\n                _this.updateStore(setValue(_this.store, namePath, _toConsumableArray(records)[0].value));\n              }\n            }\n          }\n        }\n      });\n    };\n    var requiredFieldEntities;\n    if (info.entities) {\n      requiredFieldEntities = info.entities;\n    } else if (info.namePathList) {\n      requiredFieldEntities = [];\n      info.namePathList.forEach(function (namePath) {\n        var records = cache.get(namePath);\n        if (records) {\n          var _requiredFieldEntitie;\n          (_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function (r) {\n            return r.entity;\n          })));\n        }\n      });\n    } else {\n      requiredFieldEntities = fieldEntities;\n    }\n    resetWithFields(requiredFieldEntities);\n  });\n  _defineProperty(this, \"resetFields\", function (nameList) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    if (!nameList) {\n      _this.updateStore(merge(_this.initialValues));\n      _this.resetWithFieldInitialValue();\n      _this.notifyObservers(prevStore, null, {\n        type: 'reset'\n      });\n      _this.notifyWatch();\n      return;\n    }\n\n    // Reset by `nameList`\n    var namePathList = nameList.map(getNamePath);\n    namePathList.forEach(function (namePath) {\n      var initialValue = _this.getInitialValue(namePath);\n      _this.updateStore(setValue(_this.store, namePath, initialValue));\n    });\n    _this.resetWithFieldInitialValue({\n      namePathList: namePathList\n    });\n    _this.notifyObservers(prevStore, namePathList, {\n      type: 'reset'\n    });\n    _this.notifyWatch(namePathList);\n  });\n  _defineProperty(this, \"setFields\", function (fields) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    var namePathList = [];\n    fields.forEach(function (fieldData) {\n      var name = fieldData.name,\n        data = _objectWithoutProperties(fieldData, _excluded);\n      var namePath = getNamePath(name);\n      namePathList.push(namePath);\n\n      // Value\n      if ('value' in data) {\n        _this.updateStore(setValue(_this.store, namePath, data.value));\n      }\n      _this.notifyObservers(prevStore, [namePath], {\n        type: 'setField',\n        data: fieldData\n      });\n    });\n    _this.notifyWatch(namePathList);\n  });\n  _defineProperty(this, \"getFields\", function () {\n    var entities = _this.getFieldEntities(true);\n    var fields = entities.map(function (field) {\n      var namePath = field.getNamePath();\n      var meta = field.getMeta();\n      var fieldData = _objectSpread(_objectSpread({}, meta), {}, {\n        name: namePath,\n        value: _this.getFieldValue(namePath)\n      });\n      Object.defineProperty(fieldData, 'originRCField', {\n        value: true\n      });\n      return fieldData;\n    });\n    return fields;\n  });\n  // =========================== Observer ===========================\n  /**\n   * This only trigger when a field is on constructor to avoid we get initialValue too late\n   */\n  _defineProperty(this, \"initEntityValue\", function (entity) {\n    var initialValue = entity.props.initialValue;\n    if (initialValue !== undefined) {\n      var namePath = entity.getNamePath();\n      var prevValue = getValue(_this.store, namePath);\n      if (prevValue === undefined) {\n        _this.updateStore(setValue(_this.store, namePath, initialValue));\n      }\n    }\n  });\n  _defineProperty(this, \"isMergedPreserve\", function (fieldPreserve) {\n    var mergedPreserve = fieldPreserve !== undefined ? fieldPreserve : _this.preserve;\n    return mergedPreserve !== null && mergedPreserve !== void 0 ? mergedPreserve : true;\n  });\n  _defineProperty(this, \"registerField\", function (entity) {\n    _this.fieldEntities.push(entity);\n    var namePath = entity.getNamePath();\n    _this.notifyWatch([namePath]);\n\n    // Set initial values\n    if (entity.props.initialValue !== undefined) {\n      var prevStore = _this.store;\n      _this.resetWithFieldInitialValue({\n        entities: [entity],\n        skipExist: true\n      });\n      _this.notifyObservers(prevStore, [entity.getNamePath()], {\n        type: 'valueUpdate',\n        source: 'internal'\n      });\n    }\n\n    // un-register field callback\n    return function (isListField, preserve) {\n      var subNamePath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n      _this.fieldEntities = _this.fieldEntities.filter(function (item) {\n        return item !== entity;\n      });\n\n      // Clean up store value if not preserve\n      if (!_this.isMergedPreserve(preserve) && (!isListField || subNamePath.length > 1)) {\n        var defaultValue = isListField ? undefined : _this.getInitialValue(namePath);\n        if (namePath.length && _this.getFieldValue(namePath) !== defaultValue && _this.fieldEntities.every(function (field) {\n          return (\n            // Only reset when no namePath exist\n            !matchNamePath(field.getNamePath(), namePath)\n          );\n        })) {\n          var _prevStore = _this.store;\n          _this.updateStore(setValue(_prevStore, namePath, defaultValue, true));\n\n          // Notify that field is unmount\n          _this.notifyObservers(_prevStore, [namePath], {\n            type: 'remove'\n          });\n\n          // Dependencies update\n          _this.triggerDependenciesUpdate(_prevStore, namePath);\n        }\n      }\n      _this.notifyWatch([namePath]);\n    };\n  });\n  _defineProperty(this, \"dispatch\", function (action) {\n    switch (action.type) {\n      case 'updateValue':\n        {\n          var namePath = action.namePath,\n            value = action.value;\n          _this.updateValue(namePath, value);\n          break;\n        }\n      case 'validateField':\n        {\n          var _namePath = action.namePath,\n            triggerName = action.triggerName;\n          _this.validateFields([_namePath], {\n            triggerName: triggerName\n          });\n          break;\n        }\n      default:\n      // Currently we don't have other action. Do nothing.\n    }\n  });\n  _defineProperty(this, \"notifyObservers\", function (prevStore, namePathList, info) {\n    if (_this.subscribable) {\n      var mergedInfo = _objectSpread(_objectSpread({}, info), {}, {\n        store: _this.getFieldsValue(true)\n      });\n      _this.getFieldEntities().forEach(function (_ref5) {\n        var onStoreChange = _ref5.onStoreChange;\n        onStoreChange(prevStore, namePathList, mergedInfo);\n      });\n    } else {\n      _this.forceRootUpdate();\n    }\n  });\n  /**\n   * Notify dependencies children with parent update\n   * We need delay to trigger validate in case Field is under render props\n   */\n  _defineProperty(this, \"triggerDependenciesUpdate\", function (prevStore, namePath) {\n    var childrenFields = _this.getDependencyChildrenFields(namePath);\n    if (childrenFields.length) {\n      _this.validateFields(childrenFields);\n    }\n    _this.notifyObservers(prevStore, childrenFields, {\n      type: 'dependenciesUpdate',\n      relatedFields: [namePath].concat(_toConsumableArray(childrenFields))\n    });\n    return childrenFields;\n  });\n  _defineProperty(this, \"updateValue\", function (name, value) {\n    var namePath = getNamePath(name);\n    var prevStore = _this.store;\n    _this.updateStore(setValue(_this.store, namePath, value));\n    _this.notifyObservers(prevStore, [namePath], {\n      type: 'valueUpdate',\n      source: 'internal'\n    });\n    _this.notifyWatch([namePath]);\n\n    // Dependencies update\n    var childrenFields = _this.triggerDependenciesUpdate(prevStore, namePath);\n\n    // trigger callback function\n    var onValuesChange = _this.callbacks.onValuesChange;\n    if (onValuesChange) {\n      var changedValues = cloneByNamePathList(_this.store, [namePath]);\n      onValuesChange(changedValues, _this.getFieldsValue());\n    }\n    _this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));\n  });\n  // Let all child Field get update.\n  _defineProperty(this, \"setFieldsValue\", function (store) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    if (store) {\n      var nextStore = merge(_this.store, store);\n      _this.updateStore(nextStore);\n    }\n    _this.notifyObservers(prevStore, null, {\n      type: 'valueUpdate',\n      source: 'external'\n    });\n    _this.notifyWatch();\n  });\n  _defineProperty(this, \"setFieldValue\", function (name, value) {\n    _this.setFields([{\n      name: name,\n      value: value,\n      errors: [],\n      warnings: []\n    }]);\n  });\n  _defineProperty(this, \"getDependencyChildrenFields\", function (rootNamePath) {\n    var children = new Set();\n    var childrenFields = [];\n    var dependencies2fields = new NameMap();\n\n    /**\n     * Generate maps\n     * Can use cache to save perf if user report performance issue with this\n     */\n    _this.getFieldEntities().forEach(function (field) {\n      var dependencies = field.props.dependencies;\n      (dependencies || []).forEach(function (dependency) {\n        var dependencyNamePath = getNamePath(dependency);\n        dependencies2fields.update(dependencyNamePath, function () {\n          var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Set();\n          fields.add(field);\n          return fields;\n        });\n      });\n    });\n    var fillChildren = function fillChildren(namePath) {\n      var fields = dependencies2fields.get(namePath) || new Set();\n      fields.forEach(function (field) {\n        if (!children.has(field)) {\n          children.add(field);\n          var fieldNamePath = field.getNamePath();\n          if (field.isFieldDirty() && fieldNamePath.length) {\n            childrenFields.push(fieldNamePath);\n            fillChildren(fieldNamePath);\n          }\n        }\n      });\n    };\n    fillChildren(rootNamePath);\n    return childrenFields;\n  });\n  _defineProperty(this, \"triggerOnFieldsChange\", function (namePathList, filedErrors) {\n    var onFieldsChange = _this.callbacks.onFieldsChange;\n    if (onFieldsChange) {\n      var fields = _this.getFields();\n\n      /**\n       * Fill errors since `fields` may be replaced by controlled fields\n       */\n      if (filedErrors) {\n        var cache = new NameMap();\n        filedErrors.forEach(function (_ref6) {\n          var name = _ref6.name,\n            errors = _ref6.errors;\n          cache.set(name, errors);\n        });\n        fields.forEach(function (field) {\n          // eslint-disable-next-line no-param-reassign\n          field.errors = cache.get(field.name) || field.errors;\n        });\n      }\n      var changedFields = fields.filter(function (_ref7) {\n        var fieldName = _ref7.name;\n        return containsNamePath(namePathList, fieldName);\n      });\n      if (changedFields.length) {\n        onFieldsChange(changedFields, fields);\n      }\n    }\n  });\n  // =========================== Validate ===========================\n  _defineProperty(this, \"validateFields\", function (arg1, arg2) {\n    _this.warningUnhooked();\n    var nameList;\n    var options;\n    if (Array.isArray(arg1) || typeof arg1 === 'string' || typeof arg2 === 'string') {\n      nameList = arg1;\n      options = arg2;\n    } else {\n      options = arg1;\n    }\n    var provideNameList = !!nameList;\n    var namePathList = provideNameList ? nameList.map(getNamePath) : [];\n\n    // Collect result in promise list\n    var promiseList = [];\n\n    // We temp save the path which need trigger for `onFieldsChange`\n    var TMP_SPLIT = String(Date.now());\n    var validateNamePathList = new Set();\n    var _ref8 = options || {},\n      recursive = _ref8.recursive,\n      dirty = _ref8.dirty;\n    _this.getFieldEntities(true).forEach(function (field) {\n      // Add field if not provide `nameList`\n      if (!provideNameList) {\n        namePathList.push(field.getNamePath());\n      }\n\n      // Skip if without rule\n      if (!field.props.rules || !field.props.rules.length) {\n        return;\n      }\n\n      // Skip if only validate dirty field\n      if (dirty && !field.isFieldDirty()) {\n        return;\n      }\n      var fieldNamePath = field.getNamePath();\n      validateNamePathList.add(fieldNamePath.join(TMP_SPLIT));\n\n      // Add field validate rule in to promise list\n      if (!provideNameList || containsNamePath(namePathList, fieldNamePath, recursive)) {\n        var promise = field.validateRules(_objectSpread({\n          validateMessages: _objectSpread(_objectSpread({}, defaultValidateMessages), _this.validateMessages)\n        }, options));\n\n        // Wrap promise with field\n        promiseList.push(promise.then(function () {\n          return {\n            name: fieldNamePath,\n            errors: [],\n            warnings: []\n          };\n        }).catch(function (ruleErrors) {\n          var _ruleErrors$forEach;\n          var mergedErrors = [];\n          var mergedWarnings = [];\n          (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 || _ruleErrors$forEach.call(ruleErrors, function (_ref9) {\n            var warningOnly = _ref9.rule.warningOnly,\n              errors = _ref9.errors;\n            if (warningOnly) {\n              mergedWarnings.push.apply(mergedWarnings, _toConsumableArray(errors));\n            } else {\n              mergedErrors.push.apply(mergedErrors, _toConsumableArray(errors));\n            }\n          });\n          if (mergedErrors.length) {\n            return Promise.reject({\n              name: fieldNamePath,\n              errors: mergedErrors,\n              warnings: mergedWarnings\n            });\n          }\n          return {\n            name: fieldNamePath,\n            errors: mergedErrors,\n            warnings: mergedWarnings\n          };\n        }));\n      }\n    });\n    var summaryPromise = allPromiseFinish(promiseList);\n    _this.lastValidatePromise = summaryPromise;\n\n    // Notify fields with rule that validate has finished and need update\n    summaryPromise.catch(function (results) {\n      return results;\n    }).then(function (results) {\n      var resultNamePathList = results.map(function (_ref10) {\n        var name = _ref10.name;\n        return name;\n      });\n      _this.notifyObservers(_this.store, resultNamePathList, {\n        type: 'validateFinish'\n      });\n      _this.triggerOnFieldsChange(resultNamePathList, results);\n    });\n    var returnPromise = summaryPromise.then(function () {\n      if (_this.lastValidatePromise === summaryPromise) {\n        return Promise.resolve(_this.getFieldsValue(namePathList));\n      }\n      return Promise.reject([]);\n    }).catch(function (results) {\n      var errorList = results.filter(function (result) {\n        return result && result.errors.length;\n      });\n      return Promise.reject({\n        values: _this.getFieldsValue(namePathList),\n        errorFields: errorList,\n        outOfDate: _this.lastValidatePromise !== summaryPromise\n      });\n    });\n\n    // Do not throw in console\n    returnPromise.catch(function (e) {\n      return e;\n    });\n\n    // `validating` changed. Trigger `onFieldsChange`\n    var triggerNamePathList = namePathList.filter(function (namePath) {\n      return validateNamePathList.has(namePath.join(TMP_SPLIT));\n    });\n    _this.triggerOnFieldsChange(triggerNamePathList);\n    return returnPromise;\n  });\n  // ============================ Submit ============================\n  _defineProperty(this, \"submit\", function () {\n    _this.warningUnhooked();\n    _this.validateFields().then(function (values) {\n      var onFinish = _this.callbacks.onFinish;\n      if (onFinish) {\n        try {\n          onFinish(values);\n        } catch (err) {\n          // Should print error if user `onFinish` callback failed\n          console.error(err);\n        }\n      }\n    }).catch(function (e) {\n      var onFinishFailed = _this.callbacks.onFinishFailed;\n      if (onFinishFailed) {\n        onFinishFailed(e);\n      }\n    });\n  });\n  this.forceRootUpdate = forceRootUpdate;\n});\nfunction useForm(form) {\n  var formRef = React.useRef();\n  var _React$useState = React.useState({}),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    forceUpdate = _React$useState2[1];\n  if (!formRef.current) {\n    if (form) {\n      formRef.current = form;\n    } else {\n      // Create a new FormStore if not provided\n      var forceReRender = function forceReRender() {\n        forceUpdate({});\n      };\n      var formStore = new FormStore(forceReRender);\n      formRef.current = formStore.getForm();\n    }\n  }\n  return [formRef.current];\n}\nexport default useForm;","export function allPromiseFinish(promiseList) {\n  var hasError = false;\n  var count = promiseList.length;\n  var results = [];\n  if (!promiseList.length) {\n    return Promise.resolve([]);\n  }\n  return new Promise(function (resolve, reject) {\n    promiseList.forEach(function (promise, index) {\n      promise.catch(function (e) {\n        hasError = true;\n        return e;\n      }).then(function (result) {\n        count -= 1;\n        results[index] = result;\n        if (count > 0) {\n          return;\n        }\n        if (hasError) {\n          reject(results);\n        }\n        resolve(results);\n      });\n    });\n  });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nvar FormContext = /*#__PURE__*/React.createContext({\n  triggerFormChange: function triggerFormChange() {},\n  triggerFormFinish: function triggerFormFinish() {},\n  registerForm: function registerForm() {},\n  unregisterForm: function unregisterForm() {}\n});\nvar FormProvider = function FormProvider(_ref) {\n  var validateMessages = _ref.validateMessages,\n    onFormChange = _ref.onFormChange,\n    onFormFinish = _ref.onFormFinish,\n    children = _ref.children;\n  var formContext = React.useContext(FormContext);\n  var formsRef = React.useRef({});\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: _objectSpread(_objectSpread({}, formContext), {}, {\n      validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),\n      // =========================================================\n      // =                  Global Form Control                  =\n      // =========================================================\n      triggerFormChange: function triggerFormChange(name, changedFields) {\n        if (onFormChange) {\n          onFormChange(name, {\n            changedFields: changedFields,\n            forms: formsRef.current\n          });\n        }\n        formContext.triggerFormChange(name, changedFields);\n      },\n      triggerFormFinish: function triggerFormFinish(name, values) {\n        if (onFormFinish) {\n          onFormFinish(name, {\n            values: values,\n            forms: formsRef.current\n          });\n        }\n        formContext.triggerFormFinish(name, values);\n      },\n      registerForm: function registerForm(name, form) {\n        if (name) {\n          formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));\n        }\n        formContext.registerForm(name, form);\n      },\n      unregisterForm: function unregisterForm(name) {\n        var newForms = _objectSpread({}, formsRef.current);\n        delete newForms[name];\n        formsRef.current = newForms;\n        formContext.unregisterForm(name);\n      }\n    })\n  }, children);\n};\nexport { FormProvider };\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"name\", \"initialValues\", \"fields\", \"form\", \"preserve\", \"children\", \"component\", \"validateMessages\", \"validateTrigger\", \"onValuesChange\", \"onFieldsChange\", \"onFinish\", \"onFinishFailed\", \"clearOnDestroy\"];\nimport * as React from 'react';\nimport useForm from \"./useForm\";\nimport FieldContext, { HOOK_MARK } from \"./FieldContext\";\nimport FormContext from \"./FormContext\";\nimport { isSimilar } from \"./utils/valueUtil\";\nimport ListContext from \"./ListContext\";\nvar Form = function Form(_ref, ref) {\n  var name = _ref.name,\n    initialValues = _ref.initialValues,\n    fields = _ref.fields,\n    form = _ref.form,\n    preserve = _ref.preserve,\n    children = _ref.children,\n    _ref$component = _ref.component,\n    Component = _ref$component === void 0 ? 'form' : _ref$component,\n    validateMessages = _ref.validateMessages,\n    _ref$validateTrigger = _ref.validateTrigger,\n    validateTrigger = _ref$validateTrigger === void 0 ? 'onChange' : _ref$validateTrigger,\n    onValuesChange = _ref.onValuesChange,\n    _onFieldsChange = _ref.onFieldsChange,\n    _onFinish = _ref.onFinish,\n    onFinishFailed = _ref.onFinishFailed,\n    clearOnDestroy = _ref.clearOnDestroy,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var nativeElementRef = React.useRef(null);\n  var formContext = React.useContext(FormContext);\n\n  // We customize handle event since Context will makes all the consumer re-render:\n  // https://reactjs.org/docs/context.html#contextprovider\n  var _useForm = useForm(form),\n    _useForm2 = _slicedToArray(_useForm, 1),\n    formInstance = _useForm2[0];\n  var _getInternalHooks = formInstance.getInternalHooks(HOOK_MARK),\n    useSubscribe = _getInternalHooks.useSubscribe,\n    setInitialValues = _getInternalHooks.setInitialValues,\n    setCallbacks = _getInternalHooks.setCallbacks,\n    setValidateMessages = _getInternalHooks.setValidateMessages,\n    setPreserve = _getInternalHooks.setPreserve,\n    destroyForm = _getInternalHooks.destroyForm;\n\n  // Pass ref with form instance\n  React.useImperativeHandle(ref, function () {\n    return _objectSpread(_objectSpread({}, formInstance), {}, {\n      nativeElement: nativeElementRef.current\n    });\n  });\n\n  // Register form into Context\n  React.useEffect(function () {\n    formContext.registerForm(name, formInstance);\n    return function () {\n      formContext.unregisterForm(name);\n    };\n  }, [formContext, formInstance, name]);\n\n  // Pass props to store\n  setValidateMessages(_objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages));\n  setCallbacks({\n    onValuesChange: onValuesChange,\n    onFieldsChange: function onFieldsChange(changedFields) {\n      formContext.triggerFormChange(name, changedFields);\n      if (_onFieldsChange) {\n        for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          rest[_key - 1] = arguments[_key];\n        }\n        _onFieldsChange.apply(void 0, [changedFields].concat(rest));\n      }\n    },\n    onFinish: function onFinish(values) {\n      formContext.triggerFormFinish(name, values);\n      if (_onFinish) {\n        _onFinish(values);\n      }\n    },\n    onFinishFailed: onFinishFailed\n  });\n  setPreserve(preserve);\n\n  // Set initial value, init store value when first mount\n  var mountRef = React.useRef(null);\n  setInitialValues(initialValues, !mountRef.current);\n  if (!mountRef.current) {\n    mountRef.current = true;\n  }\n  React.useEffect(function () {\n    return function () {\n      return destroyForm(clearOnDestroy);\n    };\n  },\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  []);\n\n  // Prepare children by `children` type\n  var childrenNode;\n  var childrenRenderProps = typeof children === 'function';\n  if (childrenRenderProps) {\n    var _values = formInstance.getFieldsValue(true);\n    childrenNode = children(_values, formInstance);\n  } else {\n    childrenNode = children;\n  }\n\n  // Not use subscribe when using render props\n  useSubscribe(!childrenRenderProps);\n\n  // Listen if fields provided. We use ref to save prev data here to avoid additional render\n  var prevFieldsRef = React.useRef();\n  React.useEffect(function () {\n    if (!isSimilar(prevFieldsRef.current || [], fields || [])) {\n      formInstance.setFields(fields || []);\n    }\n    prevFieldsRef.current = fields;\n  }, [fields, formInstance]);\n  var formContextValue = React.useMemo(function () {\n    return _objectSpread(_objectSpread({}, formInstance), {}, {\n      validateTrigger: validateTrigger\n    });\n  }, [formInstance, validateTrigger]);\n  var wrapperNode = /*#__PURE__*/React.createElement(ListContext.Provider, {\n    value: null\n  }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n    value: formContextValue\n  }, childrenNode));\n  if (Component === false) {\n    return wrapperNode;\n  }\n  return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {\n    ref: nativeElementRef,\n    onSubmit: function onSubmit(event) {\n      event.preventDefault();\n      event.stopPropagation();\n      formInstance.submit();\n    },\n    onReset: function onReset(event) {\n      var _restProps$onReset;\n      event.preventDefault();\n      formInstance.resetFields();\n      (_restProps$onReset = restProps.onReset) === null || _restProps$onReset === void 0 || _restProps$onReset.call(restProps, event);\n    }\n  }), wrapperNode);\n};\nexport default Form;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport warning from \"rc-util/es/warning\";\nimport { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport FieldContext, { HOOK_MARK } from \"./FieldContext\";\nimport { isFormInstance } from \"./utils/typeUtil\";\nimport { getNamePath, getValue } from \"./utils/valueUtil\";\nexport function stringify(value) {\n  try {\n    return JSON.stringify(value);\n  } catch (err) {\n    return Math.random();\n  }\n}\nvar useWatchWarning = process.env.NODE_ENV !== 'production' ? function (namePath) {\n  var fullyStr = namePath.join('__RC_FIELD_FORM_SPLIT__');\n  var nameStrRef = useRef(fullyStr);\n  warning(nameStrRef.current === fullyStr, '`useWatch` is not support dynamic `namePath`. Please provide static instead.');\n} : function () {};\n\n// ------- selector type -------\n\n// ------- selector type end -------\n\nfunction useWatch() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  var dependencies = args[0],\n    _args$ = args[1],\n    _form = _args$ === void 0 ? {} : _args$;\n  var options = isFormInstance(_form) ? {\n    form: _form\n  } : _form;\n  var form = options.form;\n  var _useState = useState(),\n    _useState2 = _slicedToArray(_useState, 2),\n    value = _useState2[0],\n    setValue = _useState2[1];\n  var valueStr = useMemo(function () {\n    return stringify(value);\n  }, [value]);\n  var valueStrRef = useRef(valueStr);\n  valueStrRef.current = valueStr;\n  var fieldContext = useContext(FieldContext);\n  var formInstance = form || fieldContext;\n  var isValidForm = formInstance && formInstance._init;\n\n  // Warning if not exist form instance\n  if (process.env.NODE_ENV !== 'production') {\n    warning(args.length === 2 ? form ? isValidForm : true : isValidForm, 'useWatch requires a form instance since it can not auto detect from context.');\n  }\n  var namePath = getNamePath(dependencies);\n  var namePathRef = useRef(namePath);\n  namePathRef.current = namePath;\n  useWatchWarning(namePath);\n  useEffect(function () {\n    // Skip if not exist form instance\n    if (!isValidForm) {\n      return;\n    }\n    var getFieldsValue = formInstance.getFieldsValue,\n      getInternalHooks = formInstance.getInternalHooks;\n    var _getInternalHooks = getInternalHooks(HOOK_MARK),\n      registerWatch = _getInternalHooks.registerWatch;\n    var getWatchValue = function getWatchValue(values, allValues) {\n      var watchValue = options.preserve ? allValues : values;\n      return typeof dependencies === 'function' ? dependencies(watchValue) : getValue(watchValue, namePathRef.current);\n    };\n    var cancelRegister = registerWatch(function (values, allValues) {\n      var newValue = getWatchValue(values, allValues);\n      var nextValueStr = stringify(newValue);\n\n      // Compare stringify in case it's nest object\n      if (valueStrRef.current !== nextValueStr) {\n        valueStrRef.current = nextValueStr;\n        setValue(newValue);\n      }\n    });\n\n    // TODO: We can improve this perf in future\n    var initialValue = getWatchValue(getFieldsValue(), getFieldsValue(true));\n\n    // React 18 has the bug that will queue update twice even the value is not changed\n    // ref: https://github.com/facebook/react/issues/27213\n    if (value !== initialValue) {\n      setValue(initialValue);\n    }\n    return cancelRegister;\n  },\n  // We do not need re-register since namePath content is the same\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  [isValidForm]);\n  return value;\n}\nexport default useWatch;","import * as React from 'react';\nimport Field from \"./Field\";\nimport List from \"./List\";\nimport useForm from \"./useForm\";\nimport FieldForm from \"./Form\";\nimport { FormProvider } from \"./FormContext\";\nimport FieldContext from \"./FieldContext\";\nimport ListContext from \"./ListContext\";\nimport useWatch from \"./useWatch\";\nvar InternalForm = /*#__PURE__*/React.forwardRef(FieldForm);\nvar RefForm = InternalForm;\nRefForm.FormProvider = FormProvider;\nRefForm.Field = Field;\nRefForm.List = List;\nRefForm.useForm = useForm;\nRefForm.useWatch = useWatch;\nexport { Field, List, useForm, FormProvider, FieldContext, ListContext, useWatch };\nexport default RefForm;","\"use client\";\n\nimport * as React from 'react';\nimport { FormProvider as RcFormProvider } from 'rc-field-form';\nimport omit from \"rc-util/es/omit\";\nexport const FormContext = /*#__PURE__*/React.createContext({\n  labelAlign: 'right',\n  vertical: false,\n  itemRef: () => {}\n});\nexport const NoStyleItemContext = /*#__PURE__*/React.createContext(null);\nexport const FormProvider = props => {\n  const providerProps = omit(props, ['prefixCls']);\n  return /*#__PURE__*/React.createElement(RcFormProvider, Object.assign({}, providerProps));\n};\nexport const FormItemPrefixContext = /*#__PURE__*/React.createContext({\n  prefixCls: ''\n});\nexport const FormItemInputContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  FormItemInputContext.displayName = 'FormItemInputContext';\n}\nexport const NoFormStyle = _ref => {\n  let {\n    children,\n    status,\n    override\n  } = _ref;\n  const formItemInputContext = React.useContext(FormItemInputContext);\n  const newFormItemInputContext = React.useMemo(() => {\n    const newContext = Object.assign({}, formItemInputContext);\n    if (override) {\n      delete newContext.isFormItemInput;\n    }\n    if (status) {\n      delete newContext.status;\n      delete newContext.hasFeedback;\n      delete newContext.feedbackIcon;\n    }\n    return newContext;\n  }, [status, override, formItemInputContext]);\n  return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n    value: newFormItemInputContext\n  }, children);\n};\nexport const VariantContext = /*#__PURE__*/React.createContext(undefined);","\"use client\";\n\nimport * as React from 'react';\nconst SizeContext = /*#__PURE__*/React.createContext(undefined);\nexport const SizeContextProvider = _ref => {\n  let {\n    children,\n    size\n  } = _ref;\n  const originSize = React.useContext(SizeContext);\n  return /*#__PURE__*/React.createElement(SizeContext.Provider, {\n    value: size || originSize\n  }, children);\n};\nexport default SizeContext;","import React from 'react';\nimport SizeContext from '../SizeContext';\nconst useSize = customSize => {\n  const size = React.useContext(SizeContext);\n  const mergedSize = React.useMemo(() => {\n    if (!customSize) {\n      return size;\n    }\n    if (typeof customSize === 'string') {\n      return customSize !== null && customSize !== void 0 ? customSize : size;\n    }\n    if (customSize instanceof Function) {\n      return customSize(size);\n    }\n    return size;\n  }, [customSize, size]);\n  return mergedSize;\n};\nexport default useSize;","const genSpaceCompactStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      '&-block': {\n        display: 'flex',\n        width: '100%'\n      },\n      '&-vertical': {\n        flexDirection: 'column'\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genSpaceCompactStyle;","import { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genSpaceCompactStyle from './compact';\nconst genSpaceStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return {\n    [componentCls]: {\n      display: 'inline-flex',\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      '&-vertical': {\n        flexDirection: 'column'\n      },\n      '&-align': {\n        flexDirection: 'column',\n        '&-center': {\n          alignItems: 'center'\n        },\n        '&-start': {\n          alignItems: 'flex-start'\n        },\n        '&-end': {\n          alignItems: 'flex-end'\n        },\n        '&-baseline': {\n          alignItems: 'baseline'\n        }\n      },\n      [`${componentCls}-item:empty`]: {\n        display: 'none'\n      },\n      // https://github.com/ant-design/ant-design/issues/47875\n      [`${componentCls}-item > ${antCls}-badge-not-a-wrapper:only-child`]: {\n        display: 'block'\n      }\n    }\n  };\n};\nconst genSpaceGapStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      '&-gap-row-small': {\n        rowGap: token.spaceGapSmallSize\n      },\n      '&-gap-row-middle': {\n        rowGap: token.spaceGapMiddleSize\n      },\n      '&-gap-row-large': {\n        rowGap: token.spaceGapLargeSize\n      },\n      '&-gap-col-small': {\n        columnGap: token.spaceGapSmallSize\n      },\n      '&-gap-col-middle': {\n        columnGap: token.spaceGapMiddleSize\n      },\n      '&-gap-col-large': {\n        columnGap: token.spaceGapLargeSize\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = () => ({});\nexport default genStyleHooks('Space', token => {\n  const spaceToken = mergeToken(token, {\n    spaceGapSmallSize: token.paddingXS,\n    spaceGapMiddleSize: token.padding,\n    spaceGapLargeSize: token.paddingLG\n  });\n  return [genSpaceStyle(spaceToken), genSpaceGapStyle(spaceToken), genSpaceCompactStyle(spaceToken)];\n}, () => ({}), {\n  // Space component don't apply extra font style\n  // https://github.com/ant-design/ant-design/issues/40315\n  resetStyle: false\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport useStyle from './style';\nexport const SpaceCompactItemContext = /*#__PURE__*/React.createContext(null);\nexport const useCompactItemContext = (prefixCls, direction) => {\n  const compactItemContext = React.useContext(SpaceCompactItemContext);\n  const compactItemClassnames = React.useMemo(() => {\n    if (!compactItemContext) {\n      return '';\n    }\n    const {\n      compactDirection,\n      isFirstItem,\n      isLastItem\n    } = compactItemContext;\n    const separator = compactDirection === 'vertical' ? '-vertical-' : '-';\n    return classNames(`${prefixCls}-compact${separator}item`, {\n      [`${prefixCls}-compact${separator}first-item`]: isFirstItem,\n      [`${prefixCls}-compact${separator}last-item`]: isLastItem,\n      [`${prefixCls}-compact${separator}item-rtl`]: direction === 'rtl'\n    });\n  }, [prefixCls, direction, compactItemContext]);\n  return {\n    compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,\n    compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,\n    compactItemClassnames\n  };\n};\nexport const NoCompactStyle = props => {\n  const {\n    children\n  } = props;\n  return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n    value: null\n  }, children);\n};\nconst CompactItem = props => {\n  const {\n      children\n    } = props,\n    others = __rest(props, [\"children\"]);\n  return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n    value: React.useMemo(() => others, [others])\n  }, children);\n};\nconst Compact = props => {\n  const {\n    getPrefixCls,\n    direction: directionConfig\n  } = React.useContext(ConfigContext);\n  const {\n      size,\n      direction,\n      block,\n      prefixCls: customizePrefixCls,\n      className,\n      rootClassName,\n      children\n    } = props,\n    restProps = __rest(props, [\"size\", \"direction\", \"block\", \"prefixCls\", \"className\", \"rootClassName\", \"children\"]);\n  const mergedSize = useSize(ctx => size !== null && size !== void 0 ? size : ctx);\n  const prefixCls = getPrefixCls('space-compact', customizePrefixCls);\n  const [wrapCSSVar, hashId] = useStyle(prefixCls);\n  const clx = classNames(prefixCls, hashId, {\n    [`${prefixCls}-rtl`]: directionConfig === 'rtl',\n    [`${prefixCls}-block`]: block,\n    [`${prefixCls}-vertical`]: direction === 'vertical'\n  }, className, rootClassName);\n  const compactItemContext = React.useContext(SpaceCompactItemContext);\n  const childNodes = toArray(children);\n  const nodes = React.useMemo(() => childNodes.map((child, i) => {\n    const key = (child === null || child === void 0 ? void 0 : child.key) || `${prefixCls}-item-${i}`;\n    return /*#__PURE__*/React.createElement(CompactItem, {\n      key: key,\n      compactSize: mergedSize,\n      compactDirection: direction,\n      isFirstItem: i === 0 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),\n      isLastItem: i === childNodes.length - 1 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))\n    }, child);\n  }), [size, childNodes, compactItemContext]);\n  // =========================== Render ===========================\n  if (childNodes.length === 0) {\n    return null;\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({\n    className: clx\n  }, restProps), nodes));\n};\nexport default Compact;","\"use client\";\n\nimport React from 'react';\nimport { NoFormStyle } from '../form/context';\nimport { NoCompactStyle } from '../space/Compact';\nconst ContextIsolator = props => {\n  const {\n    space,\n    form,\n    children\n  } = props;\n  if (children === undefined || children === null) {\n    return null;\n  }\n  let result = children;\n  if (form) {\n    result = /*#__PURE__*/React.createElement(NoFormStyle, {\n      override: true,\n      status: true\n    }, result);\n  }\n  if (space) {\n    result = /*#__PURE__*/React.createElement(NoCompactStyle, null, result);\n  }\n  return result;\n};\nexport default ContextIsolator;","import React from 'react';\nconst zIndexContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  zIndexContext.displayName = 'zIndexContext';\n}\nexport default zIndexContext;","import React from 'react';\nimport useToken from '../../theme/useToken';\nimport { devUseWarning } from '../warning';\nimport zIndexContext from '../zindexContext';\n// Z-Index control range\n// Container: 1000 + offset 100 (max base + 10 * offset = 2000)\n// Popover: offset 50\n// Notification: Container Max zIndex + componentOffset\nconst CONTAINER_OFFSET = 100;\nconst CONTAINER_OFFSET_MAX_COUNT = 10;\nexport const CONTAINER_MAX_OFFSET = CONTAINER_OFFSET * CONTAINER_OFFSET_MAX_COUNT;\n/**\n * Static function will default be the `CONTAINER_MAX_OFFSET`.\n * But it still may have children component like Select, Dropdown.\n * So the warning zIndex should exceed the `CONTAINER_MAX_OFFSET`.\n */\nconst CONTAINER_MAX_OFFSET_WITH_CHILDREN = CONTAINER_MAX_OFFSET + CONTAINER_OFFSET;\nexport const containerBaseZIndexOffset = {\n  Modal: CONTAINER_OFFSET,\n  Drawer: CONTAINER_OFFSET,\n  Popover: CONTAINER_OFFSET,\n  Popconfirm: CONTAINER_OFFSET,\n  Tooltip: CONTAINER_OFFSET,\n  Tour: CONTAINER_OFFSET,\n  FloatButton: CONTAINER_OFFSET\n};\nexport const consumerBaseZIndexOffset = {\n  SelectLike: 50,\n  Dropdown: 50,\n  DatePicker: 50,\n  Menu: 50,\n  ImagePreview: 1\n};\nfunction isContainerType(type) {\n  return type in containerBaseZIndexOffset;\n}\nexport const useZIndex = (componentType, customZIndex) => {\n  const [, token] = useToken();\n  const parentZIndex = React.useContext(zIndexContext);\n  const isContainer = isContainerType(componentType);\n  let result;\n  if (customZIndex !== undefined) {\n    result = [customZIndex, customZIndex];\n  } else {\n    let zIndex = parentZIndex !== null && parentZIndex !== void 0 ? parentZIndex : 0;\n    if (isContainer) {\n      zIndex +=\n      // Use preset token zIndex by default but not stack when has parent container\n      (parentZIndex ? 0 : token.zIndexPopupBase) +\n      // Container offset\n      containerBaseZIndexOffset[componentType];\n    } else {\n      zIndex += consumerBaseZIndexOffset[componentType];\n    }\n    result = [parentZIndex === undefined ? customZIndex : zIndex, zIndex];\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning(componentType);\n    const maxZIndex = token.zIndexPopupBase + CONTAINER_MAX_OFFSET_WITH_CHILDREN;\n    const currentZIndex = result[0] || 0;\n    process.env.NODE_ENV !== \"production\" ? warning(customZIndex !== undefined || currentZIndex <= maxZIndex, 'usage', '`zIndex` is over design token `zIndexPopupBase` too much. It may cause unexpected override.') : void 0;\n  }\n  return result;\n};","import { defaultPrefixCls } from '../config-provider';\n// ================== Collapse Motion ==================\nconst getCollapsedHeight = () => ({\n  height: 0,\n  opacity: 0\n});\nconst getRealHeight = node => {\n  const {\n    scrollHeight\n  } = node;\n  return {\n    height: scrollHeight,\n    opacity: 1\n  };\n};\nconst getCurrentHeight = node => ({\n  height: node ? node.offsetHeight : 0\n});\nconst skipOpacityTransition = (_, event) => (event === null || event === void 0 ? void 0 : event.deadline) === true || event.propertyName === 'height';\nconst initCollapseMotion = function () {\n  let rootCls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultPrefixCls;\n  return {\n    motionName: `${rootCls}-motion-collapse`,\n    onAppearStart: getCollapsedHeight,\n    onEnterStart: getCollapsedHeight,\n    onAppearActive: getRealHeight,\n    onEnterActive: getRealHeight,\n    onLeaveStart: getCurrentHeight,\n    onLeaveActive: getCollapsedHeight,\n    onAppearEnd: skipOpacityTransition,\n    onEnterEnd: skipOpacityTransition,\n    onLeaveEnd: skipOpacityTransition,\n    motionDeadline: 500\n  };\n};\nconst _SelectPlacements = ['bottomLeft', 'bottomRight', 'topLeft', 'topRight'];\nconst getTransitionName = (rootPrefixCls, motion, transitionName) => {\n  if (transitionName !== undefined) {\n    return transitionName;\n  }\n  return `${rootPrefixCls}-${motion}`;\n};\nexport { getTransitionName };\nexport default initCollapseMotion;","import { unit } from '@ant-design/cssinjs';\nexport function getArrowToken(token) {\n  const {\n    sizePopupArrow,\n    borderRadiusXS,\n    borderRadiusOuter\n  } = token;\n  const unitWidth = sizePopupArrow / 2;\n  const ax = 0;\n  const ay = unitWidth;\n  const bx = borderRadiusOuter * 1 / Math.sqrt(2);\n  const by = unitWidth - borderRadiusOuter * (1 - 1 / Math.sqrt(2));\n  const cx = unitWidth - borderRadiusXS * (1 / Math.sqrt(2));\n  const cy = borderRadiusOuter * (Math.sqrt(2) - 1) + borderRadiusXS * (1 / Math.sqrt(2));\n  const dx = 2 * unitWidth - cx;\n  const dy = cy;\n  const ex = 2 * unitWidth - bx;\n  const ey = by;\n  const fx = 2 * unitWidth - ax;\n  const fy = ay;\n  const shadowWidth = unitWidth * Math.sqrt(2) + borderRadiusOuter * (Math.sqrt(2) - 2);\n  const polygonOffset = borderRadiusOuter * (Math.sqrt(2) - 1);\n  const arrowPolygon = `polygon(${polygonOffset}px 100%, 50% ${polygonOffset}px, ${2 * unitWidth - polygonOffset}px 100%, ${polygonOffset}px 100%)`;\n  const arrowPath = `path('M ${ax} ${ay} A ${borderRadiusOuter} ${borderRadiusOuter} 0 0 0 ${bx} ${by} L ${cx} ${cy} A ${borderRadiusXS} ${borderRadiusXS} 0 0 1 ${dx} ${dy} L ${ex} ${ey} A ${borderRadiusOuter} ${borderRadiusOuter} 0 0 0 ${fx} ${fy} Z')`;\n  return {\n    arrowShadowWidth: shadowWidth,\n    arrowPath,\n    arrowPolygon\n  };\n}\nexport const genRoundedArrow = (token, bgColor, boxShadow) => {\n  const {\n    sizePopupArrow,\n    arrowPolygon,\n    arrowPath,\n    arrowShadowWidth,\n    borderRadiusXS,\n    calc\n  } = token;\n  return {\n    pointerEvents: 'none',\n    width: sizePopupArrow,\n    height: sizePopupArrow,\n    overflow: 'hidden',\n    '&::before': {\n      position: 'absolute',\n      bottom: 0,\n      insetInlineStart: 0,\n      width: sizePopupArrow,\n      height: calc(sizePopupArrow).div(2).equal(),\n      background: bgColor,\n      clipPath: {\n        _multi_value_: true,\n        value: [arrowPolygon, arrowPath]\n      },\n      content: '\"\"'\n    },\n    '&::after': {\n      content: '\"\"',\n      position: 'absolute',\n      width: arrowShadowWidth,\n      height: arrowShadowWidth,\n      bottom: 0,\n      insetInline: 0,\n      margin: 'auto',\n      borderRadius: {\n        _skip_check_: true,\n        value: `0 0 ${unit(borderRadiusXS)} 0`\n      },\n      transform: 'translateY(50%) rotate(-135deg)',\n      boxShadow,\n      zIndex: 0,\n      background: 'transparent'\n    }\n  };\n};","import { unit } from '@ant-design/cssinjs';\nimport { genRoundedArrow } from './roundedArrow';\nexport const MAX_VERTICAL_CONTENT_RADIUS = 8;\nexport function getArrowOffsetToken(options) {\n  const {\n    contentRadius,\n    limitVerticalRadius\n  } = options;\n  const arrowOffset = contentRadius > 12 ? contentRadius + 2 : 12;\n  const arrowOffsetVertical = limitVerticalRadius ? MAX_VERTICAL_CONTENT_RADIUS : arrowOffset;\n  return {\n    arrowOffsetHorizontal: arrowOffset,\n    arrowOffsetVertical\n  };\n}\nfunction isInject(valid, code) {\n  if (!valid) {\n    return {};\n  }\n  return code;\n}\nexport default function getArrowStyle(token, colorBg, options) {\n  const {\n    componentCls,\n    boxShadowPopoverArrow,\n    arrowOffsetVertical,\n    arrowOffsetHorizontal\n  } = token;\n  const {\n    arrowDistance = 0,\n    arrowPlacement = {\n      left: true,\n      right: true,\n      top: true,\n      bottom: true\n    }\n  } = options || {};\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({\n      // ============================ Basic ============================\n      [`${componentCls}-arrow`]: [Object.assign(Object.assign({\n        position: 'absolute',\n        zIndex: 1,\n        display: 'block'\n      }, genRoundedArrow(token, colorBg, boxShadowPopoverArrow)), {\n        '&:before': {\n          background: colorBg\n        }\n      })]\n    }, isInject(!!arrowPlacement.top, {\n      [[`&-placement-top > ${componentCls}-arrow`, `&-placement-topLeft > ${componentCls}-arrow`, `&-placement-topRight > ${componentCls}-arrow`].join(',')]: {\n        bottom: arrowDistance,\n        transform: 'translateY(100%) rotate(180deg)'\n      },\n      [`&-placement-top > ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: '50%'\n        },\n        transform: 'translateX(-50%) translateY(100%) rotate(180deg)'\n      },\n      '&-placement-topLeft': {\n        '--arrow-offset-horizontal': arrowOffsetHorizontal,\n        [`> ${componentCls}-arrow`]: {\n          left: {\n            _skip_check_: true,\n            value: arrowOffsetHorizontal\n          }\n        }\n      },\n      '&-placement-topRight': {\n        '--arrow-offset-horizontal': `calc(100% - ${unit(arrowOffsetHorizontal)})`,\n        [`> ${componentCls}-arrow`]: {\n          right: {\n            _skip_check_: true,\n            value: arrowOffsetHorizontal\n          }\n        }\n      }\n    })), isInject(!!arrowPlacement.bottom, {\n      [[`&-placement-bottom > ${componentCls}-arrow`, `&-placement-bottomLeft > ${componentCls}-arrow`, `&-placement-bottomRight > ${componentCls}-arrow`].join(',')]: {\n        top: arrowDistance,\n        transform: `translateY(-100%)`\n      },\n      [`&-placement-bottom > ${componentCls}-arrow`]: {\n        left: {\n          _skip_check_: true,\n          value: '50%'\n        },\n        transform: `translateX(-50%) translateY(-100%)`\n      },\n      '&-placement-bottomLeft': {\n        '--arrow-offset-horizontal': arrowOffsetHorizontal,\n        [`> ${componentCls}-arrow`]: {\n          left: {\n            _skip_check_: true,\n            value: arrowOffsetHorizontal\n          }\n        }\n      },\n      '&-placement-bottomRight': {\n        '--arrow-offset-horizontal': `calc(100% - ${unit(arrowOffsetHorizontal)})`,\n        [`> ${componentCls}-arrow`]: {\n          right: {\n            _skip_check_: true,\n            value: arrowOffsetHorizontal\n          }\n        }\n      }\n    })), isInject(!!arrowPlacement.left, {\n      [[`&-placement-left > ${componentCls}-arrow`, `&-placement-leftTop > ${componentCls}-arrow`, `&-placement-leftBottom > ${componentCls}-arrow`].join(',')]: {\n        right: {\n          _skip_check_: true,\n          value: arrowDistance\n        },\n        transform: 'translateX(100%) rotate(90deg)'\n      },\n      [`&-placement-left > ${componentCls}-arrow`]: {\n        top: {\n          _skip_check_: true,\n          value: '50%'\n        },\n        transform: 'translateY(-50%) translateX(100%) rotate(90deg)'\n      },\n      [`&-placement-leftTop > ${componentCls}-arrow`]: {\n        top: arrowOffsetVertical\n      },\n      [`&-placement-leftBottom > ${componentCls}-arrow`]: {\n        bottom: arrowOffsetVertical\n      }\n    })), isInject(!!arrowPlacement.right, {\n      [[`&-placement-right > ${componentCls}-arrow`, `&-placement-rightTop > ${componentCls}-arrow`, `&-placement-rightBottom > ${componentCls}-arrow`].join(',')]: {\n        left: {\n          _skip_check_: true,\n          value: arrowDistance\n        },\n        transform: 'translateX(-100%) rotate(-90deg)'\n      },\n      [`&-placement-right > ${componentCls}-arrow`]: {\n        top: {\n          _skip_check_: true,\n          value: '50%'\n        },\n        transform: 'translateY(-50%) translateX(-100%) rotate(-90deg)'\n      },\n      [`&-placement-rightTop > ${componentCls}-arrow`]: {\n        top: arrowOffsetVertical\n      },\n      [`&-placement-rightBottom > ${componentCls}-arrow`]: {\n        bottom: arrowOffsetVertical\n      }\n    }))\n  };\n}","import { getArrowOffsetToken } from '../style/placementArrow';\nexport function getOverflowOptions(placement, arrowOffset, arrowWidth, autoAdjustOverflow) {\n  if (autoAdjustOverflow === false) {\n    return {\n      adjustX: false,\n      adjustY: false\n    };\n  }\n  const overflow = autoAdjustOverflow && typeof autoAdjustOverflow === 'object' ? autoAdjustOverflow : {};\n  const baseOverflow = {};\n  switch (placement) {\n    case 'top':\n    case 'bottom':\n      baseOverflow.shiftX = arrowOffset.arrowOffsetHorizontal * 2 + arrowWidth;\n      baseOverflow.shiftY = true;\n      baseOverflow.adjustY = true;\n      break;\n    case 'left':\n    case 'right':\n      baseOverflow.shiftY = arrowOffset.arrowOffsetVertical * 2 + arrowWidth;\n      baseOverflow.shiftX = true;\n      baseOverflow.adjustX = true;\n      break;\n  }\n  const mergedOverflow = Object.assign(Object.assign({}, baseOverflow), overflow);\n  // Support auto shift\n  if (!mergedOverflow.shiftX) {\n    mergedOverflow.adjustX = true;\n  }\n  if (!mergedOverflow.shiftY) {\n    mergedOverflow.adjustY = true;\n  }\n  return mergedOverflow;\n}\nconst PlacementAlignMap = {\n  left: {\n    points: ['cr', 'cl']\n  },\n  right: {\n    points: ['cl', 'cr']\n  },\n  top: {\n    points: ['bc', 'tc']\n  },\n  bottom: {\n    points: ['tc', 'bc']\n  },\n  topLeft: {\n    points: ['bl', 'tl']\n  },\n  leftTop: {\n    points: ['tr', 'tl']\n  },\n  topRight: {\n    points: ['br', 'tr']\n  },\n  rightTop: {\n    points: ['tl', 'tr']\n  },\n  bottomRight: {\n    points: ['tr', 'br']\n  },\n  rightBottom: {\n    points: ['bl', 'br']\n  },\n  bottomLeft: {\n    points: ['tl', 'bl']\n  },\n  leftBottom: {\n    points: ['br', 'bl']\n  }\n};\nconst ArrowCenterPlacementAlignMap = {\n  topLeft: {\n    points: ['bl', 'tc']\n  },\n  leftTop: {\n    points: ['tr', 'cl']\n  },\n  topRight: {\n    points: ['br', 'tc']\n  },\n  rightTop: {\n    points: ['tl', 'cr']\n  },\n  bottomRight: {\n    points: ['tr', 'bc']\n  },\n  rightBottom: {\n    points: ['bl', 'cr']\n  },\n  bottomLeft: {\n    points: ['tl', 'bc']\n  },\n  leftBottom: {\n    points: ['br', 'cl']\n  }\n};\nconst DisableAutoArrowList = new Set(['topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'leftTop', 'leftBottom', 'rightTop', 'rightBottom']);\nexport default function getPlacements(config) {\n  const {\n    arrowWidth,\n    autoAdjustOverflow,\n    arrowPointAtCenter,\n    offset,\n    borderRadius,\n    visibleFirst\n  } = config;\n  const halfArrowWidth = arrowWidth / 2;\n  const placementMap = {};\n  Object.keys(PlacementAlignMap).forEach(key => {\n    const template = arrowPointAtCenter && ArrowCenterPlacementAlignMap[key] || PlacementAlignMap[key];\n    const placementInfo = Object.assign(Object.assign({}, template), {\n      offset: [0, 0],\n      dynamicInset: true\n    });\n    placementMap[key] = placementInfo;\n    // Disable autoArrow since design is fixed position\n    if (DisableAutoArrowList.has(key)) {\n      placementInfo.autoArrow = false;\n    }\n    // Static offset\n    switch (key) {\n      case 'top':\n      case 'topLeft':\n      case 'topRight':\n        placementInfo.offset[1] = -halfArrowWidth - offset;\n        break;\n      case 'bottom':\n      case 'bottomLeft':\n      case 'bottomRight':\n        placementInfo.offset[1] = halfArrowWidth + offset;\n        break;\n      case 'left':\n      case 'leftTop':\n      case 'leftBottom':\n        placementInfo.offset[0] = -halfArrowWidth - offset;\n        break;\n      case 'right':\n      case 'rightTop':\n      case 'rightBottom':\n        placementInfo.offset[0] = halfArrowWidth + offset;\n        break;\n    }\n    // Dynamic offset\n    const arrowOffset = getArrowOffsetToken({\n      contentRadius: borderRadius,\n      limitVerticalRadius: true\n    });\n    if (arrowPointAtCenter) {\n      switch (key) {\n        case 'topLeft':\n        case 'bottomLeft':\n          placementInfo.offset[0] = -arrowOffset.arrowOffsetHorizontal - halfArrowWidth;\n          break;\n        case 'topRight':\n        case 'bottomRight':\n          placementInfo.offset[0] = arrowOffset.arrowOffsetHorizontal + halfArrowWidth;\n          break;\n        case 'leftTop':\n        case 'rightTop':\n          placementInfo.offset[1] = -arrowOffset.arrowOffsetHorizontal * 2 + halfArrowWidth;\n          break;\n        case 'leftBottom':\n        case 'rightBottom':\n          placementInfo.offset[1] = arrowOffset.arrowOffsetHorizontal * 2 - halfArrowWidth;\n          break;\n      }\n    }\n    // Overflow\n    placementInfo.overflow = getOverflowOptions(key, arrowOffset, arrowWidth, autoAdjustOverflow);\n    // VisibleFirst\n    if (visibleFirst) {\n      placementInfo.htmlRegion = 'visibleFirst';\n    }\n  });\n  return placementMap;\n}","import React from 'react';\nexport function isFragment(child) {\n  return child && /*#__PURE__*/React.isValidElement(child) && child.type === React.Fragment;\n}\nexport const replaceElement = (element, replacement, props) => {\n  if (! /*#__PURE__*/React.isValidElement(element)) {\n    return replacement;\n  }\n  return /*#__PURE__*/React.cloneElement(element, typeof props === 'function' ? props(element.props || {}) : props);\n};\nexport function cloneElement(element, props) {\n  return replaceElement(element, element, props);\n}","import * as React from 'react';\nimport rcWarning, { resetWarned as rcResetWarned } from \"rc-util/es/warning\";\nexport function noop() {}\nlet deprecatedWarnList = null;\nexport function resetWarned() {\n  deprecatedWarnList = null;\n  rcResetWarned();\n}\n// eslint-disable-next-line import/no-mutable-exports\nlet warning = noop;\nif (process.env.NODE_ENV !== 'production') {\n  warning = (valid, component, message) => {\n    rcWarning(valid, `[antd: ${component}] ${message}`);\n    // StrictMode will inject console which will not throw warning in React 17.\n    if (process.env.NODE_ENV === 'test') {\n      resetWarned();\n    }\n  };\n}\nexport const WarningContext = /*#__PURE__*/React.createContext({});\n/**\n * This is a hook but we not named as `useWarning`\n * since this is only used in development.\n * We should always wrap this in `if (process.env.NODE_ENV !== 'production')` condition\n */\nexport const devUseWarning = process.env.NODE_ENV !== 'production' ? component => {\n  const {\n    strict\n  } = React.useContext(WarningContext);\n  const typeWarning = (valid, type, message) => {\n    if (!valid) {\n      if (strict === false && type === 'deprecated') {\n        const existWarning = deprecatedWarnList;\n        if (!deprecatedWarnList) {\n          deprecatedWarnList = {};\n        }\n        deprecatedWarnList[component] = deprecatedWarnList[component] || [];\n        if (!deprecatedWarnList[component].includes(message || '')) {\n          deprecatedWarnList[component].push(message || '');\n        }\n        // Warning for the first time\n        if (!existWarning) {\n          console.warn('[antd] There exists deprecated usage in your code:', deprecatedWarnList);\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(valid, component, message) : void 0;\n      }\n    }\n  };\n  typeWarning.deprecated = (valid, oldProp, newProp, message) => {\n    typeWarning(valid, 'deprecated', `\\`${oldProp}\\` is deprecated. Please use \\`${newProp}\\` instead.${message ? ` ${message}` : ''}`);\n  };\n  return typeWarning;\n} : () => {\n  const noopWarning = () => {};\n  noopWarning.deprecated = noop;\n  return noopWarning;\n};\nexport default warning;","const initMotionCommon = duration => ({\n  animationDuration: duration,\n  animationFillMode: 'both'\n});\n// FIXME: origin less code seems same as initMotionCommon. Maybe we can safe remove\nconst initMotionCommonLeave = duration => ({\n  animationDuration: duration,\n  animationFillMode: 'both'\n});\nexport const initMotion = function (motionCls, inKeyframes, outKeyframes, duration) {\n  let sameLevel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n  const sameLevelPrefix = sameLevel ? '&' : '';\n  return {\n    [`\n      ${sameLevelPrefix}${motionCls}-enter,\n      ${sameLevelPrefix}${motionCls}-appear\n    `]: Object.assign(Object.assign({}, initMotionCommon(duration)), {\n      animationPlayState: 'paused'\n    }),\n    [`${sameLevelPrefix}${motionCls}-leave`]: Object.assign(Object.assign({}, initMotionCommonLeave(duration)), {\n      animationPlayState: 'paused'\n    }),\n    [`\n      ${sameLevelPrefix}${motionCls}-enter${motionCls}-enter-active,\n      ${sameLevelPrefix}${motionCls}-appear${motionCls}-appear-active\n    `]: {\n      animationName: inKeyframes,\n      animationPlayState: 'running'\n    },\n    [`${sameLevelPrefix}${motionCls}-leave${motionCls}-leave-active`]: {\n      animationName: outKeyframes,\n      animationPlayState: 'running',\n      pointerEvents: 'none'\n    }\n  };\n};","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const zoomIn = new Keyframes('antZoomIn', {\n  '0%': {\n    transform: 'scale(0.2)',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    opacity: 1\n  }\n});\nexport const zoomOut = new Keyframes('antZoomOut', {\n  '0%': {\n    transform: 'scale(1)'\n  },\n  '100%': {\n    transform: 'scale(0.2)',\n    opacity: 0\n  }\n});\nexport const zoomBigIn = new Keyframes('antZoomBigIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    opacity: 1\n  }\n});\nexport const zoomBigOut = new Keyframes('antZoomBigOut', {\n  '0%': {\n    transform: 'scale(1)'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    opacity: 0\n  }\n});\nexport const zoomUpIn = new Keyframes('antZoomUpIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 0%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 0%'\n  }\n});\nexport const zoomUpOut = new Keyframes('antZoomUpOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 0%'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 0%',\n    opacity: 0\n  }\n});\nexport const zoomLeftIn = new Keyframes('antZoomLeftIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '0% 50%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '0% 50%'\n  }\n});\nexport const zoomLeftOut = new Keyframes('antZoomLeftOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '0% 50%'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '0% 50%',\n    opacity: 0\n  }\n});\nexport const zoomRightIn = new Keyframes('antZoomRightIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '100% 50%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '100% 50%'\n  }\n});\nexport const zoomRightOut = new Keyframes('antZoomRightOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '100% 50%'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '100% 50%',\n    opacity: 0\n  }\n});\nexport const zoomDownIn = new Keyframes('antZoomDownIn', {\n  '0%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 100%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 100%'\n  }\n});\nexport const zoomDownOut = new Keyframes('antZoomDownOut', {\n  '0%': {\n    transform: 'scale(1)',\n    transformOrigin: '50% 100%'\n  },\n  '100%': {\n    transform: 'scale(0.8)',\n    transformOrigin: '50% 100%',\n    opacity: 0\n  }\n});\nconst zoomMotion = {\n  zoom: {\n    inKeyframes: zoomIn,\n    outKeyframes: zoomOut\n  },\n  'zoom-big': {\n    inKeyframes: zoomBigIn,\n    outKeyframes: zoomBigOut\n  },\n  'zoom-big-fast': {\n    inKeyframes: zoomBigIn,\n    outKeyframes: zoomBigOut\n  },\n  'zoom-left': {\n    inKeyframes: zoomLeftIn,\n    outKeyframes: zoomLeftOut\n  },\n  'zoom-right': {\n    inKeyframes: zoomRightIn,\n    outKeyframes: zoomRightOut\n  },\n  'zoom-up': {\n    inKeyframes: zoomUpIn,\n    outKeyframes: zoomUpOut\n  },\n  'zoom-down': {\n    inKeyframes: zoomDownIn,\n    outKeyframes: zoomDownOut\n  }\n};\nexport const initZoomMotion = (token, motionName) => {\n  const {\n    antCls\n  } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const {\n    inKeyframes,\n    outKeyframes\n  } = zoomMotion[motionName];\n  return [initMotion(motionCls, inKeyframes, outKeyframes, motionName === 'zoom-big-fast' ? token.motionDurationFast : token.motionDurationMid), {\n    [`\n        ${motionCls}-enter,\n        ${motionCls}-appear\n      `]: {\n      transform: 'scale(0)',\n      opacity: 0,\n      animationTimingFunction: token.motionEaseOutCirc,\n      '&-prepare': {\n        transform: 'none'\n      }\n    },\n    [`${motionCls}-leave`]: {\n      animationTimingFunction: token.motionEaseInOutCirc\n    }\n  }];\n};","export const PresetColors = ['blue', 'purple', 'cyan', 'green', 'magenta', 'pink', 'red', 'orange', 'yellow', 'volcano', 'geekblue', 'lime', 'gold'];","import { PresetColors } from '../interface';\nexport default function genPresetColor(token, genCss) {\n  return PresetColors.reduce((prev, colorKey) => {\n    const lightColor = token[`${colorKey}1`];\n    const lightBorderColor = token[`${colorKey}3`];\n    const darkColor = token[`${colorKey}6`];\n    const textColor = token[`${colorKey}7`];\n    return Object.assign(Object.assign({}, prev), genCss(colorKey, {\n      lightColor,\n      lightBorderColor,\n      darkColor,\n      textColor\n    }));\n  }, {});\n}","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { initZoomMotion } from '../../style/motion';\nimport getArrowStyle, { getArrowOffsetToken, MAX_VERTICAL_CONTENT_RADIUS } from '../../style/placementArrow';\nimport { getArrowToken } from '../../style/roundedArrow';\nimport { genPresetColor, genStyleHooks, mergeToken } from '../../theme/internal';\nconst genTooltipStyle = token => {\n  const {\n    calc,\n    componentCls,\n    // ant-tooltip\n    tooltipMaxWidth,\n    tooltipColor,\n    tooltipBg,\n    tooltipBorderRadius,\n    zIndexPopup,\n    controlHeight,\n    boxShadowSecondary,\n    paddingSM,\n    paddingXS,\n    arrowOffsetHorizontal,\n    sizePopupArrow\n  } = token;\n  // arrowOffsetHorizontal + arrowWidth + borderRadius\n  const edgeAlignMinWidth = calc(tooltipBorderRadius).add(sizePopupArrow).add(arrowOffsetHorizontal).equal();\n  // borderRadius * 2 + arrowWidth\n  const centerAlignMinWidth = calc(tooltipBorderRadius).mul(2).add(sizePopupArrow).equal();\n  return [{\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'absolute',\n      zIndex: zIndexPopup,\n      display: 'block',\n      width: 'max-content',\n      maxWidth: tooltipMaxWidth,\n      visibility: 'visible',\n      // When use `autoArrow`, origin will follow the arrow position\n      '--valid-offset-x': 'var(--arrow-offset-horizontal, var(--arrow-x))',\n      transformOrigin: [`var(--valid-offset-x, 50%)`, `var(--arrow-y, 50%)`].join(' '),\n      '&-hidden': {\n        display: 'none'\n      },\n      '--antd-arrow-background-color': tooltipBg,\n      // Wrapper for the tooltip content\n      [`${componentCls}-inner`]: {\n        minWidth: centerAlignMinWidth,\n        minHeight: controlHeight,\n        padding: `${unit(token.calc(paddingSM).div(2).equal())} ${unit(paddingXS)}`,\n        color: tooltipColor,\n        textAlign: 'start',\n        textDecoration: 'none',\n        wordWrap: 'break-word',\n        backgroundColor: tooltipBg,\n        borderRadius: tooltipBorderRadius,\n        boxShadow: boxShadowSecondary,\n        boxSizing: 'border-box'\n      },\n      // Align placement should have another min width\n      [[`&-placement-topLeft`, `&-placement-topRight`, `&-placement-bottomLeft`, `&-placement-bottomRight`].join(',')]: {\n        minWidth: edgeAlignMinWidth\n      },\n      // Limit left and right placement radius\n      [[`&-placement-left`, `&-placement-leftTop`, `&-placement-leftBottom`, `&-placement-right`, `&-placement-rightTop`, `&-placement-rightBottom`].join(',')]: {\n        [`${componentCls}-inner`]: {\n          borderRadius: token.min(tooltipBorderRadius, MAX_VERTICAL_CONTENT_RADIUS)\n        }\n      },\n      [`${componentCls}-content`]: {\n        position: 'relative'\n      }\n    }), genPresetColor(token, (colorKey, _ref) => {\n      let {\n        darkColor\n      } = _ref;\n      return {\n        [`&${componentCls}-${colorKey}`]: {\n          [`${componentCls}-inner`]: {\n            backgroundColor: darkColor\n          },\n          [`${componentCls}-arrow`]: {\n            '--antd-arrow-background-color': darkColor\n          }\n        }\n      };\n    })), {\n      // RTL\n      '&-rtl': {\n        direction: 'rtl'\n      }\n    })\n  },\n  // Arrow Style\n  getArrowStyle(token, 'var(--antd-arrow-background-color)'),\n  // Pure Render\n  {\n    [`${componentCls}-pure`]: {\n      position: 'relative',\n      maxWidth: 'none',\n      margin: token.sizePopupArrow\n    }\n  }];\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => Object.assign(Object.assign({\n  zIndexPopup: token.zIndexPopupBase + 70\n}, getArrowOffsetToken({\n  contentRadius: token.borderRadius,\n  limitVerticalRadius: true\n})), getArrowToken(mergeToken(token, {\n  borderRadiusOuter: Math.min(token.borderRadiusOuter, 4)\n})));\nexport default (function (prefixCls) {\n  let injectStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  const useStyle = genStyleHooks('Tooltip', token => {\n    const {\n      borderRadius,\n      colorTextLightSolid,\n      colorBgSpotlight\n    } = token;\n    const TooltipToken = mergeToken(token, {\n      // default variables\n      tooltipMaxWidth: 250,\n      tooltipColor: colorTextLightSolid,\n      tooltipBorderRadius: borderRadius,\n      tooltipBg: colorBgSpotlight\n    });\n    return [genTooltipStyle(TooltipToken), initZoomMotion(token, 'zoom-big-fast')];\n  }, prepareComponentToken, {\n    resetStyle: false,\n    // Popover use Tooltip as internal component. We do not need to handle this.\n    injectStyle\n  });\n  return useStyle(prefixCls);\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { PresetColors } from '../theme/interface';\nconst inverseColors = PresetColors.map(color => `${color}-inverse`);\nexport const PresetStatusColorTypes = ['success', 'processing', 'error', 'default', 'warning'];\n/**\n * determine if the color keyword belongs to the `Ant Design` {@link PresetColors}.\n * @param color color to be judged\n * @param includeInverse whether to include reversed colors\n */\nexport function isPresetColor(color) {\n  let includeInverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  if (includeInverse) {\n    return [].concat(_toConsumableArray(inverseColors), _toConsumableArray(PresetColors)).includes(color);\n  }\n  return PresetColors.includes(color);\n}\nexport function isPresetStatusColor(color) {\n  return PresetStatusColorTypes.includes(color);\n}","import classNames from 'classnames';\nimport { isPresetColor } from '../_util/colors';\nexport function parseColor(prefixCls, color) {\n  const isInternalColor = isPresetColor(color);\n  const className = classNames({\n    [`${prefixCls}-${color}`]: color && isInternalColor\n  });\n  const overlayStyle = {};\n  const arrowStyle = {};\n  if (color && !isInternalColor) {\n    overlayStyle.background = color;\n    // @ts-ignore\n    arrowStyle['--antd-arrow-background-color'] = color;\n  }\n  return {\n    className,\n    overlayStyle,\n    arrowStyle\n  };\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Popup } from 'rc-tooltip';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nimport { parseColor } from './util';\n/** @private Internal Component. Do not use in your production. */\nconst PurePanel = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    placement = 'top',\n    title,\n    color,\n    overlayInnerStyle\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  // Color\n  const colorInfo = parseColor(prefixCls, color);\n  const arrowContentStyle = colorInfo.arrowStyle;\n  const formattedOverlayInnerStyle = Object.assign(Object.assign({}, overlayInnerStyle), colorInfo.overlayStyle);\n  const cls = classNames(hashId, cssVarCls, prefixCls, `${prefixCls}-pure`, `${prefixCls}-placement-${placement}`, className, colorInfo.className);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls,\n    style: arrowContentStyle\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-arrow`\n  }), /*#__PURE__*/React.createElement(Popup, Object.assign({}, props, {\n    className: hashId,\n    prefixCls: prefixCls,\n    overlayInnerStyle: formattedOverlayInnerStyle\n  }), title)));\n};\nexport default PurePanel;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcTooltip from 'rc-tooltip';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport ContextIsolator from '../_util/ContextIsolator';\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport getPlacements from '../_util/placements';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nimport { devUseWarning } from '../_util/warning';\nimport zIndexContext from '../_util/zindexContext';\nimport { useToken } from '../theme/internal';\nimport PurePanel from './PurePanel';\nimport useStyle from './style';\nimport { parseColor } from './util';\nimport { useComponentConfig } from '../config-provider/context';\nconst InternalTooltip = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a, _b;\n  const {\n      prefixCls: customizePrefixCls,\n      openClassName,\n      getTooltipContainer,\n      color,\n      overlayInnerStyle,\n      children,\n      afterOpenChange,\n      afterVisibleChange,\n      destroyTooltipOnHide,\n      arrow = true,\n      title,\n      overlay,\n      builtinPlacements,\n      arrowPointAtCenter = false,\n      autoAdjustOverflow = true,\n      motion,\n      getPopupContainer,\n      placement = 'top',\n      mouseEnterDelay = 0.1,\n      mouseLeaveDelay = 0.1,\n      overlayStyle,\n      rootClassName,\n      overlayClassName,\n      styles,\n      classNames: tooltipClassNames\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"openClassName\", \"getTooltipContainer\", \"color\", \"overlayInnerStyle\", \"children\", \"afterOpenChange\", \"afterVisibleChange\", \"destroyTooltipOnHide\", \"arrow\", \"title\", \"overlay\", \"builtinPlacements\", \"arrowPointAtCenter\", \"autoAdjustOverflow\", \"motion\", \"getPopupContainer\", \"placement\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"rootClassName\", \"overlayClassName\", \"styles\", \"classNames\"]);\n  const mergedShowArrow = !!arrow;\n  const [, token] = useToken();\n  const {\n    getPopupContainer: getContextPopupContainer,\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('tooltip');\n  // ============================== Ref ===============================\n  const warning = devUseWarning('Tooltip');\n  const tooltipRef = React.useRef(null);\n  const forceAlign = () => {\n    var _a;\n    (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.forceAlign();\n  };\n  React.useImperativeHandle(ref, () => {\n    var _a, _b;\n    return {\n      forceAlign,\n      forcePopupAlign: () => {\n        warning.deprecated(false, 'forcePopupAlign', 'forceAlign');\n        forceAlign();\n      },\n      nativeElement: (_a = tooltipRef.current) === null || _a === void 0 ? void 0 : _a.nativeElement,\n      popupElement: (_b = tooltipRef.current) === null || _b === void 0 ? void 0 : _b.popupElement\n    };\n  });\n  // ============================== Warn ==============================\n  if (process.env.NODE_ENV !== 'production') {\n    [['visible', 'open'], ['defaultVisible', 'defaultOpen'], ['onVisibleChange', 'onOpenChange'], ['afterVisibleChange', 'afterOpenChange'], ['arrowPointAtCenter', 'arrow={{ pointAtCenter: true }}'], ['overlayStyle', 'styles={{ root: {} }}'], ['overlayInnerStyle', 'styles={{ body: {} }}'], ['overlayClassName', 'classNames={{ root: \"\" }}']].forEach(_ref => {\n      let [deprecatedName, newName] = _ref;\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n    process.env.NODE_ENV !== \"production\" ? warning(!destroyTooltipOnHide || typeof destroyTooltipOnHide === 'boolean', 'usage', '`destroyTooltipOnHide` no need config `keepParent` anymore. Please use `boolean` value directly.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!arrow || typeof arrow === 'boolean' || !('arrowPointAtCenter' in arrow), 'deprecated', '`arrowPointAtCenter` in `arrow` is deprecated. Please use `pointAtCenter` instead.') : void 0;\n  }\n  // ============================== Open ==============================\n  const [open, setOpen] = useMergedState(false, {\n    value: (_a = props.open) !== null && _a !== void 0 ? _a : props.visible,\n    defaultValue: (_b = props.defaultOpen) !== null && _b !== void 0 ? _b : props.defaultVisible\n  });\n  const noTitle = !title && !overlay && title !== 0; // overlay for old version compatibility\n  const onOpenChange = vis => {\n    var _a, _b;\n    setOpen(noTitle ? false : vis);\n    if (!noTitle) {\n      (_a = props.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(props, vis);\n      (_b = props.onVisibleChange) === null || _b === void 0 ? void 0 : _b.call(props, vis);\n    }\n  };\n  const tooltipPlacements = React.useMemo(() => {\n    var _a, _b;\n    let mergedArrowPointAtCenter = arrowPointAtCenter;\n    if (typeof arrow === 'object') {\n      mergedArrowPointAtCenter = (_b = (_a = arrow.pointAtCenter) !== null && _a !== void 0 ? _a : arrow.arrowPointAtCenter) !== null && _b !== void 0 ? _b : arrowPointAtCenter;\n    }\n    return builtinPlacements || getPlacements({\n      arrowPointAtCenter: mergedArrowPointAtCenter,\n      autoAdjustOverflow,\n      arrowWidth: mergedShowArrow ? token.sizePopupArrow : 0,\n      borderRadius: token.borderRadius,\n      offset: token.marginXXS,\n      visibleFirst: true\n    });\n  }, [arrowPointAtCenter, arrow, builtinPlacements, token]);\n  const memoOverlay = React.useMemo(() => {\n    if (title === 0) {\n      return title;\n    }\n    return overlay || title || '';\n  }, [overlay, title]);\n  const memoOverlayWrapper = /*#__PURE__*/React.createElement(ContextIsolator, {\n    space: true\n  }, typeof memoOverlay === 'function' ? memoOverlay() : memoOverlay);\n  const prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n  const rootPrefixCls = getPrefixCls();\n  const injectFromPopover = props['data-popover-inject'];\n  let tempOpen = open;\n  // Hide tooltip when there is no title\n  if (!('open' in props) && !('visible' in props) && noTitle) {\n    tempOpen = false;\n  }\n  // ============================= Render =============================\n  const child = /*#__PURE__*/React.isValidElement(children) && !isFragment(children) ? children : /*#__PURE__*/React.createElement(\"span\", null, children);\n  const childProps = child.props;\n  const childCls = !childProps.className || typeof childProps.className === 'string' ? classNames(childProps.className, openClassName || `${prefixCls}-open`) : childProps.className;\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, !injectFromPopover);\n  // Color\n  const colorInfo = parseColor(prefixCls, color);\n  const arrowContentStyle = colorInfo.arrowStyle;\n  const rootClassNames = classNames(overlayClassName, {\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, colorInfo.className, rootClassName, hashId, cssVarCls, contextClassName, contextClassNames.root, tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.root);\n  const bodyClassNames = classNames(contextClassNames.body, tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.body);\n  // ============================ zIndex ============================\n  const [zIndex, contextZIndex] = useZIndex('Tooltip', restProps.zIndex);\n  const content = /*#__PURE__*/React.createElement(RcTooltip, Object.assign({}, restProps, {\n    zIndex: zIndex,\n    showArrow: mergedShowArrow,\n    placement: placement,\n    mouseEnterDelay: mouseEnterDelay,\n    mouseLeaveDelay: mouseLeaveDelay,\n    prefixCls: prefixCls,\n    classNames: {\n      root: rootClassNames,\n      body: bodyClassNames\n    },\n    styles: {\n      root: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, arrowContentStyle), contextStyles.root), contextStyle), overlayStyle), styles === null || styles === void 0 ? void 0 : styles.root),\n      body: Object.assign(Object.assign(Object.assign(Object.assign({}, contextStyles.body), overlayInnerStyle), styles === null || styles === void 0 ? void 0 : styles.body), colorInfo.overlayStyle)\n    },\n    getTooltipContainer: getPopupContainer || getTooltipContainer || getContextPopupContainer,\n    ref: tooltipRef,\n    builtinPlacements: tooltipPlacements,\n    overlay: memoOverlayWrapper,\n    visible: tempOpen,\n    onVisibleChange: onOpenChange,\n    afterVisibleChange: afterOpenChange !== null && afterOpenChange !== void 0 ? afterOpenChange : afterVisibleChange,\n    arrowContent: /*#__PURE__*/React.createElement(\"span\", {\n      className: `${prefixCls}-arrow-content`\n    }),\n    motion: {\n      motionName: getTransitionName(rootPrefixCls, 'zoom-big-fast', props.transitionName),\n      motionDeadline: 1000\n    },\n    destroyTooltipOnHide: !!destroyTooltipOnHide\n  }), tempOpen ? cloneElement(child, {\n    className: childCls\n  }) : child);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(zIndexContext.Provider, {\n    value: contextZIndex\n  }, content));\n});\nconst Tooltip = InternalTooltip;\nif (process.env.NODE_ENV !== 'production') {\n  Tooltip.displayName = 'Tooltip';\n}\nTooltip._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nexport default Tooltip;","// This icon file is generated automatically.\nvar EnterOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 000 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"enter\", \"theme\": \"outlined\" };\nexport default EnterOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EnterOutlinedSvg from \"@ant-design/icons-svg/es/asn/EnterOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EnterOutlined = function EnterOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: EnterOutlinedSvg\n  }));\n};\n\n/**![enter](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg2NCAxNzBoLTYwYy00LjQgMC04IDMuNi04IDh2NTE4SDMxMHYtNzNjMC02LjctNy44LTEwLjUtMTMtNi4zbC0xNDEuOSAxMTJhOCA4IDAgMDAwIDEyLjZsMTQxLjkgMTEyYzUuMyA0LjIgMTMgLjQgMTMtNi4zdi03NWg0OThjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTc4YzAtNC40LTMuNi04LTgtOHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EnterOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'EnterOutlined';\n}\nexport default RefIcon;","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n  /**\n   * MAC_ENTER\n   */\n  MAC_ENTER: 3,\n  /**\n   * BACKSPACE\n   */\n  BACKSPACE: 8,\n  /**\n   * TAB\n   */\n  TAB: 9,\n  /**\n   * NUMLOCK on FF/Safari Mac\n   */\n  NUM_CENTER: 12,\n  // NUMLOCK on FF/Safari Mac\n  /**\n   * ENTER\n   */\n  ENTER: 13,\n  /**\n   * SHIFT\n   */\n  SHIFT: 16,\n  /**\n   * CTRL\n   */\n  CTRL: 17,\n  /**\n   * ALT\n   */\n  ALT: 18,\n  /**\n   * PAUSE\n   */\n  PAUSE: 19,\n  /**\n   * CAPS_LOCK\n   */\n  CAPS_LOCK: 20,\n  /**\n   * ESC\n   */\n  ESC: 27,\n  /**\n   * SPACE\n   */\n  SPACE: 32,\n  /**\n   * PAGE_UP\n   */\n  PAGE_UP: 33,\n  // also NUM_NORTH_EAST\n  /**\n   * PAGE_DOWN\n   */\n  PAGE_DOWN: 34,\n  // also NUM_SOUTH_EAST\n  /**\n   * END\n   */\n  END: 35,\n  // also NUM_SOUTH_WEST\n  /**\n   * HOME\n   */\n  HOME: 36,\n  // also NUM_NORTH_WEST\n  /**\n   * LEFT\n   */\n  LEFT: 37,\n  // also NUM_WEST\n  /**\n   * UP\n   */\n  UP: 38,\n  // also NUM_NORTH\n  /**\n   * RIGHT\n   */\n  RIGHT: 39,\n  // also NUM_EAST\n  /**\n   * DOWN\n   */\n  DOWN: 40,\n  // also NUM_SOUTH\n  /**\n   * PRINT_SCREEN\n   */\n  PRINT_SCREEN: 44,\n  /**\n   * INSERT\n   */\n  INSERT: 45,\n  // also NUM_INSERT\n  /**\n   * DELETE\n   */\n  DELETE: 46,\n  // also NUM_DELETE\n  /**\n   * ZERO\n   */\n  ZERO: 48,\n  /**\n   * ONE\n   */\n  ONE: 49,\n  /**\n   * TWO\n   */\n  TWO: 50,\n  /**\n   * THREE\n   */\n  THREE: 51,\n  /**\n   * FOUR\n   */\n  FOUR: 52,\n  /**\n   * FIVE\n   */\n  FIVE: 53,\n  /**\n   * SIX\n   */\n  SIX: 54,\n  /**\n   * SEVEN\n   */\n  SEVEN: 55,\n  /**\n   * EIGHT\n   */\n  EIGHT: 56,\n  /**\n   * NINE\n   */\n  NINE: 57,\n  /**\n   * QUESTION_MARK\n   */\n  QUESTION_MARK: 63,\n  // needs localization\n  /**\n   * A\n   */\n  A: 65,\n  /**\n   * B\n   */\n  B: 66,\n  /**\n   * C\n   */\n  C: 67,\n  /**\n   * D\n   */\n  D: 68,\n  /**\n   * E\n   */\n  E: 69,\n  /**\n   * F\n   */\n  F: 70,\n  /**\n   * G\n   */\n  G: 71,\n  /**\n   * H\n   */\n  H: 72,\n  /**\n   * I\n   */\n  I: 73,\n  /**\n   * J\n   */\n  J: 74,\n  /**\n   * K\n   */\n  K: 75,\n  /**\n   * L\n   */\n  L: 76,\n  /**\n   * M\n   */\n  M: 77,\n  /**\n   * N\n   */\n  N: 78,\n  /**\n   * O\n   */\n  O: 79,\n  /**\n   * P\n   */\n  P: 80,\n  /**\n   * Q\n   */\n  Q: 81,\n  /**\n   * R\n   */\n  R: 82,\n  /**\n   * S\n   */\n  S: 83,\n  /**\n   * T\n   */\n  T: 84,\n  /**\n   * U\n   */\n  U: 85,\n  /**\n   * V\n   */\n  V: 86,\n  /**\n   * W\n   */\n  W: 87,\n  /**\n   * X\n   */\n  X: 88,\n  /**\n   * Y\n   */\n  Y: 89,\n  /**\n   * Z\n   */\n  Z: 90,\n  /**\n   * META\n   */\n  META: 91,\n  // WIN_KEY_LEFT\n  /**\n   * WIN_KEY_RIGHT\n   */\n  WIN_KEY_RIGHT: 92,\n  /**\n   * CONTEXT_MENU\n   */\n  CONTEXT_MENU: 93,\n  /**\n   * NUM_ZERO\n   */\n  NUM_ZERO: 96,\n  /**\n   * NUM_ONE\n   */\n  NUM_ONE: 97,\n  /**\n   * NUM_TWO\n   */\n  NUM_TWO: 98,\n  /**\n   * NUM_THREE\n   */\n  NUM_THREE: 99,\n  /**\n   * NUM_FOUR\n   */\n  NUM_FOUR: 100,\n  /**\n   * NUM_FIVE\n   */\n  NUM_FIVE: 101,\n  /**\n   * NUM_SIX\n   */\n  NUM_SIX: 102,\n  /**\n   * NUM_SEVEN\n   */\n  NUM_SEVEN: 103,\n  /**\n   * NUM_EIGHT\n   */\n  NUM_EIGHT: 104,\n  /**\n   * NUM_NINE\n   */\n  NUM_NINE: 105,\n  /**\n   * NUM_MULTIPLY\n   */\n  NUM_MULTIPLY: 106,\n  /**\n   * NUM_PLUS\n   */\n  NUM_PLUS: 107,\n  /**\n   * NUM_MINUS\n   */\n  NUM_MINUS: 109,\n  /**\n   * NUM_PERIOD\n   */\n  NUM_PERIOD: 110,\n  /**\n   * NUM_DIVISION\n   */\n  NUM_DIVISION: 111,\n  /**\n   * F1\n   */\n  F1: 112,\n  /**\n   * F2\n   */\n  F2: 113,\n  /**\n   * F3\n   */\n  F3: 114,\n  /**\n   * F4\n   */\n  F4: 115,\n  /**\n   * F5\n   */\n  F5: 116,\n  /**\n   * F6\n   */\n  F6: 117,\n  /**\n   * F7\n   */\n  F7: 118,\n  /**\n   * F8\n   */\n  F8: 119,\n  /**\n   * F9\n   */\n  F9: 120,\n  /**\n   * F10\n   */\n  F10: 121,\n  /**\n   * F11\n   */\n  F11: 122,\n  /**\n   * F12\n   */\n  F12: 123,\n  /**\n   * NUMLOCK\n   */\n  NUMLOCK: 144,\n  /**\n   * SEMICOLON\n   */\n  SEMICOLON: 186,\n  // needs localization\n  /**\n   * DASH\n   */\n  DASH: 189,\n  // needs localization\n  /**\n   * EQUALS\n   */\n  EQUALS: 187,\n  // needs localization\n  /**\n   * COMMA\n   */\n  COMMA: 188,\n  // needs localization\n  /**\n   * PERIOD\n   */\n  PERIOD: 190,\n  // needs localization\n  /**\n   * SLASH\n   */\n  SLASH: 191,\n  // needs localization\n  /**\n   * APOSTROPHE\n   */\n  APOSTROPHE: 192,\n  // needs localization\n  /**\n   * SINGLE_QUOTE\n   */\n  SINGLE_QUOTE: 222,\n  // needs localization\n  /**\n   * OPEN_SQUARE_BRACKET\n   */\n  OPEN_SQUARE_BRACKET: 219,\n  // needs localization\n  /**\n   * BACKSLASH\n   */\n  BACKSLASH: 220,\n  // needs localization\n  /**\n   * CLOSE_SQUARE_BRACKET\n   */\n  CLOSE_SQUARE_BRACKET: 221,\n  // needs localization\n  /**\n   * WIN_KEY\n   */\n  WIN_KEY: 224,\n  /**\n   * MAC_FF_META\n   */\n  MAC_FF_META: 224,\n  // Firefox (Gecko) fires this for the meta key instead of 91\n  /**\n   * WIN_IME\n   */\n  WIN_IME: 229,\n  // ======================== Function ========================\n  /**\n   * whether text and modified key is entered at the same time.\n   */\n  isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n    var keyCode = e.keyCode;\n    if (e.altKey && !e.ctrlKey || e.metaKey ||\n    // Function keys don't generate text\n    keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n      return false;\n    }\n\n    // The following keys are quite harmless, even in combination with\n    // CTRL, ALT or SHIFT.\n    switch (keyCode) {\n      case KeyCode.ALT:\n      case KeyCode.CAPS_LOCK:\n      case KeyCode.CONTEXT_MENU:\n      case KeyCode.CTRL:\n      case KeyCode.DOWN:\n      case KeyCode.END:\n      case KeyCode.ESC:\n      case KeyCode.HOME:\n      case KeyCode.INSERT:\n      case KeyCode.LEFT:\n      case KeyCode.MAC_FF_META:\n      case KeyCode.META:\n      case KeyCode.NUMLOCK:\n      case KeyCode.NUM_CENTER:\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAUSE:\n      case KeyCode.PRINT_SCREEN:\n      case KeyCode.RIGHT:\n      case KeyCode.SHIFT:\n      case KeyCode.UP:\n      case KeyCode.WIN_KEY:\n      case KeyCode.WIN_KEY_RIGHT:\n        return false;\n      default:\n        return true;\n    }\n  },\n  /**\n   * whether character is entered.\n   */\n  isCharacterKey: function isCharacterKey(keyCode) {\n    if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n      return true;\n    }\n    if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n      return true;\n    }\n    if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n      return true;\n    }\n\n    // Safari sends zero key code for non-latin characters.\n    if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n      return true;\n    }\n    switch (keyCode) {\n      case KeyCode.SPACE:\n      case KeyCode.QUESTION_MARK:\n      case KeyCode.NUM_PLUS:\n      case KeyCode.NUM_MINUS:\n      case KeyCode.NUM_PERIOD:\n      case KeyCode.NUM_DIVISION:\n      case KeyCode.SEMICOLON:\n      case KeyCode.DASH:\n      case KeyCode.EQUALS:\n      case KeyCode.COMMA:\n      case KeyCode.PERIOD:\n      case KeyCode.SLASH:\n      case KeyCode.APOSTROPHE:\n      case KeyCode.SINGLE_QUOTE:\n      case KeyCode.OPEN_SQUARE_BRACKET:\n      case KeyCode.BACKSLASH:\n      case KeyCode.CLOSE_SQUARE_BRACKET:\n        return true;\n      default:\n        return false;\n    }\n  }\n};\nexport default KeyCode;","export function hasAddon(props) {\n  return !!(props.addonBefore || props.addonAfter);\n}\nexport function hasPrefixSuffix(props) {\n  return !!(props.prefix || props.suffix || props.allowClear);\n}\n\n// TODO: It's better to use `Proxy` replace the `element.value`. But we still need support IE11.\nfunction cloneEvent(event, target, value) {\n  // A bug report filed on WebKit's Bugzilla tracker, dating back to 2009, specifically addresses the issue of cloneNode() not copying files of <input type=\"file\"> elements.\n  // As of the last update, this bug was still marked as \"NEW,\" indicating that it might not have been resolved yet​​.\n  // https://bugs.webkit.org/show_bug.cgi?id=28123\n  var currentTarget = target.cloneNode(true);\n\n  // click clear icon\n  var newEvent = Object.create(event, {\n    target: {\n      value: currentTarget\n    },\n    currentTarget: {\n      value: currentTarget\n    }\n  });\n\n  // Fill data\n  currentTarget.value = value;\n\n  // Fill selection. Some type like `email` not support selection\n  // https://github.com/ant-design/ant-design/issues/47833\n  if (typeof target.selectionStart === 'number' && typeof target.selectionEnd === 'number') {\n    currentTarget.selectionStart = target.selectionStart;\n    currentTarget.selectionEnd = target.selectionEnd;\n  }\n  currentTarget.setSelectionRange = function () {\n    target.setSelectionRange.apply(target, arguments);\n  };\n  return newEvent;\n}\nexport function resolveOnChange(target, e, onChange, targetValue) {\n  if (!onChange) {\n    return;\n  }\n  var event = e;\n  if (e.type === 'click') {\n    // Clone a new target for event.\n    // Avoid the following usage, the setQuery method gets the original value.\n    //\n    // const [query, setQuery] = React.useState('');\n    // <Input\n    //   allowClear\n    //   value={query}\n    //   onChange={(e)=> {\n    //     setQuery((prevStatus) => e.target.value);\n    //   }}\n    // />\n\n    event = cloneEvent(e, target, '');\n    onChange(event);\n    return;\n  }\n\n  // Trigger by composition event, this means we need force change the input value\n  // https://github.com/ant-design/ant-design/issues/45737\n  // https://github.com/ant-design/ant-design/issues/46598\n  if (target.type !== 'file' && targetValue !== undefined) {\n    event = cloneEvent(e, target, targetValue);\n    onChange(event);\n    return;\n  }\n  onChange(event);\n}\nexport function triggerFocus(element, option) {\n  if (!element) return;\n  element.focus(option);\n\n  // Selection content\n  var _ref = option || {},\n    cursor = _ref.cursor;\n  if (cursor) {\n    var len = element.value.length;\n    switch (cursor) {\n      case 'start':\n        element.setSelectionRange(0, 0);\n        break;\n      case 'end':\n        element.setSelectionRange(len, len);\n        break;\n      default:\n        element.setSelectionRange(0, len);\n    }\n  }\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport clsx from 'classnames';\nimport React, { cloneElement, useRef } from 'react';\nimport { hasAddon, hasPrefixSuffix } from \"./utils/commonUtils\";\nvar BaseInput = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _props, _props2, _props3;\n  var inputEl = props.inputElement,\n    children = props.children,\n    prefixCls = props.prefixCls,\n    prefix = props.prefix,\n    suffix = props.suffix,\n    addonBefore = props.addonBefore,\n    addonAfter = props.addonAfter,\n    className = props.className,\n    style = props.style,\n    disabled = props.disabled,\n    readOnly = props.readOnly,\n    focused = props.focused,\n    triggerFocus = props.triggerFocus,\n    allowClear = props.allowClear,\n    value = props.value,\n    handleReset = props.handleReset,\n    hidden = props.hidden,\n    classes = props.classes,\n    classNames = props.classNames,\n    dataAttrs = props.dataAttrs,\n    styles = props.styles,\n    components = props.components,\n    onClear = props.onClear;\n  var inputElement = children !== null && children !== void 0 ? children : inputEl;\n  var AffixWrapperComponent = (components === null || components === void 0 ? void 0 : components.affixWrapper) || 'span';\n  var GroupWrapperComponent = (components === null || components === void 0 ? void 0 : components.groupWrapper) || 'span';\n  var WrapperComponent = (components === null || components === void 0 ? void 0 : components.wrapper) || 'span';\n  var GroupAddonComponent = (components === null || components === void 0 ? void 0 : components.groupAddon) || 'span';\n  var containerRef = useRef(null);\n  var onInputClick = function onInputClick(e) {\n    var _containerRef$current;\n    if ((_containerRef$current = containerRef.current) !== null && _containerRef$current !== void 0 && _containerRef$current.contains(e.target)) {\n      triggerFocus === null || triggerFocus === void 0 || triggerFocus();\n    }\n  };\n  var hasAffix = hasPrefixSuffix(props);\n  var element = /*#__PURE__*/cloneElement(inputElement, {\n    value: value,\n    className: clsx((_props = inputElement.props) === null || _props === void 0 ? void 0 : _props.className, !hasAffix && (classNames === null || classNames === void 0 ? void 0 : classNames.variant)) || null\n  });\n\n  // ======================== Ref ======================== //\n  var groupRef = useRef(null);\n  React.useImperativeHandle(ref, function () {\n    return {\n      nativeElement: groupRef.current || containerRef.current\n    };\n  });\n\n  // ================== Prefix & Suffix ================== //\n  if (hasAffix) {\n    // ================== Clear Icon ================== //\n    var clearIcon = null;\n    if (allowClear) {\n      var needClear = !disabled && !readOnly && value;\n      var clearIconCls = \"\".concat(prefixCls, \"-clear-icon\");\n      var iconNode = _typeof(allowClear) === 'object' && allowClear !== null && allowClear !== void 0 && allowClear.clearIcon ? allowClear.clearIcon : '✖';\n      clearIcon = /*#__PURE__*/React.createElement(\"button\", {\n        type: \"button\",\n        onClick: function onClick(event) {\n          handleReset === null || handleReset === void 0 || handleReset(event);\n          onClear === null || onClear === void 0 || onClear();\n        }\n        // Do not trigger onBlur when clear input\n        // https://github.com/ant-design/ant-design/issues/31200\n        ,\n        onMouseDown: function onMouseDown(e) {\n          return e.preventDefault();\n        },\n        className: clsx(clearIconCls, _defineProperty(_defineProperty({}, \"\".concat(clearIconCls, \"-hidden\"), !needClear), \"\".concat(clearIconCls, \"-has-suffix\"), !!suffix))\n      }, iconNode);\n    }\n    var affixWrapperPrefixCls = \"\".concat(prefixCls, \"-affix-wrapper\");\n    var affixWrapperCls = clsx(affixWrapperPrefixCls, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(affixWrapperPrefixCls, \"-disabled\"), disabled), \"\".concat(affixWrapperPrefixCls, \"-focused\"), focused), \"\".concat(affixWrapperPrefixCls, \"-readonly\"), readOnly), \"\".concat(affixWrapperPrefixCls, \"-input-with-clear-btn\"), suffix && allowClear && value), classes === null || classes === void 0 ? void 0 : classes.affixWrapper, classNames === null || classNames === void 0 ? void 0 : classNames.affixWrapper, classNames === null || classNames === void 0 ? void 0 : classNames.variant);\n    var suffixNode = (suffix || allowClear) && /*#__PURE__*/React.createElement(\"span\", {\n      className: clsx(\"\".concat(prefixCls, \"-suffix\"), classNames === null || classNames === void 0 ? void 0 : classNames.suffix),\n      style: styles === null || styles === void 0 ? void 0 : styles.suffix\n    }, clearIcon, suffix);\n    element = /*#__PURE__*/React.createElement(AffixWrapperComponent, _extends({\n      className: affixWrapperCls,\n      style: styles === null || styles === void 0 ? void 0 : styles.affixWrapper,\n      onClick: onInputClick\n    }, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.affixWrapper, {\n      ref: containerRef\n    }), prefix && /*#__PURE__*/React.createElement(\"span\", {\n      className: clsx(\"\".concat(prefixCls, \"-prefix\"), classNames === null || classNames === void 0 ? void 0 : classNames.prefix),\n      style: styles === null || styles === void 0 ? void 0 : styles.prefix\n    }, prefix), element, suffixNode);\n  }\n\n  // ================== Addon ================== //\n  if (hasAddon(props)) {\n    var wrapperCls = \"\".concat(prefixCls, \"-group\");\n    var addonCls = \"\".concat(wrapperCls, \"-addon\");\n    var groupWrapperCls = \"\".concat(wrapperCls, \"-wrapper\");\n    var mergedWrapperClassName = clsx(\"\".concat(prefixCls, \"-wrapper\"), wrapperCls, classes === null || classes === void 0 ? void 0 : classes.wrapper, classNames === null || classNames === void 0 ? void 0 : classNames.wrapper);\n    var mergedGroupClassName = clsx(groupWrapperCls, _defineProperty({}, \"\".concat(groupWrapperCls, \"-disabled\"), disabled), classes === null || classes === void 0 ? void 0 : classes.group, classNames === null || classNames === void 0 ? void 0 : classNames.groupWrapper);\n\n    // Need another wrapper for changing display:table to display:inline-block\n    // and put style prop in wrapper\n    element = /*#__PURE__*/React.createElement(GroupWrapperComponent, {\n      className: mergedGroupClassName,\n      ref: groupRef\n    }, /*#__PURE__*/React.createElement(WrapperComponent, {\n      className: mergedWrapperClassName\n    }, addonBefore && /*#__PURE__*/React.createElement(GroupAddonComponent, {\n      className: addonCls\n    }, addonBefore), element, addonAfter && /*#__PURE__*/React.createElement(GroupAddonComponent, {\n      className: addonCls\n    }, addonAfter)));\n  }\n\n  // `className` and `style` are always on the root element\n  return /*#__PURE__*/React.cloneElement(element, {\n    className: clsx((_props2 = element.props) === null || _props2 === void 0 ? void 0 : _props2.className, className) || null,\n    style: _objectSpread(_objectSpread({}, (_props3 = element.props) === null || _props3 === void 0 ? void 0 : _props3.style), style),\n    hidden: hidden\n  });\n});\nexport default BaseInput;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"show\"];\nimport * as React from 'react';\n/**\n * Cut `value` by the `count.max` prop.\n */\nexport function inCountRange(value, countConfig) {\n  if (!countConfig.max) {\n    return true;\n  }\n  var count = countConfig.strategy(value);\n  return count <= countConfig.max;\n}\nexport default function useCount(count, showCount) {\n  return React.useMemo(function () {\n    var mergedConfig = {};\n    if (showCount) {\n      mergedConfig.show = _typeof(showCount) === 'object' && showCount.formatter ? showCount.formatter : !!showCount;\n    }\n    mergedConfig = _objectSpread(_objectSpread({}, mergedConfig), count);\n    var _ref = mergedConfig,\n      show = _ref.show,\n      rest = _objectWithoutProperties(_ref, _excluded);\n    return _objectSpread(_objectSpread({}, rest), {}, {\n      show: !!show,\n      showFormatter: typeof show === 'function' ? show : undefined,\n      strategy: rest.strategy || function (value) {\n        return value.length;\n      }\n    });\n  }, [count, showCount]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"autoComplete\", \"onChange\", \"onFocus\", \"onBlur\", \"onPressEnter\", \"onKeyDown\", \"onKeyUp\", \"prefixCls\", \"disabled\", \"htmlSize\", \"className\", \"maxLength\", \"suffix\", \"showCount\", \"count\", \"type\", \"classes\", \"classNames\", \"styles\", \"onCompositionStart\", \"onCompositionEnd\"];\nimport clsx from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport BaseInput from \"./BaseInput\";\nimport useCount from \"./hooks/useCount\";\nimport { resolveOnChange, triggerFocus } from \"./utils/commonUtils\";\nvar Input = /*#__PURE__*/forwardRef(function (props, ref) {\n  var autoComplete = props.autoComplete,\n    onChange = props.onChange,\n    onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    onPressEnter = props.onPressEnter,\n    onKeyDown = props.onKeyDown,\n    onKeyUp = props.onKeyUp,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-input' : _props$prefixCls,\n    disabled = props.disabled,\n    htmlSize = props.htmlSize,\n    className = props.className,\n    maxLength = props.maxLength,\n    suffix = props.suffix,\n    showCount = props.showCount,\n    count = props.count,\n    _props$type = props.type,\n    type = _props$type === void 0 ? 'text' : _props$type,\n    classes = props.classes,\n    classNames = props.classNames,\n    styles = props.styles,\n    _onCompositionStart = props.onCompositionStart,\n    onCompositionEnd = props.onCompositionEnd,\n    rest = _objectWithoutProperties(props, _excluded);\n  var _useState = useState(false),\n    _useState2 = _slicedToArray(_useState, 2),\n    focused = _useState2[0],\n    setFocused = _useState2[1];\n  var compositionRef = useRef(false);\n  var keyLockRef = useRef(false);\n  var inputRef = useRef(null);\n  var holderRef = useRef(null);\n  var focus = function focus(option) {\n    if (inputRef.current) {\n      triggerFocus(inputRef.current, option);\n    }\n  };\n\n  // ====================== Value =======================\n  var _useMergedState = useMergedState(props.defaultValue, {\n      value: props.value\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    value = _useMergedState2[0],\n    setValue = _useMergedState2[1];\n  var formatValue = value === undefined || value === null ? '' : String(value);\n\n  // =================== Select Range ===================\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    selection = _useState4[0],\n    setSelection = _useState4[1];\n\n  // ====================== Count =======================\n  var countConfig = useCount(count, showCount);\n  var mergedMax = countConfig.max || maxLength;\n  var valueLength = countConfig.strategy(formatValue);\n  var isOutOfRange = !!mergedMax && valueLength > mergedMax;\n\n  // ======================= Ref ========================\n  useImperativeHandle(ref, function () {\n    var _holderRef$current;\n    return {\n      focus: focus,\n      blur: function blur() {\n        var _inputRef$current;\n        (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.blur();\n      },\n      setSelectionRange: function setSelectionRange(start, end, direction) {\n        var _inputRef$current2;\n        (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.setSelectionRange(start, end, direction);\n      },\n      select: function select() {\n        var _inputRef$current3;\n        (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 || _inputRef$current3.select();\n      },\n      input: inputRef.current,\n      nativeElement: ((_holderRef$current = holderRef.current) === null || _holderRef$current === void 0 ? void 0 : _holderRef$current.nativeElement) || inputRef.current\n    };\n  });\n  useEffect(function () {\n    if (keyLockRef.current) {\n      keyLockRef.current = false;\n    }\n    setFocused(function (prev) {\n      return prev && disabled ? false : prev;\n    });\n  }, [disabled]);\n  var triggerChange = function triggerChange(e, currentValue, info) {\n    var cutValue = currentValue;\n    if (!compositionRef.current && countConfig.exceedFormatter && countConfig.max && countConfig.strategy(currentValue) > countConfig.max) {\n      cutValue = countConfig.exceedFormatter(currentValue, {\n        max: countConfig.max\n      });\n      if (currentValue !== cutValue) {\n        var _inputRef$current4, _inputRef$current5;\n        setSelection([((_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.selectionStart) || 0, ((_inputRef$current5 = inputRef.current) === null || _inputRef$current5 === void 0 ? void 0 : _inputRef$current5.selectionEnd) || 0]);\n      }\n    } else if (info.source === 'compositionEnd') {\n      // Avoid triggering twice\n      // https://github.com/ant-design/ant-design/issues/46587\n      return;\n    }\n    setValue(cutValue);\n    if (inputRef.current) {\n      resolveOnChange(inputRef.current, e, onChange, cutValue);\n    }\n  };\n  useEffect(function () {\n    if (selection) {\n      var _inputRef$current6;\n      (_inputRef$current6 = inputRef.current) === null || _inputRef$current6 === void 0 || _inputRef$current6.setSelectionRange.apply(_inputRef$current6, _toConsumableArray(selection));\n    }\n  }, [selection]);\n  var onInternalChange = function onInternalChange(e) {\n    triggerChange(e, e.target.value, {\n      source: 'change'\n    });\n  };\n  var onInternalCompositionEnd = function onInternalCompositionEnd(e) {\n    compositionRef.current = false;\n    triggerChange(e, e.currentTarget.value, {\n      source: 'compositionEnd'\n    });\n    onCompositionEnd === null || onCompositionEnd === void 0 || onCompositionEnd(e);\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    if (onPressEnter && e.key === 'Enter' && !keyLockRef.current) {\n      keyLockRef.current = true;\n      onPressEnter(e);\n    }\n    onKeyDown === null || onKeyDown === void 0 || onKeyDown(e);\n  };\n  var handleKeyUp = function handleKeyUp(e) {\n    if (e.key === 'Enter') {\n      keyLockRef.current = false;\n    }\n    onKeyUp === null || onKeyUp === void 0 || onKeyUp(e);\n  };\n  var handleFocus = function handleFocus(e) {\n    setFocused(true);\n    onFocus === null || onFocus === void 0 || onFocus(e);\n  };\n  var handleBlur = function handleBlur(e) {\n    if (keyLockRef.current) {\n      keyLockRef.current = false;\n    }\n    setFocused(false);\n    onBlur === null || onBlur === void 0 || onBlur(e);\n  };\n  var handleReset = function handleReset(e) {\n    setValue('');\n    focus();\n    if (inputRef.current) {\n      resolveOnChange(inputRef.current, e, onChange);\n    }\n  };\n\n  // ====================== Input =======================\n  var outOfRangeCls = isOutOfRange && \"\".concat(prefixCls, \"-out-of-range\");\n  var getInputElement = function getInputElement() {\n    // Fix https://fb.me/react-unknown-prop\n    var otherProps = omit(props, ['prefixCls', 'onPressEnter', 'addonBefore', 'addonAfter', 'prefix', 'suffix', 'allowClear',\n    // Input elements must be either controlled or uncontrolled,\n    // specify either the value prop, or the defaultValue prop, but not both.\n    'defaultValue', 'showCount', 'count', 'classes', 'htmlSize', 'styles', 'classNames', 'onClear']);\n    return /*#__PURE__*/React.createElement(\"input\", _extends({\n      autoComplete: autoComplete\n    }, otherProps, {\n      onChange: onInternalChange,\n      onFocus: handleFocus,\n      onBlur: handleBlur,\n      onKeyDown: handleKeyDown,\n      onKeyUp: handleKeyUp,\n      className: clsx(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), classNames === null || classNames === void 0 ? void 0 : classNames.input),\n      style: styles === null || styles === void 0 ? void 0 : styles.input,\n      ref: inputRef,\n      size: htmlSize,\n      type: type,\n      onCompositionStart: function onCompositionStart(e) {\n        compositionRef.current = true;\n        _onCompositionStart === null || _onCompositionStart === void 0 || _onCompositionStart(e);\n      },\n      onCompositionEnd: onInternalCompositionEnd\n    }));\n  };\n  var getSuffix = function getSuffix() {\n    // Max length value\n    var hasMaxLength = Number(mergedMax) > 0;\n    if (suffix || countConfig.show) {\n      var dataCount = countConfig.showFormatter ? countConfig.showFormatter({\n        value: formatValue,\n        count: valueLength,\n        maxLength: mergedMax\n      }) : \"\".concat(valueLength).concat(hasMaxLength ? \" / \".concat(mergedMax) : '');\n      return /*#__PURE__*/React.createElement(React.Fragment, null, countConfig.show && /*#__PURE__*/React.createElement(\"span\", {\n        className: clsx(\"\".concat(prefixCls, \"-show-count-suffix\"), _defineProperty({}, \"\".concat(prefixCls, \"-show-count-has-suffix\"), !!suffix), classNames === null || classNames === void 0 ? void 0 : classNames.count),\n        style: _objectSpread({}, styles === null || styles === void 0 ? void 0 : styles.count)\n      }, dataCount), suffix);\n    }\n    return null;\n  };\n\n  // ====================== Render ======================\n  return /*#__PURE__*/React.createElement(BaseInput, _extends({}, rest, {\n    prefixCls: prefixCls,\n    className: clsx(className, outOfRangeCls),\n    handleReset: handleReset,\n    value: formatValue,\n    focused: focused,\n    triggerFocus: focus,\n    suffix: getSuffix(),\n    disabled: disabled,\n    classes: classes,\n    classNames: classNames,\n    styles: styles\n  }), getInputElement());\n});\nexport default Input;","import BaseInput from \"./BaseInput\";\nimport Input from \"./Input\";\nexport { BaseInput };\nexport default Input;","// Thanks to https://github.com/andreypopp/react-textarea-autosize/\n\n/**\n * calculateNodeHeight(uiTextNode, useCache = false)\n */\n\nvar HIDDEN_TEXTAREA_STYLE = \"\\n  min-height:0 !important;\\n  max-height:none !important;\\n  height:0 !important;\\n  visibility:hidden !important;\\n  overflow:hidden !important;\\n  position:absolute !important;\\n  z-index:-1000 !important;\\n  top:0 !important;\\n  right:0 !important;\\n  pointer-events: none !important;\\n\";\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'font-variant', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing', 'word-break', 'white-space'];\nvar computedStyleCache = {};\nvar hiddenTextarea;\nexport function calculateNodeStyling(node) {\n  var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');\n  if (useCache && computedStyleCache[nodeRef]) {\n    return computedStyleCache[nodeRef];\n  }\n  var style = window.getComputedStyle(node);\n  var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');\n  var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n  var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n  var sizingStyle = SIZING_STYLE.map(function (name) {\n    return \"\".concat(name, \":\").concat(style.getPropertyValue(name));\n  }).join(';');\n  var nodeInfo = {\n    sizingStyle: sizingStyle,\n    paddingSize: paddingSize,\n    borderSize: borderSize,\n    boxSizing: boxSizing\n  };\n  if (useCache && nodeRef) {\n    computedStyleCache[nodeRef] = nodeInfo;\n  }\n  return nodeInfo;\n}\nexport default function calculateAutoSizeStyle(uiTextNode) {\n  var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n  var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n  if (!hiddenTextarea) {\n    hiddenTextarea = document.createElement('textarea');\n    hiddenTextarea.setAttribute('tab-index', '-1');\n    hiddenTextarea.setAttribute('aria-hidden', 'true');\n    // fix: A form field element should have an id or name attribute\n    // A form field element has neither an id nor a name attribute. This might prevent the browser from correctly autofilling the form.\n    // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea\n    hiddenTextarea.setAttribute('name', 'hiddenTextarea');\n    document.body.appendChild(hiddenTextarea);\n  }\n\n  // Fix wrap=\"off\" issue\n  // https://github.com/ant-design/ant-design/issues/6577\n  if (uiTextNode.getAttribute('wrap')) {\n    hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));\n  } else {\n    hiddenTextarea.removeAttribute('wrap');\n  }\n\n  // Copy all CSS properties that have an impact on the height of the content in\n  // the textbox\n  var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),\n    paddingSize = _calculateNodeStyling.paddingSize,\n    borderSize = _calculateNodeStyling.borderSize,\n    boxSizing = _calculateNodeStyling.boxSizing,\n    sizingStyle = _calculateNodeStyling.sizingStyle;\n\n  // Need to have the overflow attribute to hide the scrollbar otherwise\n  // text-lines will not calculated properly as the shadow will technically be\n  // narrower for content\n  hiddenTextarea.setAttribute('style', \"\".concat(sizingStyle, \";\").concat(HIDDEN_TEXTAREA_STYLE));\n  hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';\n  var minHeight = undefined;\n  var maxHeight = undefined;\n  var overflowY;\n  var height = hiddenTextarea.scrollHeight;\n  if (boxSizing === 'border-box') {\n    // border-box: add border, since height = content + padding + border\n    height += borderSize;\n  } else if (boxSizing === 'content-box') {\n    // remove padding, since height = content\n    height -= paddingSize;\n  }\n  if (minRows !== null || maxRows !== null) {\n    // measure height of a textarea with a single row\n    hiddenTextarea.value = ' ';\n    var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n    if (minRows !== null) {\n      minHeight = singleRowHeight * minRows;\n      if (boxSizing === 'border-box') {\n        minHeight = minHeight + paddingSize + borderSize;\n      }\n      height = Math.max(minHeight, height);\n    }\n    if (maxRows !== null) {\n      maxHeight = singleRowHeight * maxRows;\n      if (boxSizing === 'border-box') {\n        maxHeight = maxHeight + paddingSize + borderSize;\n      }\n      overflowY = height > maxHeight ? '' : 'hidden';\n      height = Math.min(maxHeight, height);\n    }\n  }\n  var style = {\n    height: height,\n    overflowY: overflowY,\n    resize: 'none'\n  };\n  if (minHeight) {\n    style.minHeight = minHeight;\n  }\n  if (maxHeight) {\n    style.maxHeight = maxHeight;\n  }\n  return style;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"defaultValue\", \"value\", \"autoSize\", \"onResize\", \"className\", \"style\", \"disabled\", \"onChange\", \"onInternalAutoSize\"];\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport calculateAutoSizeStyle from \"./calculateNodeHeight\";\nvar RESIZE_START = 0;\nvar RESIZE_MEASURING = 1;\nvar RESIZE_STABLE = 2;\nvar ResizableTextArea = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _ref = props,\n    prefixCls = _ref.prefixCls,\n    defaultValue = _ref.defaultValue,\n    value = _ref.value,\n    autoSize = _ref.autoSize,\n    onResize = _ref.onResize,\n    className = _ref.className,\n    style = _ref.style,\n    disabled = _ref.disabled,\n    onChange = _ref.onChange,\n    onInternalAutoSize = _ref.onInternalAutoSize,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n\n  // =============================== Value ================================\n  var _useMergedState = useMergedState(defaultValue, {\n      value: value,\n      postState: function postState(val) {\n        return val !== null && val !== void 0 ? val : '';\n      }\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedValue = _useMergedState2[0],\n    setMergedValue = _useMergedState2[1];\n  var onInternalChange = function onInternalChange(event) {\n    setMergedValue(event.target.value);\n    onChange === null || onChange === void 0 || onChange(event);\n  };\n\n  // ================================ Ref =================================\n  var textareaRef = React.useRef();\n  React.useImperativeHandle(ref, function () {\n    return {\n      textArea: textareaRef.current\n    };\n  });\n\n  // ============================== AutoSize ==============================\n  var _React$useMemo = React.useMemo(function () {\n      if (autoSize && _typeof(autoSize) === 'object') {\n        return [autoSize.minRows, autoSize.maxRows];\n      }\n      return [];\n    }, [autoSize]),\n    _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n    minRows = _React$useMemo2[0],\n    maxRows = _React$useMemo2[1];\n  var needAutoSize = !!autoSize;\n\n  // =============================== Scroll ===============================\n  // https://github.com/ant-design/ant-design/issues/21870\n  var fixFirefoxAutoScroll = function fixFirefoxAutoScroll() {\n    try {\n      // FF has bug with jump of scroll to top. We force back here.\n      if (document.activeElement === textareaRef.current) {\n        var _textareaRef$current = textareaRef.current,\n          selectionStart = _textareaRef$current.selectionStart,\n          selectionEnd = _textareaRef$current.selectionEnd,\n          scrollTop = _textareaRef$current.scrollTop;\n\n        // Fix Safari bug which not rollback when break line\n        // This makes Chinese IME can't input. Do not fix this\n        // const { value: tmpValue } = textareaRef.current;\n        // textareaRef.current.value = '';\n        // textareaRef.current.value = tmpValue;\n\n        textareaRef.current.setSelectionRange(selectionStart, selectionEnd);\n        textareaRef.current.scrollTop = scrollTop;\n      }\n    } catch (e) {\n      // Fix error in Chrome:\n      // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n      // http://stackoverflow.com/q/21177489/3040605\n    }\n  };\n\n  // =============================== Resize ===============================\n  var _React$useState = React.useState(RESIZE_STABLE),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    resizeState = _React$useState2[0],\n    setResizeState = _React$useState2[1];\n  var _React$useState3 = React.useState(),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    autoSizeStyle = _React$useState4[0],\n    setAutoSizeStyle = _React$useState4[1];\n  var startResize = function startResize() {\n    setResizeState(RESIZE_START);\n    if (process.env.NODE_ENV === 'test') {\n      onInternalAutoSize === null || onInternalAutoSize === void 0 || onInternalAutoSize();\n    }\n  };\n\n  // Change to trigger resize measure\n  useLayoutEffect(function () {\n    if (needAutoSize) {\n      startResize();\n    }\n  }, [value, minRows, maxRows, needAutoSize]);\n  useLayoutEffect(function () {\n    if (resizeState === RESIZE_START) {\n      setResizeState(RESIZE_MEASURING);\n    } else if (resizeState === RESIZE_MEASURING) {\n      var textareaStyles = calculateAutoSizeStyle(textareaRef.current, false, minRows, maxRows);\n\n      // Safari has bug that text will keep break line on text cut when it's prev is break line.\n      // ZombieJ: This not often happen. So we just skip it.\n      // const { selectionStart, selectionEnd, scrollTop } = textareaRef.current;\n      // const { value: tmpValue } = textareaRef.current;\n      // textareaRef.current.value = '';\n      // textareaRef.current.value = tmpValue;\n\n      // if (document.activeElement === textareaRef.current) {\n      //   textareaRef.current.scrollTop = scrollTop;\n      //   textareaRef.current.setSelectionRange(selectionStart, selectionEnd);\n      // }\n\n      setResizeState(RESIZE_STABLE);\n      setAutoSizeStyle(textareaStyles);\n    } else {\n      fixFirefoxAutoScroll();\n    }\n  }, [resizeState]);\n\n  // We lock resize trigger by raf to avoid Safari warning\n  var resizeRafRef = React.useRef();\n  var cleanRaf = function cleanRaf() {\n    raf.cancel(resizeRafRef.current);\n  };\n  var onInternalResize = function onInternalResize(size) {\n    if (resizeState === RESIZE_STABLE) {\n      onResize === null || onResize === void 0 || onResize(size);\n      if (autoSize) {\n        cleanRaf();\n        resizeRafRef.current = raf(function () {\n          startResize();\n        });\n      }\n    }\n  };\n  React.useEffect(function () {\n    return cleanRaf;\n  }, []);\n\n  // =============================== Render ===============================\n  var mergedAutoSizeStyle = needAutoSize ? autoSizeStyle : null;\n  var mergedStyle = _objectSpread(_objectSpread({}, style), mergedAutoSizeStyle);\n  if (resizeState === RESIZE_START || resizeState === RESIZE_MEASURING) {\n    mergedStyle.overflowY = 'hidden';\n    mergedStyle.overflowX = 'hidden';\n  }\n  return /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onInternalResize,\n    disabled: !(autoSize || onResize)\n  }, /*#__PURE__*/React.createElement(\"textarea\", _extends({}, restProps, {\n    ref: textareaRef,\n    style: mergedStyle,\n    className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n    disabled: disabled,\n    value: mergedValue,\n    onChange: onInternalChange\n  })));\n});\nexport default ResizableTextArea;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"defaultValue\", \"value\", \"onFocus\", \"onBlur\", \"onChange\", \"allowClear\", \"maxLength\", \"onCompositionStart\", \"onCompositionEnd\", \"suffix\", \"prefixCls\", \"showCount\", \"count\", \"className\", \"style\", \"disabled\", \"hidden\", \"classNames\", \"styles\", \"onResize\", \"onClear\", \"onPressEnter\", \"readOnly\", \"autoSize\", \"onKeyDown\"];\nimport clsx from 'classnames';\nimport { BaseInput } from 'rc-input';\nimport useCount from \"rc-input/es/hooks/useCount\";\nimport { resolveOnChange } from \"rc-input/es/utils/commonUtils\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport ResizableTextArea from \"./ResizableTextArea\";\nvar TextArea = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var _countConfig$max;\n  var defaultValue = _ref.defaultValue,\n    customValue = _ref.value,\n    onFocus = _ref.onFocus,\n    onBlur = _ref.onBlur,\n    onChange = _ref.onChange,\n    allowClear = _ref.allowClear,\n    maxLength = _ref.maxLength,\n    onCompositionStart = _ref.onCompositionStart,\n    onCompositionEnd = _ref.onCompositionEnd,\n    suffix = _ref.suffix,\n    _ref$prefixCls = _ref.prefixCls,\n    prefixCls = _ref$prefixCls === void 0 ? 'rc-textarea' : _ref$prefixCls,\n    showCount = _ref.showCount,\n    count = _ref.count,\n    className = _ref.className,\n    style = _ref.style,\n    disabled = _ref.disabled,\n    hidden = _ref.hidden,\n    classNames = _ref.classNames,\n    styles = _ref.styles,\n    onResize = _ref.onResize,\n    onClear = _ref.onClear,\n    onPressEnter = _ref.onPressEnter,\n    readOnly = _ref.readOnly,\n    autoSize = _ref.autoSize,\n    onKeyDown = _ref.onKeyDown,\n    rest = _objectWithoutProperties(_ref, _excluded);\n  var _useMergedState = useMergedState(defaultValue, {\n      value: customValue,\n      defaultValue: defaultValue\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    value = _useMergedState2[0],\n    setValue = _useMergedState2[1];\n  var formatValue = value === undefined || value === null ? '' : String(value);\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    focused = _React$useState2[0],\n    setFocused = _React$useState2[1];\n  var compositionRef = React.useRef(false);\n  var _React$useState3 = React.useState(null),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    textareaResized = _React$useState4[0],\n    setTextareaResized = _React$useState4[1];\n\n  // =============================== Ref ================================\n  var holderRef = useRef(null);\n  var resizableTextAreaRef = useRef(null);\n  var getTextArea = function getTextArea() {\n    var _resizableTextAreaRef;\n    return (_resizableTextAreaRef = resizableTextAreaRef.current) === null || _resizableTextAreaRef === void 0 ? void 0 : _resizableTextAreaRef.textArea;\n  };\n  var focus = function focus() {\n    getTextArea().focus();\n  };\n  useImperativeHandle(ref, function () {\n    var _holderRef$current;\n    return {\n      resizableTextArea: resizableTextAreaRef.current,\n      focus: focus,\n      blur: function blur() {\n        getTextArea().blur();\n      },\n      nativeElement: ((_holderRef$current = holderRef.current) === null || _holderRef$current === void 0 ? void 0 : _holderRef$current.nativeElement) || getTextArea()\n    };\n  });\n  useEffect(function () {\n    setFocused(function (prev) {\n      return !disabled && prev;\n    });\n  }, [disabled]);\n\n  // =========================== Select Range ===========================\n  var _React$useState5 = React.useState(null),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    selection = _React$useState6[0],\n    setSelection = _React$useState6[1];\n  React.useEffect(function () {\n    if (selection) {\n      var _getTextArea;\n      (_getTextArea = getTextArea()).setSelectionRange.apply(_getTextArea, _toConsumableArray(selection));\n    }\n  }, [selection]);\n\n  // ============================== Count ===============================\n  var countConfig = useCount(count, showCount);\n  var mergedMax = (_countConfig$max = countConfig.max) !== null && _countConfig$max !== void 0 ? _countConfig$max : maxLength;\n\n  // Max length value\n  var hasMaxLength = Number(mergedMax) > 0;\n  var valueLength = countConfig.strategy(formatValue);\n  var isOutOfRange = !!mergedMax && valueLength > mergedMax;\n\n  // ============================== Change ==============================\n  var triggerChange = function triggerChange(e, currentValue) {\n    var cutValue = currentValue;\n    if (!compositionRef.current && countConfig.exceedFormatter && countConfig.max && countConfig.strategy(currentValue) > countConfig.max) {\n      cutValue = countConfig.exceedFormatter(currentValue, {\n        max: countConfig.max\n      });\n      if (currentValue !== cutValue) {\n        setSelection([getTextArea().selectionStart || 0, getTextArea().selectionEnd || 0]);\n      }\n    }\n    setValue(cutValue);\n    resolveOnChange(e.currentTarget, e, onChange, cutValue);\n  };\n\n  // =========================== Value Update ===========================\n  var onInternalCompositionStart = function onInternalCompositionStart(e) {\n    compositionRef.current = true;\n    onCompositionStart === null || onCompositionStart === void 0 || onCompositionStart(e);\n  };\n  var onInternalCompositionEnd = function onInternalCompositionEnd(e) {\n    compositionRef.current = false;\n    triggerChange(e, e.currentTarget.value);\n    onCompositionEnd === null || onCompositionEnd === void 0 || onCompositionEnd(e);\n  };\n  var onInternalChange = function onInternalChange(e) {\n    triggerChange(e, e.target.value);\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    if (e.key === 'Enter' && onPressEnter) {\n      onPressEnter(e);\n    }\n    onKeyDown === null || onKeyDown === void 0 || onKeyDown(e);\n  };\n  var handleFocus = function handleFocus(e) {\n    setFocused(true);\n    onFocus === null || onFocus === void 0 || onFocus(e);\n  };\n  var handleBlur = function handleBlur(e) {\n    setFocused(false);\n    onBlur === null || onBlur === void 0 || onBlur(e);\n  };\n\n  // ============================== Reset ===============================\n  var handleReset = function handleReset(e) {\n    setValue('');\n    focus();\n    resolveOnChange(getTextArea(), e, onChange);\n  };\n  var suffixNode = suffix;\n  var dataCount;\n  if (countConfig.show) {\n    if (countConfig.showFormatter) {\n      dataCount = countConfig.showFormatter({\n        value: formatValue,\n        count: valueLength,\n        maxLength: mergedMax\n      });\n    } else {\n      dataCount = \"\".concat(valueLength).concat(hasMaxLength ? \" / \".concat(mergedMax) : '');\n    }\n    suffixNode = /*#__PURE__*/React.createElement(React.Fragment, null, suffixNode, /*#__PURE__*/React.createElement(\"span\", {\n      className: clsx(\"\".concat(prefixCls, \"-data-count\"), classNames === null || classNames === void 0 ? void 0 : classNames.count),\n      style: styles === null || styles === void 0 ? void 0 : styles.count\n    }, dataCount));\n  }\n  var handleResize = function handleResize(size) {\n    var _getTextArea2;\n    onResize === null || onResize === void 0 || onResize(size);\n    if ((_getTextArea2 = getTextArea()) !== null && _getTextArea2 !== void 0 && _getTextArea2.style.height) {\n      setTextareaResized(true);\n    }\n  };\n  var isPureTextArea = !autoSize && !showCount && !allowClear;\n  return /*#__PURE__*/React.createElement(BaseInput, {\n    ref: holderRef,\n    value: formatValue,\n    allowClear: allowClear,\n    handleReset: handleReset,\n    suffix: suffixNode,\n    prefixCls: prefixCls,\n    classNames: _objectSpread(_objectSpread({}, classNames), {}, {\n      affixWrapper: clsx(classNames === null || classNames === void 0 ? void 0 : classNames.affixWrapper, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-show-count\"), showCount), \"\".concat(prefixCls, \"-textarea-allow-clear\"), allowClear))\n    }),\n    disabled: disabled,\n    focused: focused,\n    className: clsx(className, isOutOfRange && \"\".concat(prefixCls, \"-out-of-range\")),\n    style: _objectSpread(_objectSpread({}, style), textareaResized && !isPureTextArea ? {\n      height: 'auto'\n    } : {}),\n    dataAttrs: {\n      affixWrapper: {\n        'data-count': typeof dataCount === 'string' ? dataCount : undefined\n      }\n    },\n    hidden: hidden,\n    readOnly: readOnly,\n    onClear: onClear\n  }, /*#__PURE__*/React.createElement(ResizableTextArea, _extends({}, rest, {\n    autoSize: autoSize,\n    maxLength: maxLength,\n    onKeyDown: handleKeyDown,\n    onChange: onInternalChange,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    onCompositionStart: onInternalCompositionStart,\n    onCompositionEnd: onInternalCompositionEnd,\n    className: clsx(classNames === null || classNames === void 0 ? void 0 : classNames.textarea),\n    style: _objectSpread(_objectSpread({}, styles === null || styles === void 0 ? void 0 : styles.textarea), {}, {\n      resize: style === null || style === void 0 ? void 0 : style.resize\n    }),\n    disabled: disabled,\n    prefixCls: prefixCls,\n    onResize: handleResize,\n    ref: resizableTextAreaRef,\n    readOnly: readOnly\n  })));\n});\nexport default TextArea;","import TextArea from \"./TextArea\";\nexport { default as ResizableTextArea } from \"./ResizableTextArea\";\nexport default TextArea;","// This icon file is generated automatically.\nvar CloseCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z\" } }] }, \"name\": \"close-circle\", \"theme\": \"filled\" };\nexport default CloseCircleFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CloseCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseCircleFilled = function CloseCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CloseCircleFilledSvg\n  }));\n};\n\n/**![close-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTEyIDY0YzI0Ny40IDAgNDQ4IDIwMC42IDQ0OCA0NDhTNzU5LjQgOTYwIDUxMiA5NjAgNjQgNzU5LjQgNjQgNTEyIDI2NC42IDY0IDUxMiA2NHptMTI3Ljk4IDI3NC44MmgtLjA0bC0uMDguMDZMNTEyIDQ2Ni43NSAzODQuMTQgMzM4Ljg4Yy0uMDQtLjA1LS4wNi0uMDYtLjA4LS4wNmEuMTIuMTIgMCAwMC0uMDcgMGMtLjAzIDAtLjA1LjAxLS4wOS4wNWwtNDUuMDIgNDUuMDJhLjIuMiAwIDAwLS4wNS4wOS4xMi4xMiAwIDAwMCAuMDd2LjAyYS4yNy4yNyAwIDAwLjA2LjA2TDQ2Ni43NSA1MTIgMzM4Ljg4IDYzOS44NmMtLjA1LjA0LS4wNi4wNi0uMDYuMDhhLjEyLjEyIDAgMDAwIC4wN2MwIC4wMy4wMS4wNS4wNS4wOWw0NS4wMiA0NS4wMmEuMi4yIDAgMDAuMDkuMDUuMTIuMTIgMCAwMC4wNyAwYy4wMiAwIC4wNC0uMDEuMDgtLjA1TDUxMiA1NTcuMjVsMTI3Ljg2IDEyNy44N2MuMDQuMDQuMDYuMDUuMDguMDVhLjEyLjEyIDAgMDAuMDcgMGMuMDMgMCAuMDUtLjAxLjA5LS4wNWw0NS4wMi00NS4wMmEuMi4yIDAgMDAuMDUtLjA5LjEyLjEyIDAgMDAwLS4wN3YtLjAyYS4yNy4yNyAwIDAwLS4wNS0uMDZMNTU3LjI1IDUxMmwxMjcuODctMTI3Ljg2Yy4wNC0uMDQuMDUtLjA2LjA1LS4wOGEuMTIuMTIgMCAwMDAtLjA3YzAtLjAzLS4wMS0uMDUtLjA1LS4wOWwtNDUuMDItNDUuMDJhLjIuMiAwIDAwLS4wOS0uMDUuMTIuMTIgMCAwMC0uMDcgMHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CloseCircleFilled);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CloseCircleFilled';\n}\nexport default RefIcon;","\"use client\";\n\nimport React from 'react';\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nconst getAllowClear = allowClear => {\n  let mergedAllowClear;\n  if (typeof allowClear === 'object' && (allowClear === null || allowClear === void 0 ? void 0 : allowClear.clearIcon)) {\n    mergedAllowClear = allowClear;\n  } else if (allowClear) {\n    mergedAllowClear = {\n      clearIcon: /*#__PURE__*/React.createElement(CloseCircleFilled, null)\n    };\n  }\n  return mergedAllowClear;\n};\nexport default getAllowClear;","import classNames from 'classnames';\nconst _InputStatuses = ['warning', 'error', ''];\nexport function getStatusClassNames(prefixCls, status, hasFeedback) {\n  return classNames({\n    [`${prefixCls}-status-success`]: status === 'success',\n    [`${prefixCls}-status-warning`]: status === 'warning',\n    [`${prefixCls}-status-error`]: status === 'error',\n    [`${prefixCls}-status-validating`]: status === 'validating',\n    [`${prefixCls}-has-feedback`]: hasFeedback\n  });\n}\nexport const getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus;","\"use client\";\n\nimport * as React from 'react';\nconst DisabledContext = /*#__PURE__*/React.createContext(false);\nexport const DisabledContextProvider = _ref => {\n  let {\n    children,\n    disabled\n  } = _ref;\n  const originDisabled = React.useContext(DisabledContext);\n  return /*#__PURE__*/React.createElement(DisabledContext.Provider, {\n    value: disabled !== null && disabled !== void 0 ? disabled : originDisabled\n  }, children);\n};\nexport default DisabledContext;","import { useToken } from '../../theme/internal';\n/**\n * This hook is only for cssVar to add root className for components.\n * If root ClassName is needed, this hook could be refactored with `-root`\n * @param prefixCls\n */\nconst useCSSVarCls = prefixCls => {\n  const [,,,, cssVar] = useToken();\n  return cssVar ? `${prefixCls}-css-var` : '';\n};\nexport default useCSSVarCls;","import * as React from 'react';\nimport { VariantContext } from '../context';\nimport { ConfigContext, Variants } from '../../config-provider';\n/**\n * Compatible for legacy `bordered` prop.\n */\nconst useVariant = function (component, variant) {\n  let legacyBordered = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  var _a, _b;\n  const {\n    variant: configVariant,\n    [component]: componentConfig\n  } = React.useContext(ConfigContext);\n  const ctxVariant = React.useContext(VariantContext);\n  const configComponentVariant = componentConfig === null || componentConfig === void 0 ? void 0 : componentConfig.variant;\n  let mergedVariant;\n  if (typeof variant !== 'undefined') {\n    mergedVariant = variant;\n  } else if (legacyBordered === false) {\n    mergedVariant = 'borderless';\n  } else {\n    // form variant > component global variant > global variant\n    mergedVariant = (_b = (_a = ctxVariant !== null && ctxVariant !== void 0 ? ctxVariant : configComponentVariant) !== null && _a !== void 0 ? _a : configVariant) !== null && _b !== void 0 ? _b : 'outlined';\n  }\n  const enableVariantCls = Variants.includes(mergedVariant);\n  return [mergedVariant, enableVariantCls];\n};\nexport default useVariant;","// handle border collapse\nfunction compactItemBorder(token, parentCls, options) {\n  const {\n    focusElCls,\n    focus,\n    borderElCls\n  } = options;\n  const childCombinator = borderElCls ? '> *' : '';\n  const hoverEffects = ['hover', focus ? 'focus' : null, 'active'].filter(Boolean).map(n => `&:${n} ${childCombinator}`).join(',');\n  return {\n    [`&-item:not(${parentCls}-last-item)`]: {\n      marginInlineEnd: token.calc(token.lineWidth).mul(-1).equal()\n    },\n    '&-item': Object.assign(Object.assign({\n      [hoverEffects]: {\n        zIndex: 2\n      }\n    }, focusElCls ? {\n      [`&${focusElCls}`]: {\n        zIndex: 2\n      }\n    } : {}), {\n      [`&[disabled] ${childCombinator}`]: {\n        zIndex: 0\n      }\n    })\n  };\n}\n// handle border-radius\nfunction compactItemBorderRadius(prefixCls, parentCls, options) {\n  const {\n    borderElCls\n  } = options;\n  const childCombinator = borderElCls ? `> ${borderElCls}` : '';\n  return {\n    [`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item) ${childCombinator}`]: {\n      borderRadius: 0\n    },\n    [`&-item:not(${parentCls}-last-item)${parentCls}-first-item`]: {\n      [`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0\n      }\n    },\n    [`&-item:not(${parentCls}-first-item)${parentCls}-last-item`]: {\n      [`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0\n      }\n    }\n  };\n}\nexport function genCompactItemStyle(token) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    focus: true\n  };\n  const {\n    componentCls\n  } = token;\n  const compactCls = `${componentCls}-compact`;\n  return {\n    [compactCls]: Object.assign(Object.assign({}, compactItemBorder(token, compactCls, options)), compactItemBorderRadius(componentCls, compactCls, options))\n  };\n}","import { mergeToken } from '../../theme/internal';\nexport function initInputToken(token) {\n  return mergeToken(token, {\n    inputAffixPadding: token.paddingXXS\n  });\n}\nexport const initComponentToken = token => {\n  const {\n    controlHeight,\n    fontSize,\n    lineHeight,\n    lineWidth,\n    controlHeightSM,\n    controlHeightLG,\n    fontSizeLG,\n    lineHeightLG,\n    paddingSM,\n    controlPaddingHorizontalSM,\n    controlPaddingHorizontal,\n    colorFillAlter,\n    colorPrimaryHover,\n    colorPrimary,\n    controlOutlineWidth,\n    controlOutline,\n    colorErrorOutline,\n    colorWarningOutline,\n    colorBgContainer\n  } = token;\n  return {\n    paddingBlock: Math.max(Math.round((controlHeight - fontSize * lineHeight) / 2 * 10) / 10 - lineWidth, 0),\n    paddingBlockSM: Math.max(Math.round((controlHeightSM - fontSize * lineHeight) / 2 * 10) / 10 - lineWidth, 0),\n    paddingBlockLG: Math.ceil((controlHeightLG - fontSizeLG * lineHeightLG) / 2 * 10) / 10 - lineWidth,\n    paddingInline: paddingSM - lineWidth,\n    paddingInlineSM: controlPaddingHorizontalSM - lineWidth,\n    paddingInlineLG: controlPaddingHorizontal - lineWidth,\n    addonBg: colorFillAlter,\n    activeBorderColor: colorPrimary,\n    hoverBorderColor: colorPrimaryHover,\n    activeShadow: `0 0 0 ${controlOutlineWidth}px ${controlOutline}`,\n    errorActiveShadow: `0 0 0 ${controlOutlineWidth}px ${colorErrorOutline}`,\n    warningActiveShadow: `0 0 0 ${controlOutlineWidth}px ${colorWarningOutline}`,\n    hoverBg: colorBgContainer,\n    activeBg: colorBgContainer,\n    inputFontSize: fontSize,\n    inputFontSizeLG: fontSizeLG,\n    inputFontSizeSM: fontSize\n  };\n};","import { unit } from '@ant-design/cssinjs';\nimport { mergeToken } from '../../theme/internal';\nexport const genHoverStyle = token => ({\n  borderColor: token.hoverBorderColor,\n  backgroundColor: token.hoverBg\n});\nexport const genDisabledStyle = token => ({\n  color: token.colorTextDisabled,\n  backgroundColor: token.colorBgContainerDisabled,\n  borderColor: token.colorBorder,\n  boxShadow: 'none',\n  cursor: 'not-allowed',\n  opacity: 1,\n  'input[disabled], textarea[disabled]': {\n    cursor: 'not-allowed'\n  },\n  '&:hover:not([disabled])': Object.assign({}, genHoverStyle(mergeToken(token, {\n    hoverBorderColor: token.colorBorder,\n    hoverBg: token.colorBgContainerDisabled\n  })))\n});\n/* ============== Outlined ============== */\nexport const genBaseOutlinedStyle = (token, options) => ({\n  background: token.colorBgContainer,\n  borderWidth: token.lineWidth,\n  borderStyle: token.lineType,\n  borderColor: options.borderColor,\n  '&:hover': {\n    borderColor: options.hoverBorderColor,\n    backgroundColor: token.hoverBg\n  },\n  '&:focus, &:focus-within': {\n    borderColor: options.activeBorderColor,\n    boxShadow: options.activeShadow,\n    outline: 0,\n    backgroundColor: token.activeBg\n  }\n});\nconst genOutlinedStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}:not(${token.componentCls}-disabled)`]: Object.assign(Object.assign({}, genBaseOutlinedStyle(token, options)), {\n    [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {\n      color: options.affixColor\n    }\n  }),\n  [`&${token.componentCls}-status-${options.status}${token.componentCls}-disabled`]: {\n    borderColor: options.borderColor\n  }\n});\nexport const genOutlinedStyle = (token, extraStyles) => ({\n  '&-outlined': Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseOutlinedStyle(token, {\n    borderColor: token.colorBorder,\n    hoverBorderColor: token.hoverBorderColor,\n    activeBorderColor: token.activeBorderColor,\n    activeShadow: token.activeShadow\n  })), {\n    [`&${token.componentCls}-disabled, &[disabled]`]: Object.assign({}, genDisabledStyle(token))\n  }), genOutlinedStatusStyle(token, {\n    status: 'error',\n    borderColor: token.colorError,\n    hoverBorderColor: token.colorErrorBorderHover,\n    activeBorderColor: token.colorError,\n    activeShadow: token.errorActiveShadow,\n    affixColor: token.colorError\n  })), genOutlinedStatusStyle(token, {\n    status: 'warning',\n    borderColor: token.colorWarning,\n    hoverBorderColor: token.colorWarningBorderHover,\n    activeBorderColor: token.colorWarning,\n    activeShadow: token.warningActiveShadow,\n    affixColor: token.colorWarning\n  })), extraStyles)\n});\nconst genOutlinedGroupStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-group-wrapper-status-${options.status}`]: {\n    [`${token.componentCls}-group-addon`]: {\n      borderColor: options.addonBorderColor,\n      color: options.addonColor\n    }\n  }\n});\nexport const genOutlinedGroupStyle = token => ({\n  '&-outlined': Object.assign(Object.assign(Object.assign({\n    [`${token.componentCls}-group`]: {\n      '&-addon': {\n        background: token.addonBg,\n        border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n      },\n      '&-addon:first-child': {\n        borderInlineEnd: 0\n      },\n      '&-addon:last-child': {\n        borderInlineStart: 0\n      }\n    }\n  }, genOutlinedGroupStatusStyle(token, {\n    status: 'error',\n    addonBorderColor: token.colorError,\n    addonColor: token.colorErrorText\n  })), genOutlinedGroupStatusStyle(token, {\n    status: 'warning',\n    addonBorderColor: token.colorWarning,\n    addonColor: token.colorWarningText\n  })), {\n    [`&${token.componentCls}-group-wrapper-disabled`]: {\n      [`${token.componentCls}-group-addon`]: Object.assign({}, genDisabledStyle(token))\n    }\n  })\n});\n/* ============ Borderless ============ */\nexport const genBorderlessStyle = (token, extraStyles) => {\n  const {\n    componentCls\n  } = token;\n  return {\n    '&-borderless': Object.assign({\n      background: 'transparent',\n      border: 'none',\n      '&:focus, &:focus-within': {\n        outline: 'none'\n      },\n      // >>>>> Disabled\n      [`&${componentCls}-disabled, &[disabled]`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed'\n      },\n      // >>>>> Status\n      [`&${componentCls}-status-error`]: {\n        '&, & input, & textarea': {\n          color: token.colorError\n        }\n      },\n      [`&${componentCls}-status-warning`]: {\n        '&, & input, & textarea': {\n          color: token.colorWarning\n        }\n      }\n    }, extraStyles)\n  };\n};\n/* ============== Filled ============== */\nconst genBaseFilledStyle = (token, options) => ({\n  background: options.bg,\n  borderWidth: token.lineWidth,\n  borderStyle: token.lineType,\n  borderColor: 'transparent',\n  'input&, & input, textarea&, & textarea': {\n    color: options === null || options === void 0 ? void 0 : options.inputColor\n  },\n  '&:hover': {\n    background: options.hoverBg\n  },\n  '&:focus, &:focus-within': {\n    outline: 0,\n    borderColor: options.activeBorderColor,\n    backgroundColor: token.activeBg\n  }\n});\nconst genFilledStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}:not(${token.componentCls}-disabled)`]: Object.assign(Object.assign({}, genBaseFilledStyle(token, options)), {\n    [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {\n      color: options.affixColor\n    }\n  })\n});\nexport const genFilledStyle = (token, extraStyles) => ({\n  '&-filled': Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseFilledStyle(token, {\n    bg: token.colorFillTertiary,\n    hoverBg: token.colorFillSecondary,\n    activeBorderColor: token.activeBorderColor\n  })), {\n    [`&${token.componentCls}-disabled, &[disabled]`]: Object.assign({}, genDisabledStyle(token))\n  }), genFilledStatusStyle(token, {\n    status: 'error',\n    bg: token.colorErrorBg,\n    hoverBg: token.colorErrorBgHover,\n    activeBorderColor: token.colorError,\n    inputColor: token.colorErrorText,\n    affixColor: token.colorError\n  })), genFilledStatusStyle(token, {\n    status: 'warning',\n    bg: token.colorWarningBg,\n    hoverBg: token.colorWarningBgHover,\n    activeBorderColor: token.colorWarning,\n    inputColor: token.colorWarningText,\n    affixColor: token.colorWarning\n  })), extraStyles)\n});\nconst genFilledGroupStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-group-wrapper-status-${options.status}`]: {\n    [`${token.componentCls}-group-addon`]: {\n      background: options.addonBg,\n      color: options.addonColor\n    }\n  }\n});\nexport const genFilledGroupStyle = token => ({\n  '&-filled': Object.assign(Object.assign(Object.assign({\n    [`${token.componentCls}-group`]: {\n      '&-addon': {\n        background: token.colorFillTertiary\n      },\n      [`${token.componentCls}-filled:not(:focus):not(:focus-within)`]: {\n        '&:not(:first-child)': {\n          borderInlineStart: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n        },\n        '&:not(:last-child)': {\n          borderInlineEnd: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n        }\n      }\n    }\n  }, genFilledGroupStatusStyle(token, {\n    status: 'error',\n    addonBg: token.colorErrorBg,\n    addonColor: token.colorErrorText\n  })), genFilledGroupStatusStyle(token, {\n    status: 'warning',\n    addonBg: token.colorWarningBg,\n    addonColor: token.colorWarningText\n  })), {\n    [`&${token.componentCls}-group-wrapper-disabled`]: {\n      [`${token.componentCls}-group`]: {\n        '&-addon': {\n          background: token.colorFillTertiary,\n          color: token.colorTextDisabled\n        },\n        '&-addon:first-child': {\n          borderInlineStart: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n          borderTop: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n          borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n        },\n        '&-addon:last-child': {\n          borderInlineEnd: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n          borderTop: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n          borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`\n        }\n      }\n    }\n  })\n});\n/* ============== Underlined ============== */\n// https://github.com/ant-design/ant-design/issues/51379\nexport const genBaseUnderlinedStyle = (token, options) => ({\n  background: token.colorBgContainer,\n  borderWidth: `0 0 ${unit(token.lineWidth)} 0`,\n  borderStyle: `none none ${token.lineType} none`,\n  borderColor: options.borderColor,\n  borderRadius: 0,\n  '&:hover': {\n    borderColor: options.hoverBorderColor,\n    backgroundColor: token.hoverBg\n  },\n  '&:focus, &:focus-within': {\n    borderColor: options.activeBorderColor,\n    outline: 0,\n    backgroundColor: token.activeBg\n  }\n});\nconst genUnderlinedStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}:not(${token.componentCls}-disabled)`]: Object.assign(Object.assign({}, genBaseUnderlinedStyle(token, options)), {\n    [`${token.componentCls}-prefix, ${token.componentCls}-suffix`]: {\n      color: options.affixColor\n    }\n  }),\n  [`&${token.componentCls}-status-${options.status}${token.componentCls}-disabled`]: {\n    borderColor: options.borderColor\n  }\n});\nexport const genUnderlinedStyle = (token, extraStyles) => ({\n  '&-underlined': Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseUnderlinedStyle(token, {\n    borderColor: token.colorBorder,\n    hoverBorderColor: token.hoverBorderColor,\n    activeBorderColor: token.activeBorderColor,\n    activeShadow: token.activeShadow\n  })), {\n    // >>>>> Disabled\n    [`&${token.componentCls}-disabled, &[disabled]`]: {\n      color: token.colorTextDisabled,\n      boxShadow: 'none',\n      cursor: 'not-allowed',\n      '&:hover': {\n        borderColor: token.colorBorder\n      }\n    },\n    'input[disabled], textarea[disabled]': {\n      cursor: 'not-allowed'\n    }\n  }), genUnderlinedStatusStyle(token, {\n    status: 'error',\n    borderColor: token.colorError,\n    hoverBorderColor: token.colorErrorBorderHover,\n    activeBorderColor: token.colorError,\n    activeShadow: token.errorActiveShadow,\n    affixColor: token.colorError\n  })), genUnderlinedStatusStyle(token, {\n    status: 'warning',\n    borderColor: token.colorWarning,\n    hoverBorderColor: token.colorWarningBorderHover,\n    activeBorderColor: token.colorWarning,\n    activeShadow: token.warningActiveShadow,\n    affixColor: token.colorWarning\n  })), extraStyles)\n});","import { unit } from '@ant-design/cssinjs';\nimport { clearFix, resetComponent } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport { initComponentToken, initInputToken } from './token';\nimport { genBorderlessStyle, genFilledGroupStyle, genFilledStyle, genOutlinedGroupStyle, genOutlinedStyle, genUnderlinedStyle } from './variants';\nexport { initComponentToken, initInputToken };\nexport const genPlaceholderStyle = color => ({\n  // Firefox\n  '&::-moz-placeholder': {\n    opacity: 1\n  },\n  '&::placeholder': {\n    color,\n    userSelect: 'none' // https://github.com/ant-design/ant-design/pull/32639\n  },\n  '&:placeholder-shown': {\n    textOverflow: 'ellipsis'\n  }\n});\nexport const genActiveStyle = token => ({\n  borderColor: token.activeBorderColor,\n  boxShadow: token.activeShadow,\n  outline: 0,\n  backgroundColor: token.activeBg\n});\nconst genInputLargeStyle = token => {\n  const {\n    paddingBlockLG,\n    lineHeightLG,\n    borderRadiusLG,\n    paddingInlineLG\n  } = token;\n  return {\n    padding: `${unit(paddingBlockLG)} ${unit(paddingInlineLG)}`,\n    fontSize: token.inputFontSizeLG,\n    lineHeight: lineHeightLG,\n    borderRadius: borderRadiusLG\n  };\n};\nexport const genInputSmallStyle = token => ({\n  padding: `${unit(token.paddingBlockSM)} ${unit(token.paddingInlineSM)}`,\n  fontSize: token.inputFontSizeSM,\n  borderRadius: token.borderRadiusSM\n});\nexport const genBasicInputStyle = token => Object.assign(Object.assign({\n  position: 'relative',\n  display: 'inline-block',\n  width: '100%',\n  minWidth: 0,\n  padding: `${unit(token.paddingBlock)} ${unit(token.paddingInline)}`,\n  color: token.colorText,\n  fontSize: token.inputFontSize,\n  lineHeight: token.lineHeight,\n  borderRadius: token.borderRadius,\n  transition: `all ${token.motionDurationMid}`\n}, genPlaceholderStyle(token.colorTextPlaceholder)), {\n  // Reset height for `textarea`s\n  'textarea&': {\n    maxWidth: '100%',\n    // prevent textarea resize from coming out of its container\n    height: 'auto',\n    minHeight: token.controlHeight,\n    lineHeight: token.lineHeight,\n    verticalAlign: 'bottom',\n    transition: `all ${token.motionDurationSlow}, height 0s`,\n    resize: 'vertical'\n  },\n  // Size\n  '&-lg': Object.assign({}, genInputLargeStyle(token)),\n  '&-sm': Object.assign({}, genInputSmallStyle(token)),\n  // RTL\n  '&-rtl, &-textarea-rtl': {\n    direction: 'rtl'\n  }\n});\nexport const genInputGroupStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return {\n    position: 'relative',\n    display: 'table',\n    width: '100%',\n    borderCollapse: 'separate',\n    borderSpacing: 0,\n    // Undo padding and float of grid classes\n    \"&[class*='col-']\": {\n      paddingInlineEnd: token.paddingXS,\n      '&:last-child': {\n        paddingInlineEnd: 0\n      }\n    },\n    // Sizing options\n    [`&-lg ${componentCls}, &-lg > ${componentCls}-group-addon`]: Object.assign({}, genInputLargeStyle(token)),\n    [`&-sm ${componentCls}, &-sm > ${componentCls}-group-addon`]: Object.assign({}, genInputSmallStyle(token)),\n    // Fix https://github.com/ant-design/ant-design/issues/5754\n    [`&-lg ${antCls}-select-single ${antCls}-select-selector`]: {\n      height: token.controlHeightLG\n    },\n    [`&-sm ${antCls}-select-single ${antCls}-select-selector`]: {\n      height: token.controlHeightSM\n    },\n    [`> ${componentCls}`]: {\n      display: 'table-cell',\n      '&:not(:first-child):not(:last-child)': {\n        borderRadius: 0\n      }\n    },\n    [`${componentCls}-group`]: {\n      '&-addon, &-wrap': {\n        display: 'table-cell',\n        width: 1,\n        whiteSpace: 'nowrap',\n        verticalAlign: 'middle',\n        '&:not(:first-child):not(:last-child)': {\n          borderRadius: 0\n        }\n      },\n      '&-wrap > *': {\n        display: 'block !important'\n      },\n      '&-addon': {\n        position: 'relative',\n        padding: `0 ${unit(token.paddingInline)}`,\n        color: token.colorText,\n        fontWeight: 'normal',\n        fontSize: token.inputFontSize,\n        textAlign: 'center',\n        borderRadius: token.borderRadius,\n        transition: `all ${token.motionDurationSlow}`,\n        lineHeight: 1,\n        // Reset Select's style in addon\n        [`${antCls}-select`]: {\n          margin: `${unit(token.calc(token.paddingBlock).add(1).mul(-1).equal())} ${unit(token.calc(token.paddingInline).mul(-1).equal())}`,\n          [`&${antCls}-select-single:not(${antCls}-select-customize-input):not(${antCls}-pagination-size-changer)`]: {\n            [`${antCls}-select-selector`]: {\n              backgroundColor: 'inherit',\n              border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n              boxShadow: 'none'\n            }\n          }\n        },\n        // https://github.com/ant-design/ant-design/issues/31333\n        [`${antCls}-cascader-picker`]: {\n          margin: `-9px ${unit(token.calc(token.paddingInline).mul(-1).equal())}`,\n          backgroundColor: 'transparent',\n          [`${antCls}-cascader-input`]: {\n            textAlign: 'start',\n            border: 0,\n            boxShadow: 'none'\n          }\n        }\n      }\n    },\n    [componentCls]: {\n      width: '100%',\n      marginBottom: 0,\n      textAlign: 'inherit',\n      '&:focus': {\n        zIndex: 1,\n        // Fix https://gw.alipayobjects.com/zos/rmsportal/DHNpoqfMXSfrSnlZvhsJ.png\n        borderInlineEndWidth: 1\n      },\n      '&:hover': {\n        zIndex: 1,\n        borderInlineEndWidth: 1,\n        [`${componentCls}-search-with-button &`]: {\n          zIndex: 0\n        }\n      }\n    },\n    // Reset rounded corners\n    [`> ${componentCls}:first-child, ${componentCls}-group-addon:first-child`]: {\n      borderStartEndRadius: 0,\n      borderEndEndRadius: 0,\n      // Reset Select's style in addon\n      [`${antCls}-select ${antCls}-select-selector`]: {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0\n      }\n    },\n    [`> ${componentCls}-affix-wrapper`]: {\n      [`&:not(:first-child) ${componentCls}`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0\n      },\n      [`&:not(:last-child) ${componentCls}`]: {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0\n      }\n    },\n    [`> ${componentCls}:last-child, ${componentCls}-group-addon:last-child`]: {\n      borderStartStartRadius: 0,\n      borderEndStartRadius: 0,\n      // Reset Select's style in addon\n      [`${antCls}-select ${antCls}-select-selector`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0\n      }\n    },\n    [`${componentCls}-affix-wrapper`]: {\n      '&:not(:last-child)': {\n        borderStartEndRadius: 0,\n        borderEndEndRadius: 0,\n        [`${componentCls}-search &`]: {\n          borderStartStartRadius: token.borderRadius,\n          borderEndStartRadius: token.borderRadius\n        }\n      },\n      [`&:not(:first-child), ${componentCls}-search &:not(:first-child)`]: {\n        borderStartStartRadius: 0,\n        borderEndStartRadius: 0\n      }\n    },\n    [`&${componentCls}-group-compact`]: Object.assign(Object.assign({\n      display: 'block'\n    }, clearFix()), {\n      [`${componentCls}-group-addon, ${componentCls}-group-wrap, > ${componentCls}`]: {\n        '&:not(:first-child):not(:last-child)': {\n          borderInlineEndWidth: token.lineWidth,\n          '&:hover, &:focus': {\n            zIndex: 1\n          }\n        }\n      },\n      '& > *': {\n        display: 'inline-flex',\n        float: 'none',\n        verticalAlign: 'top',\n        // https://github.com/ant-design/ant-design-pro/issues/139\n        borderRadius: 0\n      },\n      [`\n        & > ${componentCls}-affix-wrapper,\n        & > ${componentCls}-number-affix-wrapper,\n        & > ${antCls}-picker-range\n      `]: {\n        display: 'inline-flex'\n      },\n      '& > *:not(:last-child)': {\n        marginInlineEnd: token.calc(token.lineWidth).mul(-1).equal(),\n        borderInlineEndWidth: token.lineWidth\n      },\n      // Undo float for .ant-input-group .ant-input\n      [componentCls]: {\n        float: 'none'\n      },\n      // reset border for Select, DatePicker, AutoComplete, Cascader, Mention, TimePicker, Input\n      [`& > ${antCls}-select > ${antCls}-select-selector,\n      & > ${antCls}-select-auto-complete ${componentCls},\n      & > ${antCls}-cascader-picker ${componentCls},\n      & > ${componentCls}-group-wrapper ${componentCls}`]: {\n        borderInlineEndWidth: token.lineWidth,\n        borderRadius: 0,\n        '&:hover, &:focus': {\n          zIndex: 1\n        }\n      },\n      [`& > ${antCls}-select-focused`]: {\n        zIndex: 1\n      },\n      // update z-index for arrow icon\n      [`& > ${antCls}-select > ${antCls}-select-arrow`]: {\n        zIndex: 1 // https://github.com/ant-design/ant-design/issues/20371\n      },\n      [`& > *:first-child,\n      & > ${antCls}-select:first-child > ${antCls}-select-selector,\n      & > ${antCls}-select-auto-complete:first-child ${componentCls},\n      & > ${antCls}-cascader-picker:first-child ${componentCls}`]: {\n        borderStartStartRadius: token.borderRadius,\n        borderEndStartRadius: token.borderRadius\n      },\n      [`& > *:last-child,\n      & > ${antCls}-select:last-child > ${antCls}-select-selector,\n      & > ${antCls}-cascader-picker:last-child ${componentCls},\n      & > ${antCls}-cascader-picker-focused:last-child ${componentCls}`]: {\n        borderInlineEndWidth: token.lineWidth,\n        borderStartEndRadius: token.borderRadius,\n        borderEndEndRadius: token.borderRadius\n      },\n      // https://github.com/ant-design/ant-design/issues/12493\n      [`& > ${antCls}-select-auto-complete ${componentCls}`]: {\n        verticalAlign: 'top'\n      },\n      [`${componentCls}-group-wrapper + ${componentCls}-group-wrapper`]: {\n        marginInlineStart: token.calc(token.lineWidth).mul(-1).equal(),\n        [`${componentCls}-affix-wrapper`]: {\n          borderRadius: 0\n        }\n      },\n      [`${componentCls}-group-wrapper:not(:last-child)`]: {\n        [`&${componentCls}-search > ${componentCls}-group`]: {\n          [`& > ${componentCls}-group-addon > ${componentCls}-search-button`]: {\n            borderRadius: 0\n          },\n          [`& > ${componentCls}`]: {\n            borderStartStartRadius: token.borderRadius,\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0,\n            borderEndStartRadius: token.borderRadius\n          }\n        }\n      }\n    })\n  };\n};\nexport const genInputStyle = token => {\n  const {\n    componentCls,\n    controlHeightSM,\n    lineWidth,\n    calc\n  } = token;\n  const FIXED_CHROME_COLOR_HEIGHT = 16;\n  const colorSmallPadding = calc(controlHeightSM).sub(calc(lineWidth).mul(2)).sub(FIXED_CHROME_COLOR_HEIGHT).div(2).equal();\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), genBasicInputStyle(token)), genOutlinedStyle(token)), genFilledStyle(token)), genBorderlessStyle(token)), genUnderlinedStyle(token)), {\n      '&[type=\"color\"]': {\n        height: token.controlHeight,\n        [`&${componentCls}-lg`]: {\n          height: token.controlHeightLG\n        },\n        [`&${componentCls}-sm`]: {\n          height: controlHeightSM,\n          paddingTop: colorSmallPadding,\n          paddingBottom: colorSmallPadding\n        }\n      },\n      '&[type=\"search\"]::-webkit-search-cancel-button, &[type=\"search\"]::-webkit-search-decoration': {\n        '-webkit-appearance': 'none'\n      }\n    })\n  };\n};\nconst genAllowClearStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    // ========================= Input =========================\n    [`${componentCls}-clear-icon`]: {\n      margin: 0,\n      padding: 0,\n      lineHeight: 0,\n      color: token.colorTextQuaternary,\n      fontSize: token.fontSizeIcon,\n      verticalAlign: -1,\n      // https://github.com/ant-design/ant-design/pull/18151\n      // https://codesandbox.io/s/wizardly-sun-u10br\n      cursor: 'pointer',\n      transition: `color ${token.motionDurationSlow}`,\n      border: 'none',\n      outline: 'none',\n      backgroundColor: 'transparent',\n      '&:hover': {\n        color: token.colorTextTertiary\n      },\n      '&:active': {\n        color: token.colorText\n      },\n      '&-hidden': {\n        visibility: 'hidden'\n      },\n      '&-has-suffix': {\n        margin: `0 ${unit(token.inputAffixPadding)}`\n      }\n    }\n  };\n};\nexport const genAffixStyle = token => {\n  const {\n    componentCls,\n    inputAffixPadding,\n    colorTextDescription,\n    motionDurationSlow,\n    colorIcon,\n    colorIconHover,\n    iconCls\n  } = token;\n  const affixCls = `${componentCls}-affix-wrapper`;\n  const affixClsDisabled = `${componentCls}-affix-wrapper-disabled`;\n  return {\n    [affixCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token)), {\n      display: 'inline-flex',\n      [`&:not(${componentCls}-disabled):hover`]: {\n        zIndex: 1,\n        [`${componentCls}-search-with-button &`]: {\n          zIndex: 0\n        }\n      },\n      '&-focused, &:focus': {\n        zIndex: 1\n      },\n      [`> input${componentCls}`]: {\n        padding: 0\n      },\n      [`> input${componentCls}, > textarea${componentCls}`]: {\n        fontSize: 'inherit',\n        border: 'none',\n        borderRadius: 0,\n        outline: 'none',\n        background: 'transparent',\n        color: 'inherit',\n        '&::-ms-reveal': {\n          display: 'none'\n        },\n        '&:focus': {\n          boxShadow: 'none !important'\n        }\n      },\n      '&::before': {\n        display: 'inline-block',\n        width: 0,\n        visibility: 'hidden',\n        content: '\"\\\\a0\"'\n      },\n      [componentCls]: {\n        '&-prefix, &-suffix': {\n          display: 'flex',\n          flex: 'none',\n          alignItems: 'center',\n          '> *:not(:last-child)': {\n            marginInlineEnd: token.paddingXS\n          }\n        },\n        '&-show-count-suffix': {\n          color: colorTextDescription\n        },\n        '&-show-count-has-suffix': {\n          marginInlineEnd: token.paddingXXS\n        },\n        '&-prefix': {\n          marginInlineEnd: inputAffixPadding\n        },\n        '&-suffix': {\n          marginInlineStart: inputAffixPadding\n        }\n      }\n    }), genAllowClearStyle(token)), {\n      // password\n      [`${iconCls}${componentCls}-password-icon`]: {\n        color: colorIcon,\n        cursor: 'pointer',\n        transition: `all ${motionDurationSlow}`,\n        '&:hover': {\n          color: colorIconHover\n        }\n      }\n    }),\n    // 覆盖 affix-wrapper borderRadius!\n    [`${componentCls}-underlined`]: {\n      borderRadius: 0\n    },\n    [affixClsDisabled]: {\n      // password disabled\n      [`${iconCls}${componentCls}-password-icon`]: {\n        color: colorIcon,\n        cursor: 'not-allowed',\n        '&:hover': {\n          color: colorIcon\n        }\n      }\n    }\n  };\n};\nconst genGroupStyle = token => {\n  const {\n    componentCls,\n    borderRadiusLG,\n    borderRadiusSM\n  } = token;\n  return {\n    [`${componentCls}-group`]: Object.assign(Object.assign(Object.assign({}, resetComponent(token)), genInputGroupStyle(token)), {\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      '&-wrapper': Object.assign(Object.assign(Object.assign({\n        display: 'inline-block',\n        width: '100%',\n        textAlign: 'start',\n        verticalAlign: 'top',\n        '&-rtl': {\n          direction: 'rtl'\n        },\n        // Size\n        '&-lg': {\n          [`${componentCls}-group-addon`]: {\n            borderRadius: borderRadiusLG,\n            fontSize: token.inputFontSizeLG\n          }\n        },\n        '&-sm': {\n          [`${componentCls}-group-addon`]: {\n            borderRadius: borderRadiusSM\n          }\n        }\n      }, genOutlinedGroupStyle(token)), genFilledGroupStyle(token)), {\n        // '&-disabled': {\n        //   [`${componentCls}-group-addon`]: {\n        //     ...genDisabledStyle(token),\n        //   },\n        // },\n        // Fix the issue of using icons in Space Compact mode\n        // https://github.com/ant-design/ant-design/issues/42122\n        [`&:not(${componentCls}-compact-first-item):not(${componentCls}-compact-last-item)${componentCls}-compact-item`]: {\n          [`${componentCls}, ${componentCls}-group-addon`]: {\n            borderRadius: 0\n          }\n        },\n        [`&:not(${componentCls}-compact-last-item)${componentCls}-compact-first-item`]: {\n          [`${componentCls}, ${componentCls}-group-addon`]: {\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0\n          }\n        },\n        [`&:not(${componentCls}-compact-first-item)${componentCls}-compact-last-item`]: {\n          [`${componentCls}, ${componentCls}-group-addon`]: {\n            borderStartStartRadius: 0,\n            borderEndStartRadius: 0\n          }\n        },\n        // Fix the issue of input use show-count param in space compact mode\n        // https://github.com/ant-design/ant-design/issues/46872\n        [`&:not(${componentCls}-compact-last-item)${componentCls}-compact-item`]: {\n          [`${componentCls}-affix-wrapper`]: {\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0\n          }\n        },\n        // Fix the issue of input use `addonAfter` param in space compact mode\n        // https://github.com/ant-design/ant-design/issues/52483\n        [`&:not(${componentCls}-compact-first-item)${componentCls}-compact-item`]: {\n          [`${componentCls}-affix-wrapper`]: {\n            borderStartStartRadius: 0,\n            borderEndStartRadius: 0\n          }\n        }\n      })\n    })\n  };\n};\nconst genSearchInputStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  const searchPrefixCls = `${componentCls}-search`;\n  return {\n    [searchPrefixCls]: {\n      [componentCls]: {\n        '&:hover, &:focus': {\n          [`+ ${componentCls}-group-addon ${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {\n            borderInlineStartColor: token.colorPrimaryHover\n          }\n        }\n      },\n      [`${componentCls}-affix-wrapper`]: {\n        height: token.controlHeight,\n        borderRadius: 0\n      },\n      // fix slight height diff in Firefox:\n      // https://ant.design/components/auto-complete-cn/#auto-complete-demo-certain-category\n      [`${componentCls}-lg`]: {\n        lineHeight: token.calc(token.lineHeightLG).sub(0.0002).equal()\n      },\n      [`> ${componentCls}-group`]: {\n        [`> ${componentCls}-group-addon:last-child`]: {\n          insetInlineStart: -1,\n          padding: 0,\n          border: 0,\n          [`${searchPrefixCls}-button`]: {\n            // Fix https://github.com/ant-design/ant-design/issues/47150\n            marginInlineEnd: -1,\n            borderStartStartRadius: 0,\n            borderEndStartRadius: 0,\n            boxShadow: 'none'\n          },\n          [`${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {\n            color: token.colorTextDescription,\n            '&:hover': {\n              color: token.colorPrimaryHover\n            },\n            '&:active': {\n              color: token.colorPrimaryActive\n            },\n            [`&${antCls}-btn-loading::before`]: {\n              insetInlineStart: 0,\n              insetInlineEnd: 0,\n              insetBlockStart: 0,\n              insetBlockEnd: 0\n            }\n          }\n        }\n      },\n      [`${searchPrefixCls}-button`]: {\n        height: token.controlHeight,\n        '&:hover, &:focus': {\n          zIndex: 1\n        }\n      },\n      '&-large': {\n        [`${componentCls}-affix-wrapper, ${searchPrefixCls}-button`]: {\n          height: token.controlHeightLG\n        }\n      },\n      '&-small': {\n        [`${componentCls}-affix-wrapper, ${searchPrefixCls}-button`]: {\n          height: token.controlHeightSM\n        }\n      },\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      // ===================== Compact Item Customized Styles =====================\n      [`&${componentCls}-compact-item`]: {\n        [`&:not(${componentCls}-compact-last-item)`]: {\n          [`${componentCls}-group-addon`]: {\n            [`${componentCls}-search-button`]: {\n              marginInlineEnd: token.calc(token.lineWidth).mul(-1).equal(),\n              borderRadius: 0\n            }\n          }\n        },\n        [`&:not(${componentCls}-compact-first-item)`]: {\n          [`${componentCls},${componentCls}-affix-wrapper`]: {\n            borderRadius: 0\n          }\n        },\n        [`> ${componentCls}-group-addon ${componentCls}-search-button,\n        > ${componentCls},\n        ${componentCls}-affix-wrapper`]: {\n          '&:hover, &:focus, &:active': {\n            zIndex: 2\n          }\n        },\n        [`> ${componentCls}-affix-wrapper-focused`]: {\n          zIndex: 2\n        }\n      }\n    }\n  };\n};\n// ============================== Range ===============================\nconst genRangeStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-out-of-range`]: {\n      [`&, & input, & textarea, ${componentCls}-show-count-suffix, ${componentCls}-data-count`]: {\n        color: token.colorError\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport const useSharedStyle = genStyleHooks(['Input', 'Shared'], token => {\n  const inputToken = mergeToken(token, initInputToken(token));\n  return [genInputStyle(inputToken), genAffixStyle(inputToken)];\n}, initComponentToken, {\n  resetFont: false\n});\nexport default genStyleHooks(['Input', 'Component'], token => {\n  const inputToken = mergeToken(token, initInputToken(token));\n  return [genGroupStyle(inputToken), genSearchInputStyle(inputToken), genRangeStyle(inputToken),\n  // =====================================================\n  // ==             Space Compact                       ==\n  // =====================================================\n  genCompactItemStyle(inputToken)];\n}, initComponentToken, {\n  resetFont: false\n});","import { genStyleHooks, mergeToken } from '../../theme/internal';\nimport { initComponentToken, initInputToken } from './token';\nexport { initComponentToken, initInputToken };\nconst genTextAreaStyle = token => {\n  const {\n    componentCls,\n    paddingLG\n  } = token;\n  const textareaPrefixCls = `${componentCls}-textarea`;\n  return {\n    [textareaPrefixCls]: {\n      position: 'relative',\n      '&-show-count': {\n        // https://github.com/ant-design/ant-design/issues/33049\n        [`> ${componentCls}`]: {\n          height: '100%'\n        },\n        [`${componentCls}-data-count`]: {\n          position: 'absolute',\n          bottom: token.calc(token.fontSize).mul(token.lineHeight).mul(-1).equal(),\n          insetInlineEnd: 0,\n          color: token.colorTextDescription,\n          whiteSpace: 'nowrap',\n          pointerEvents: 'none'\n        }\n      },\n      [`\n        &-allow-clear > ${componentCls},\n        &-affix-wrapper${textareaPrefixCls}-has-feedback ${componentCls}\n      `]: {\n        paddingInlineEnd: paddingLG\n      },\n      [`&-affix-wrapper${componentCls}-affix-wrapper`]: {\n        padding: 0,\n        [`> textarea${componentCls}`]: {\n          fontSize: 'inherit',\n          border: 'none',\n          outline: 'none',\n          background: 'transparent',\n          minHeight: token.calc(token.controlHeight).sub(token.calc(token.lineWidth).mul(2)).equal(),\n          '&:focus': {\n            boxShadow: 'none !important'\n          }\n        },\n        [`${componentCls}-suffix`]: {\n          margin: 0,\n          '> *:not(:last-child)': {\n            marginInline: 0\n          },\n          // Clear Icon\n          [`${componentCls}-clear-icon`]: {\n            position: 'absolute',\n            insetInlineEnd: token.paddingInline,\n            insetBlockStart: token.paddingXS\n          },\n          // Feedback Icon\n          [`${textareaPrefixCls}-suffix`]: {\n            position: 'absolute',\n            top: 0,\n            insetInlineEnd: token.paddingInline,\n            bottom: 0,\n            zIndex: 1,\n            display: 'inline-flex',\n            alignItems: 'center',\n            margin: 'auto',\n            pointerEvents: 'none'\n          }\n        }\n      },\n      [`&-affix-wrapper${componentCls}-affix-wrapper-sm`]: {\n        [`${componentCls}-suffix`]: {\n          [`${componentCls}-clear-icon`]: {\n            insetInlineEnd: token.paddingInlineSM\n          }\n        }\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks(['Input', 'TextArea'], token => {\n  const inputToken = mergeToken(token, initInputToken(token));\n  return [genTextAreaStyle(inputToken)];\n}, initComponentToken, {\n  resetFont: false\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport classNames from 'classnames';\nimport RcTextArea from 'rc-textarea';\nimport getAllowClear from '../_util/getAllowClear';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport useVariant from '../form/hooks/useVariants';\nimport { useCompactItemContext } from '../space/Compact';\nimport { triggerFocus } from './Input';\nimport { useSharedStyle } from './style';\nimport useStyle from './style/textarea';\nconst TextArea = /*#__PURE__*/forwardRef((props, ref) => {\n  var _a;\n  const {\n      prefixCls: customizePrefixCls,\n      bordered = true,\n      size: customizeSize,\n      disabled: customDisabled,\n      status: customStatus,\n      allowClear,\n      classNames: classes,\n      rootClassName,\n      className,\n      style,\n      styles,\n      variant: customVariant\n    } = props,\n    rest = __rest(props, [\"prefixCls\", \"bordered\", \"size\", \"disabled\", \"status\", \"allowClear\", \"classNames\", \"rootClassName\", \"className\", \"style\", \"styles\", \"variant\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const {\n      deprecated\n    } = devUseWarning('TextArea');\n    deprecated(!('bordered' in props), 'bordered', 'variant');\n  }\n  const {\n    getPrefixCls,\n    direction,\n    allowClear: contextAllowClear,\n    autoComplete: contextAutoComplete,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('textArea');\n  // ===================== Disabled =====================\n  const disabled = React.useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  // ===================== Status =====================\n  const {\n    status: contextStatus,\n    hasFeedback,\n    feedbackIcon\n  } = React.useContext(FormItemInputContext);\n  const mergedStatus = getMergedStatus(contextStatus, customStatus);\n  // ===================== Ref =====================\n  const innerRef = React.useRef(null);\n  React.useImperativeHandle(ref, () => {\n    var _a;\n    return {\n      resizableTextArea: (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.resizableTextArea,\n      focus: option => {\n        var _a, _b;\n        triggerFocus((_b = (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.resizableTextArea) === null || _b === void 0 ? void 0 : _b.textArea, option);\n      },\n      blur: () => {\n        var _a;\n        return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.blur();\n      }\n    };\n  });\n  const prefixCls = getPrefixCls('input', customizePrefixCls);\n  // ===================== Style =====================\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapSharedCSSVar, hashId, cssVarCls] = useSharedStyle(prefixCls, rootClassName);\n  const [wrapCSSVar] = useStyle(prefixCls, rootCls);\n  // ===================== Compact Item =====================\n  const {\n    compactSize,\n    compactItemClassnames\n  } = useCompactItemContext(prefixCls, direction);\n  // ===================== Size =====================\n  const mergedSize = useSize(ctx => {\n    var _a;\n    return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n  });\n  const [variant, enableVariantCls] = useVariant('textArea', customVariant, bordered);\n  const mergedAllowClear = getAllowClear(allowClear !== null && allowClear !== void 0 ? allowClear : contextAllowClear);\n  return wrapSharedCSSVar(wrapCSSVar(/*#__PURE__*/React.createElement(RcTextArea, Object.assign({\n    autoComplete: contextAutoComplete\n  }, rest, {\n    style: Object.assign(Object.assign({}, contextStyle), style),\n    styles: Object.assign(Object.assign({}, contextStyles), styles),\n    disabled: mergedDisabled,\n    allowClear: mergedAllowClear,\n    className: classNames(cssVarCls, rootCls, className, rootClassName, compactItemClassnames, contextClassName),\n    classNames: Object.assign(Object.assign(Object.assign({}, classes), contextClassNames), {\n      textarea: classNames({\n        [`${prefixCls}-sm`]: mergedSize === 'small',\n        [`${prefixCls}-lg`]: mergedSize === 'large'\n      }, hashId, classes === null || classes === void 0 ? void 0 : classes.textarea, contextClassNames.textarea),\n      variant: classNames({\n        [`${prefixCls}-${variant}`]: enableVariantCls\n      }, getStatusClassNames(prefixCls, mergedStatus)),\n      affixWrapper: classNames(`${prefixCls}-textarea-affix-wrapper`, {\n        [`${prefixCls}-affix-wrapper-rtl`]: direction === 'rtl',\n        [`${prefixCls}-affix-wrapper-sm`]: mergedSize === 'small',\n        [`${prefixCls}-affix-wrapper-lg`]: mergedSize === 'large',\n        [`${prefixCls}-textarea-show-count`]: props.showCount || ((_a = props.count) === null || _a === void 0 ? void 0 : _a.show)\n      }, hashId)\n    }),\n    prefixCls: prefixCls,\n    suffix: hasFeedback && /*#__PURE__*/React.createElement(\"span\", {\n      className: `${prefixCls}-textarea-suffix`\n    }, feedbackIcon),\n    ref: innerRef\n  }))));\n});\nexport default TextArea;","/*\n.typography-title(@fontSize; @fontWeight; @lineHeight; @headingColor; @headingMarginBottom;) {\n margin-bottom: @headingMarginBottom;\n color: @headingColor;\n font-weight: @fontWeight;\n fontSize: @fontSize;\n line-height: @lineHeight;\n}\n*/\nimport { gold } from '@ant-design/colors';\nimport { unit } from '@ant-design/cssinjs';\nimport { operationUnit } from '../../style';\nconst getTitleStyle = (fontSize, lineHeight, color, token) => {\n  const {\n    titleMarginBottom,\n    fontWeightStrong\n  } = token;\n  return {\n    marginBottom: titleMarginBottom,\n    color,\n    fontWeight: fontWeightStrong,\n    fontSize,\n    lineHeight\n  };\n};\nexport const getTitleStyles = token => {\n  const headings = [1, 2, 3, 4, 5];\n  const styles = {};\n  headings.forEach(headingLevel => {\n    styles[`\n      h${headingLevel}&,\n      div&-h${headingLevel},\n      div&-h${headingLevel} > textarea,\n      h${headingLevel}\n    `] = getTitleStyle(token[`fontSizeHeading${headingLevel}`], token[`lineHeightHeading${headingLevel}`], token.colorTextHeading, token);\n  });\n  return styles;\n};\nexport const getLinkStyles = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    'a&, a': Object.assign(Object.assign({}, operationUnit(token)), {\n      userSelect: 'text',\n      [`&[disabled], &${componentCls}-disabled`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n        '&:active, &:hover': {\n          color: token.colorTextDisabled\n        },\n        '&:active': {\n          pointerEvents: 'none'\n        }\n      }\n    })\n  };\n};\nexport const getResetStyles = token => ({\n  code: {\n    margin: '0 0.2em',\n    paddingInline: '0.4em',\n    paddingBlock: '0.2em 0.1em',\n    fontSize: '85%',\n    fontFamily: token.fontFamilyCode,\n    background: 'rgba(150, 150, 150, 0.1)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderRadius: 3\n  },\n  kbd: {\n    margin: '0 0.2em',\n    paddingInline: '0.4em',\n    paddingBlock: '0.15em 0.1em',\n    fontSize: '90%',\n    fontFamily: token.fontFamilyCode,\n    background: 'rgba(150, 150, 150, 0.06)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderBottomWidth: 2,\n    borderRadius: 3\n  },\n  mark: {\n    padding: 0,\n    // FIXME hardcode in v4\n    backgroundColor: gold[2]\n  },\n  'u, ins': {\n    textDecoration: 'underline',\n    textDecorationSkipInk: 'auto'\n  },\n  's, del': {\n    textDecoration: 'line-through'\n  },\n  strong: {\n    fontWeight: 600\n  },\n  // list\n  'ul, ol': {\n    marginInline: 0,\n    marginBlock: '0 1em',\n    padding: 0,\n    li: {\n      marginInline: '20px 0',\n      marginBlock: 0,\n      paddingInline: '4px 0',\n      paddingBlock: 0\n    }\n  },\n  ul: {\n    listStyleType: 'circle',\n    ul: {\n      listStyleType: 'disc'\n    }\n  },\n  ol: {\n    listStyleType: 'decimal'\n  },\n  // pre & block\n  'pre, blockquote': {\n    margin: '1em 0'\n  },\n  pre: {\n    padding: '0.4em 0.6em',\n    whiteSpace: 'pre-wrap',\n    wordWrap: 'break-word',\n    background: 'rgba(150, 150, 150, 0.1)',\n    border: '1px solid rgba(100, 100, 100, 0.2)',\n    borderRadius: 3,\n    fontFamily: token.fontFamilyCode,\n    // Compatible for marked\n    code: {\n      display: 'inline',\n      margin: 0,\n      padding: 0,\n      fontSize: 'inherit',\n      fontFamily: 'inherit',\n      background: 'transparent',\n      border: 0\n    }\n  },\n  blockquote: {\n    paddingInline: '0.6em 0',\n    paddingBlock: 0,\n    borderInlineStart: '4px solid rgba(100, 100, 100, 0.2)',\n    opacity: 0.85\n  }\n});\nexport const getEditableStyles = token => {\n  const {\n    componentCls,\n    paddingSM\n  } = token;\n  const inputShift = paddingSM;\n  return {\n    '&-edit-content': {\n      position: 'relative',\n      'div&': {\n        insetInlineStart: token.calc(token.paddingSM).mul(-1).equal(),\n        marginTop: token.calc(inputShift).mul(-1).equal(),\n        marginBottom: `calc(1em - ${unit(inputShift)})`\n      },\n      [`${componentCls}-edit-content-confirm`]: {\n        position: 'absolute',\n        insetInlineEnd: token.calc(token.marginXS).add(2).equal(),\n        insetBlockEnd: token.marginXS,\n        color: token.colorTextDescription,\n        // default style\n        fontWeight: 'normal',\n        fontSize: token.fontSize,\n        fontStyle: 'normal',\n        pointerEvents: 'none'\n      },\n      textarea: {\n        margin: '0!important',\n        // Fix Editable Textarea flash in Firefox\n        MozTransition: 'none',\n        height: '1em'\n      }\n    }\n  };\n};\nexport const getCopyableStyles = token => ({\n  [`${token.componentCls}-copy-success`]: {\n    [`\n    &,\n    &:hover,\n    &:focus`]: {\n      color: token.colorSuccess\n    }\n  },\n  [`${token.componentCls}-copy-icon-only`]: {\n    marginInlineStart: 0\n  }\n});\nexport const getEllipsisStyles = () => ({\n  [`\n  a&-ellipsis,\n  span&-ellipsis\n  `]: {\n    display: 'inline-block',\n    maxWidth: '100%'\n  },\n  '&-ellipsis-single-line': {\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    // https://blog.csdn.net/iefreer/article/details/50421025\n    'a&, span&': {\n      verticalAlign: 'bottom'\n    },\n    '> code': {\n      paddingBlock: 0,\n      maxWidth: 'calc(100% - 1.2em)',\n      display: 'inline-block',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      verticalAlign: 'bottom',\n      // https://github.com/ant-design/ant-design/issues/45953\n      boxSizing: 'content-box'\n    }\n  },\n  '&-ellipsis-multiple-line': {\n    display: '-webkit-box',\n    overflow: 'hidden',\n    WebkitLineClamp: 3,\n    WebkitBoxOrient: 'vertical'\n  }\n});","import { operationUnit } from '../../style';\nimport { genStyleHooks } from '../../theme/internal';\nimport { getCopyableStyles, getEditableStyles, getEllipsisStyles, getLinkStyles, getResetStyles, getTitleStyles } from './mixins';\nconst genTypographyStyle = token => {\n  const {\n    componentCls,\n    titleMarginTop\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n      color: token.colorText,\n      wordBreak: 'break-word',\n      lineHeight: token.lineHeight,\n      [`&${componentCls}-secondary`]: {\n        color: token.colorTextDescription\n      },\n      [`&${componentCls}-success`]: {\n        color: token.colorSuccess\n      },\n      [`&${componentCls}-warning`]: {\n        color: token.colorWarning\n      },\n      [`&${componentCls}-danger`]: {\n        color: token.colorError,\n        'a&:active, a&:focus': {\n          color: token.colorErrorActive\n        },\n        'a&:hover': {\n          color: token.colorErrorHover\n        }\n      },\n      [`&${componentCls}-disabled`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n        userSelect: 'none'\n      },\n      [`\n        div&,\n        p\n      `]: {\n        marginBottom: '1em'\n      }\n    }, getTitleStyles(token)), {\n      [`\n      & + h1${componentCls},\n      & + h2${componentCls},\n      & + h3${componentCls},\n      & + h4${componentCls},\n      & + h5${componentCls}\n      `]: {\n        marginTop: titleMarginTop\n      },\n      [`\n      div,\n      ul,\n      li,\n      p,\n      h1,\n      h2,\n      h3,\n      h4,\n      h5`]: {\n        [`\n        + h1,\n        + h2,\n        + h3,\n        + h4,\n        + h5\n        `]: {\n          marginTop: titleMarginTop\n        }\n      }\n    }), getResetStyles(token)), getLinkStyles(token)), {\n      // Operation\n      [`\n        ${componentCls}-expand,\n        ${componentCls}-collapse,\n        ${componentCls}-edit,\n        ${componentCls}-copy\n      `]: Object.assign(Object.assign({}, operationUnit(token)), {\n        marginInlineStart: token.marginXXS\n      })\n    }), getEditableStyles(token)), getCopyableStyles(token)), getEllipsisStyles()), {\n      '&-rtl': {\n        direction: 'rtl'\n      }\n    })\n  };\n};\nexport const prepareComponentToken = () => ({\n  titleMarginTop: '1.2em',\n  titleMarginBottom: '0.5em'\n});\n// ============================== Export ==============================\nexport default genStyleHooks('Typography', token => [genTypographyStyle(token)], prepareComponentToken);","\"use client\";\n\nimport * as React from 'react';\nimport EnterOutlined from \"@ant-design/icons/es/icons/EnterOutlined\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { cloneElement } from '../_util/reactNode';\nimport TextArea from '../input/TextArea';\nimport useStyle from './style';\nconst Editable = props => {\n  const {\n    prefixCls,\n    'aria-label': ariaLabel,\n    className,\n    style,\n    direction,\n    maxLength,\n    autoSize = true,\n    value,\n    onSave,\n    onCancel,\n    onEnd,\n    component,\n    enterIcon = /*#__PURE__*/React.createElement(EnterOutlined, null)\n  } = props;\n  const ref = React.useRef(null);\n  const inComposition = React.useRef(false);\n  const lastKeyCode = React.useRef(null);\n  const [current, setCurrent] = React.useState(value);\n  React.useEffect(() => {\n    setCurrent(value);\n  }, [value]);\n  React.useEffect(() => {\n    var _a;\n    if ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.resizableTextArea) {\n      const {\n        textArea\n      } = ref.current.resizableTextArea;\n      textArea.focus();\n      const {\n        length\n      } = textArea.value;\n      textArea.setSelectionRange(length, length);\n    }\n  }, []);\n  const onChange = _ref => {\n    let {\n      target\n    } = _ref;\n    setCurrent(target.value.replace(/[\\n\\r]/g, ''));\n  };\n  const onCompositionStart = () => {\n    inComposition.current = true;\n  };\n  const onCompositionEnd = () => {\n    inComposition.current = false;\n  };\n  const onKeyDown = _ref2 => {\n    let {\n      keyCode\n    } = _ref2;\n    // We don't record keyCode when IME is using\n    if (inComposition.current) return;\n    lastKeyCode.current = keyCode;\n  };\n  const confirmChange = () => {\n    onSave(current.trim());\n  };\n  const onKeyUp = _ref3 => {\n    let {\n      keyCode,\n      ctrlKey,\n      altKey,\n      metaKey,\n      shiftKey\n    } = _ref3;\n    // Check if it's a real key\n    if (lastKeyCode.current !== keyCode || inComposition.current || ctrlKey || altKey || metaKey || shiftKey) {\n      return;\n    }\n    if (keyCode === KeyCode.ENTER) {\n      confirmChange();\n      onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n    } else if (keyCode === KeyCode.ESC) {\n      onCancel();\n    }\n  };\n  const onBlur = () => {\n    confirmChange();\n  };\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const textAreaClassName = classNames(prefixCls, `${prefixCls}-edit-content`, {\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-${component}`]: !!component\n  }, className, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: textAreaClassName,\n    style: style\n  }, /*#__PURE__*/React.createElement(TextArea, {\n    ref: ref,\n    maxLength: maxLength,\n    value: current,\n    onChange: onChange,\n    onKeyDown: onKeyDown,\n    onKeyUp: onKeyUp,\n    onCompositionStart: onCompositionStart,\n    onCompositionEnd: onCompositionEnd,\n    onBlur: onBlur,\n    \"aria-label\": ariaLabel,\n    rows: 1,\n    autoSize: autoSize\n  }), enterIcon !== null ? cloneElement(enterIcon, {\n    className: `${prefixCls}-edit-content-confirm`\n  }) : null));\n};\nexport default Editable;","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nimport * as React from 'react';\nimport copy from 'copy-to-clipboard';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport toList from '../../_util/toList';\nconst useCopyClick = _ref => {\n  let {\n    copyConfig,\n    children\n  } = _ref;\n  const [copied, setCopied] = React.useState(false);\n  const [copyLoading, setCopyLoading] = React.useState(false);\n  const copyIdRef = React.useRef(null);\n  const cleanCopyId = () => {\n    if (copyIdRef.current) {\n      clearTimeout(copyIdRef.current);\n    }\n  };\n  const copyOptions = {};\n  if (copyConfig.format) {\n    copyOptions.format = copyConfig.format;\n  }\n  React.useEffect(() => cleanCopyId, []);\n  // Keep copy action up to date\n  const onClick = useEvent(e => __awaiter(void 0, void 0, void 0, function* () {\n    var _a;\n    e === null || e === void 0 ? void 0 : e.preventDefault();\n    e === null || e === void 0 ? void 0 : e.stopPropagation();\n    setCopyLoading(true);\n    try {\n      const text = typeof copyConfig.text === 'function' ? yield copyConfig.text() : copyConfig.text;\n      copy(text || toList(children, true).join('') || '', copyOptions);\n      setCopyLoading(false);\n      setCopied(true);\n      // Trigger tips update\n      cleanCopyId();\n      copyIdRef.current = setTimeout(() => {\n        setCopied(false);\n      }, 3000);\n      (_a = copyConfig.onCopy) === null || _a === void 0 ? void 0 : _a.call(copyConfig, e);\n    } catch (error) {\n      setCopyLoading(false);\n      throw error;\n    }\n  }));\n  return {\n    copied,\n    copyLoading,\n    onClick\n  };\n};\nexport default useCopyClick;","export default function toList(candidate) {\n  let skipEmpty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  if (skipEmpty && (candidate === undefined || candidate === null)) return [];\n  return Array.isArray(candidate) ? candidate : [candidate];\n}","import * as React from 'react';\nexport default function useMergedConfig(propConfig, templateConfig) {\n  return React.useMemo(() => {\n    const support = !!propConfig;\n    return [support, Object.assign(Object.assign({}, templateConfig), support && typeof propConfig === 'object' ? propConfig : null)];\n  }, [propConfig]);\n}","import { useEffect, useRef } from 'react';\nconst usePrevious = value => {\n  const ref = useRef(undefined);\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\nexport default usePrevious;","import { isValidElement, useMemo } from 'react';\nconst useTooltipProps = (tooltip, editConfigText, children) => useMemo(() => {\n  if (tooltip === true) {\n    return {\n      title: editConfigText !== null && editConfigText !== void 0 ? editConfigText : children\n    };\n  }\n  if (/*#__PURE__*/isValidElement(tooltip)) {\n    return {\n      title: tooltip\n    };\n  }\n  if (typeof tooltip === 'object') {\n    return Object.assign({\n      title: editConfigText !== null && editConfigText !== void 0 ? editConfigText : children\n    }, tooltip);\n  }\n  return {\n    title: tooltip\n  };\n}, [tooltip, editConfigText, children]);\nexport default useTooltipProps;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport useStyle from './style';\nconst Typography = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      component: Component = 'article',\n      className,\n      rootClassName,\n      setContentRef,\n      children,\n      direction: typographyDirection,\n      style\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"component\", \"className\", \"rootClassName\", \"setContentRef\", \"children\", \"direction\", \"style\"]);\n  const {\n    getPrefixCls,\n    direction: contextDirection,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('typography');\n  const direction = typographyDirection !== null && typographyDirection !== void 0 ? typographyDirection : contextDirection;\n  const mergedRef = setContentRef ? composeRef(ref, setContentRef) : ref;\n  const prefixCls = getPrefixCls('typography', customizePrefixCls);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Typography');\n    warning.deprecated(!setContentRef, 'setContentRef', 'ref');\n  }\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const componentClassName = classNames(prefixCls, contextClassName, {\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, rootClassName, hashId, cssVarCls);\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  return wrapCSSVar(\n  /*#__PURE__*/\n  // @ts-expect-error: Expression produces a union type that is too complex to represent.\n  React.createElement(Component, Object.assign({\n    className: componentClassName,\n    style: mergedStyle,\n    ref: mergedRef\n  }, restProps), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Typography.displayName = 'Typography';\n}\nexport default Typography;","// This icon file is generated automatically.\nvar CheckOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\" } }] }, \"name\": \"check\", \"theme\": \"outlined\" };\nexport default CheckOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckOutlinedSvg from \"@ant-design/icons-svg/es/asn/CheckOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckOutlined = function CheckOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CheckOutlinedSvg\n  }));\n};\n\n/**![check](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkxMiAxOTBoLTY5LjljLTkuOCAwLTE5LjEgNC41LTI1LjEgMTIuMkw0MDQuNyA3MjQuNSAyMDcgNDc0YTMyIDMyIDAgMDAtMjUuMS0xMi4ySDExMmMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlsMjczLjkgMzQ3YzEyLjggMTYuMiAzNy40IDE2LjIgNTAuMyAwbDQ4OC40LTYxOC45YzQuMS01LjEuNC0xMi44LTYuMy0xMi44eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CheckOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CheckOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar CopyOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\" } }] }, \"name\": \"copy\", \"theme\": \"outlined\" };\nexport default CopyOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CopyOutlinedSvg from \"@ant-design/icons-svg/es/asn/CopyOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CopyOutlined = function CopyOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CopyOutlinedSvg\n  }));\n};\n\n/**![copy](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTgzMiA2NEgyOTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNDk2djY4OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04Vjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MDQgMTkySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTMwLjdjMCA4LjUgMy40IDE2LjYgOS40IDIyLjZsMTczLjMgMTczLjNjMi4yIDIuMiA0LjcgNCA3LjQgNS41djEuOWg0LjJjMy41IDEuMyA3LjIgMiAxMSAySDcwNGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTM1MCA4NTYuMkwyNjMuOSA3NzBIMzUwdjg2LjJ6TTY2NCA4ODhINDE0Vjc0NmMwLTIyLjEtMTcuOS00MC00MC00MEgyMzJWMjY0aDQzMnY2MjR6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CopyOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CopyOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar LoadingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\" } }] }, \"name\": \"loading\", \"theme\": \"outlined\" };\nexport default LoadingOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LoadingOutlinedSvg from \"@ant-design/icons-svg/es/asn/LoadingOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LoadingOutlined = function LoadingOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: LoadingOutlinedSvg\n  }));\n};\n\n/**![loading](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk4OCA1NDhjLTE5LjkgMC0zNi0xNi4xLTM2LTM2IDAtNTkuNC0xMS42LTExNy0zNC42LTE3MS4zYTQ0MC40NSA0NDAuNDUgMCAwMC05NC4zLTEzOS45IDQzNy43MSA0MzcuNzEgMCAwMC0xMzkuOS05NC4zQzYyOSA4My42IDU3MS40IDcyIDUxMiA3MmMtMTkuOSAwLTM2LTE2LjEtMzYtMzZzMTYuMS0zNiAzNi0zNmM2OS4xIDAgMTM2LjIgMTMuNSAxOTkuMyA0MC4zQzc3Mi4zIDY2IDgyNyAxMDMgODc0IDE1MGM0NyA0NyA4My45IDEwMS44IDEwOS43IDE2Mi43IDI2LjcgNjMuMSA0MC4yIDEzMC4yIDQwLjIgMTk5LjMuMSAxOS45LTE2IDM2LTM1LjkgMzZ6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(LoadingOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'LoadingOutlined';\n}\nexport default RefIcon;","export function toList(val) {\n  if (val === false) {\n    return [false, false];\n  }\n  return Array.isArray(val) ? val : [val];\n}\nexport function getNode(dom, defaultNode, needDom) {\n  if (dom === true || dom === undefined) {\n    return defaultNode;\n  }\n  return dom || needDom && defaultNode;\n}\n/**\n * Check for element is native ellipsis\n * ref:\n * - https://github.com/ant-design/ant-design/issues/50143\n * - https://github.com/ant-design/ant-design/issues/50414\n */\nexport function isEleEllipsis(ele) {\n  // Create a new div to get the size\n  const childDiv = document.createElement('em');\n  ele.appendChild(childDiv);\n  // For test case\n  if (process.env.NODE_ENV !== 'production') {\n    childDiv.className = 'ant-typography-css-ellipsis-content-measure';\n  }\n  const rect = ele.getBoundingClientRect();\n  const childRect = childDiv.getBoundingClientRect();\n  // Reset\n  ele.removeChild(childDiv);\n  // Range checker\n  return (\n    // Horizontal out of range\n    rect.left > childRect.left || childRect.right > rect.right ||\n    // Vertical out of range\n    rect.top > childRect.top || childRect.bottom > rect.bottom\n  );\n}\nexport const isValidText = val => ['string', 'number'].includes(typeof val);","\"use client\";\n\nimport * as React from 'react';\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CopyOutlined from \"@ant-design/icons/es/icons/CopyOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport Tooltip from '../../tooltip';\nimport { getNode, toList } from './util';\nconst CopyBtn = _ref => {\n  let {\n    prefixCls,\n    copied,\n    locale,\n    iconOnly,\n    tooltips,\n    icon,\n    tabIndex,\n    onCopy,\n    loading: btnLoading\n  } = _ref;\n  const tooltipNodes = toList(tooltips);\n  const iconNodes = toList(icon);\n  const {\n    copied: copiedText,\n    copy: copyText\n  } = locale !== null && locale !== void 0 ? locale : {};\n  const systemStr = copied ? copiedText : copyText;\n  const copyTitle = getNode(tooltipNodes[copied ? 1 : 0], systemStr);\n  const ariaLabel = typeof copyTitle === 'string' ? copyTitle : systemStr;\n  return /*#__PURE__*/React.createElement(Tooltip, {\n    title: copyTitle\n  }, /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    className: classNames(`${prefixCls}-copy`, {\n      [`${prefixCls}-copy-success`]: copied,\n      [`${prefixCls}-copy-icon-only`]: iconOnly\n    }),\n    onClick: onCopy,\n    \"aria-label\": ariaLabel,\n    tabIndex: tabIndex\n  }, copied ? getNode(iconNodes[1], /*#__PURE__*/React.createElement(CheckOutlined, null), true) : getNode(iconNodes[0], btnLoading ? /*#__PURE__*/React.createElement(LoadingOutlined, null) : /*#__PURE__*/React.createElement(CopyOutlined, null), true)));\n};\nexport default CopyBtn;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { isValidText } from './util';\nconst MeasureText = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n    style,\n    children\n  } = _ref;\n  const spanRef = React.useRef(null);\n  React.useImperativeHandle(ref, () => ({\n    isExceed: () => {\n      const span = spanRef.current;\n      return span.scrollHeight > span.clientHeight;\n    },\n    getHeight: () => spanRef.current.clientHeight\n  }));\n  return /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": true,\n    ref: spanRef,\n    style: Object.assign({\n      position: 'fixed',\n      display: 'block',\n      left: 0,\n      top: 0,\n      pointerEvents: 'none',\n      backgroundColor: 'rgba(255, 0, 0, 0.65)'\n    }, style)\n  }, children);\n});\nconst getNodesLen = nodeList => nodeList.reduce((totalLen, node) => totalLen + (isValidText(node) ? String(node).length : 1), 0);\nfunction sliceNodes(nodeList, len) {\n  let currLen = 0;\n  const currentNodeList = [];\n  for (let i = 0; i < nodeList.length; i += 1) {\n    // Match to return\n    if (currLen === len) {\n      return currentNodeList;\n    }\n    const node = nodeList[i];\n    const canCut = isValidText(node);\n    const nodeLen = canCut ? String(node).length : 1;\n    const nextLen = currLen + nodeLen;\n    // Exceed but current not which means we need cut this\n    // This will not happen on validate ReactElement\n    if (nextLen > len) {\n      const restLen = len - currLen;\n      currentNodeList.push(String(node).slice(0, restLen));\n      return currentNodeList;\n    }\n    currentNodeList.push(node);\n    currLen = nextLen;\n  }\n  return nodeList;\n}\n// Measure for the `text` is exceed the `rows` or not\nconst STATUS_MEASURE_NONE = 0;\nconst STATUS_MEASURE_PREPARE = 1;\nconst STATUS_MEASURE_START = 2;\nconst STATUS_MEASURE_NEED_ELLIPSIS = 3;\nconst STATUS_MEASURE_NO_NEED_ELLIPSIS = 4;\nconst lineClipStyle = {\n  display: '-webkit-box',\n  overflow: 'hidden',\n  WebkitBoxOrient: 'vertical'\n};\nexport default function EllipsisMeasure(props) {\n  const {\n    enableMeasure,\n    width,\n    text,\n    children,\n    rows,\n    expanded,\n    miscDeps,\n    onEllipsis\n  } = props;\n  const nodeList = React.useMemo(() => toArray(text), [text]);\n  const nodeLen = React.useMemo(() => getNodesLen(nodeList), [text]);\n  // ========================= Full Content =========================\n  // Used for measure only, which means it's always render as no need ellipsis\n  const fullContent = React.useMemo(() => children(nodeList, false), [text]);\n  // ========================= Cut Content ==========================\n  const [ellipsisCutIndex, setEllipsisCutIndex] = React.useState(null);\n  const cutMidRef = React.useRef(null);\n  // ========================= NeedEllipsis =========================\n  const measureWhiteSpaceRef = React.useRef(null);\n  const needEllipsisRef = React.useRef(null);\n  // Measure for `rows-1` height, to avoid operation exceed the line height\n  const descRowsEllipsisRef = React.useRef(null);\n  const symbolRowEllipsisRef = React.useRef(null);\n  const [canEllipsis, setCanEllipsis] = React.useState(false);\n  const [needEllipsis, setNeedEllipsis] = React.useState(STATUS_MEASURE_NONE);\n  const [ellipsisHeight, setEllipsisHeight] = React.useState(0);\n  const [parentWhiteSpace, setParentWhiteSpace] = React.useState(null);\n  // Trigger start measure\n  useLayoutEffect(() => {\n    if (enableMeasure && width && nodeLen) {\n      setNeedEllipsis(STATUS_MEASURE_PREPARE);\n    } else {\n      setNeedEllipsis(STATUS_MEASURE_NONE);\n    }\n  }, [width, text, rows, enableMeasure, nodeList]);\n  // Measure process\n  useLayoutEffect(() => {\n    var _a, _b, _c, _d;\n    if (needEllipsis === STATUS_MEASURE_PREPARE) {\n      setNeedEllipsis(STATUS_MEASURE_START);\n      // Parent ref `white-space`\n      const nextWhiteSpace = measureWhiteSpaceRef.current && getComputedStyle(measureWhiteSpaceRef.current).whiteSpace;\n      setParentWhiteSpace(nextWhiteSpace);\n    } else if (needEllipsis === STATUS_MEASURE_START) {\n      const isOverflow = !!((_a = needEllipsisRef.current) === null || _a === void 0 ? void 0 : _a.isExceed());\n      setNeedEllipsis(isOverflow ? STATUS_MEASURE_NEED_ELLIPSIS : STATUS_MEASURE_NO_NEED_ELLIPSIS);\n      setEllipsisCutIndex(isOverflow ? [0, nodeLen] : null);\n      setCanEllipsis(isOverflow);\n      // Get the basic height of ellipsis rows\n      const baseRowsEllipsisHeight = ((_b = needEllipsisRef.current) === null || _b === void 0 ? void 0 : _b.getHeight()) || 0;\n      // Get the height of `rows - 1` + symbol height\n      const descRowsEllipsisHeight = rows === 1 ? 0 : ((_c = descRowsEllipsisRef.current) === null || _c === void 0 ? void 0 : _c.getHeight()) || 0;\n      const symbolRowEllipsisHeight = ((_d = symbolRowEllipsisRef.current) === null || _d === void 0 ? void 0 : _d.getHeight()) || 0;\n      const maxRowsHeight = Math.max(baseRowsEllipsisHeight,\n      // height of rows with ellipsis\n      descRowsEllipsisHeight + symbolRowEllipsisHeight);\n      setEllipsisHeight(maxRowsHeight + 1);\n      onEllipsis(isOverflow);\n    }\n  }, [needEllipsis]);\n  // ========================= Cut Measure ==========================\n  const cutMidIndex = ellipsisCutIndex ? Math.ceil((ellipsisCutIndex[0] + ellipsisCutIndex[1]) / 2) : 0;\n  useLayoutEffect(() => {\n    var _a;\n    const [minIndex, maxIndex] = ellipsisCutIndex || [0, 0];\n    if (minIndex !== maxIndex) {\n      const midHeight = ((_a = cutMidRef.current) === null || _a === void 0 ? void 0 : _a.getHeight()) || 0;\n      const isOverflow = midHeight > ellipsisHeight;\n      let targetMidIndex = cutMidIndex;\n      if (maxIndex - minIndex === 1) {\n        targetMidIndex = isOverflow ? minIndex : maxIndex;\n      }\n      setEllipsisCutIndex(isOverflow ? [minIndex, targetMidIndex] : [targetMidIndex, maxIndex]);\n    }\n  }, [ellipsisCutIndex, cutMidIndex]);\n  // ========================= Text Content =========================\n  const finalContent = React.useMemo(() => {\n    // Skip everything if `enableMeasure` is disabled\n    if (!enableMeasure) {\n      return children(nodeList, false);\n    }\n    if (needEllipsis !== STATUS_MEASURE_NEED_ELLIPSIS || !ellipsisCutIndex || ellipsisCutIndex[0] !== ellipsisCutIndex[1]) {\n      const content = children(nodeList, false);\n      // Limit the max line count to avoid scrollbar blink unless no need ellipsis\n      // https://github.com/ant-design/ant-design/issues/42958\n      if ([STATUS_MEASURE_NO_NEED_ELLIPSIS, STATUS_MEASURE_NONE].includes(needEllipsis)) {\n        return content;\n      }\n      return /*#__PURE__*/React.createElement(\"span\", {\n        style: Object.assign(Object.assign({}, lineClipStyle), {\n          WebkitLineClamp: rows\n        })\n      }, content);\n    }\n    return children(expanded ? nodeList : sliceNodes(nodeList, ellipsisCutIndex[0]), canEllipsis);\n  }, [expanded, needEllipsis, ellipsisCutIndex, nodeList].concat(_toConsumableArray(miscDeps)));\n  // ============================ Render ============================\n  const measureStyle = {\n    width,\n    margin: 0,\n    padding: 0,\n    whiteSpace: parentWhiteSpace === 'nowrap' ? 'normal' : 'inherit'\n  };\n  return /*#__PURE__*/React.createElement(React.Fragment, null, finalContent, needEllipsis === STATUS_MEASURE_START && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MeasureText, {\n    style: Object.assign(Object.assign(Object.assign({}, measureStyle), lineClipStyle), {\n      WebkitLineClamp: rows\n    }),\n    ref: needEllipsisRef\n  }, fullContent), /*#__PURE__*/React.createElement(MeasureText, {\n    style: Object.assign(Object.assign(Object.assign({}, measureStyle), lineClipStyle), {\n      WebkitLineClamp: rows - 1\n    }),\n    ref: descRowsEllipsisRef\n  }, fullContent), /*#__PURE__*/React.createElement(MeasureText, {\n    style: Object.assign(Object.assign(Object.assign({}, measureStyle), lineClipStyle), {\n      WebkitLineClamp: 1\n    }),\n    ref: symbolRowEllipsisRef\n  }, children([], true)))), needEllipsis === STATUS_MEASURE_NEED_ELLIPSIS && ellipsisCutIndex && ellipsisCutIndex[0] !== ellipsisCutIndex[1] && (/*#__PURE__*/React.createElement(MeasureText, {\n    style: Object.assign(Object.assign({}, measureStyle), {\n      top: 400\n    }),\n    ref: cutMidRef\n  }, children(sliceNodes(nodeList, cutMidIndex), true))), needEllipsis === STATUS_MEASURE_PREPARE && (/*#__PURE__*/React.createElement(\"span\", {\n    style: {\n      whiteSpace: 'inherit'\n    },\n    ref: measureWhiteSpaceRef\n  })));\n}","\"use client\";\n\nimport * as React from 'react';\nimport Tooltip from '../../tooltip';\nconst EllipsisTooltip = _ref => {\n  let {\n    enableEllipsis,\n    isEllipsis,\n    children,\n    tooltipProps\n  } = _ref;\n  if (!(tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.title) || !enableEllipsis) {\n    return children;\n  }\n  return /*#__PURE__*/React.createElement(Tooltip, Object.assign({\n    open: isEllipsis ? undefined : false\n  }, tooltipProps), children);\n};\nif (process.env.NODE_ENV !== 'production') {\n  EllipsisTooltip.displayName = 'EllipsisTooltip';\n}\nexport default EllipsisTooltip;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport EditOutlined from \"@ant-design/icons/es/icons/EditOutlined\";\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport { isStyleSupport } from '../../_util/styleChecker';\nimport { ConfigContext } from '../../config-provider';\nimport useLocale from '../../locale/useLocale';\nimport Tooltip from '../../tooltip';\nimport Editable from '../Editable';\nimport useCopyClick from '../hooks/useCopyClick';\nimport useMergedConfig from '../hooks/useMergedConfig';\nimport usePrevious from '../hooks/usePrevious';\nimport useTooltipProps from '../hooks/useTooltipProps';\nimport Typography from '../Typography';\nimport CopyBtn from './CopyBtn';\nimport Ellipsis from './Ellipsis';\nimport EllipsisTooltip from './EllipsisTooltip';\nimport { isEleEllipsis, isValidText } from './util';\nfunction wrapperDecorations(_ref, content) {\n  let {\n    mark,\n    code,\n    underline,\n    delete: del,\n    strong,\n    keyboard,\n    italic\n  } = _ref;\n  let currentContent = content;\n  function wrap(tag, needed) {\n    if (!needed) {\n      return;\n    }\n    currentContent = /*#__PURE__*/React.createElement(tag, {}, currentContent);\n  }\n  wrap('strong', strong);\n  wrap('u', underline);\n  wrap('del', del);\n  wrap('code', code);\n  wrap('mark', mark);\n  wrap('kbd', keyboard);\n  wrap('i', italic);\n  return currentContent;\n}\nconst ELLIPSIS_STR = '...';\nconst Base = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a;\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      style,\n      type,\n      disabled,\n      children,\n      ellipsis,\n      editable,\n      copyable,\n      component,\n      title\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"style\", \"type\", \"disabled\", \"children\", \"ellipsis\", \"editable\", \"copyable\", \"component\", \"title\"]);\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const [textLocale] = useLocale('Text');\n  const typographyRef = React.useRef(null);\n  const editIconRef = React.useRef(null);\n  // ============================ MISC ============================\n  const prefixCls = getPrefixCls('typography', customizePrefixCls);\n  const textProps = omit(restProps, ['mark', 'code', 'delete', 'underline', 'strong', 'keyboard', 'italic']);\n  // ========================== Editable ==========================\n  const [enableEdit, editConfig] = useMergedConfig(editable);\n  const [editing, setEditing] = useMergedState(false, {\n    value: editConfig.editing\n  });\n  const {\n    triggerType = ['icon']\n  } = editConfig;\n  const triggerEdit = edit => {\n    var _a;\n    if (edit) {\n      (_a = editConfig.onStart) === null || _a === void 0 ? void 0 : _a.call(editConfig);\n    }\n    setEditing(edit);\n  };\n  // Focus edit icon when back\n  const prevEditing = usePrevious(editing);\n  useLayoutEffect(() => {\n    var _a;\n    if (!editing && prevEditing) {\n      (_a = editIconRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n    }\n  }, [editing]);\n  const onEditClick = e => {\n    e === null || e === void 0 ? void 0 : e.preventDefault();\n    triggerEdit(true);\n  };\n  const onEditChange = value => {\n    var _a;\n    (_a = editConfig.onChange) === null || _a === void 0 ? void 0 : _a.call(editConfig, value);\n    triggerEdit(false);\n  };\n  const onEditCancel = () => {\n    var _a;\n    (_a = editConfig.onCancel) === null || _a === void 0 ? void 0 : _a.call(editConfig);\n    triggerEdit(false);\n  };\n  // ========================== Copyable ==========================\n  const [enableCopy, copyConfig] = useMergedConfig(copyable);\n  const {\n    copied,\n    copyLoading,\n    onClick: onCopyClick\n  } = useCopyClick({\n    copyConfig,\n    children\n  });\n  // ========================== Ellipsis ==========================\n  const [isLineClampSupport, setIsLineClampSupport] = React.useState(false);\n  const [isTextOverflowSupport, setIsTextOverflowSupport] = React.useState(false);\n  const [isJsEllipsis, setIsJsEllipsis] = React.useState(false);\n  const [isNativeEllipsis, setIsNativeEllipsis] = React.useState(false);\n  const [isNativeVisible, setIsNativeVisible] = React.useState(true);\n  const [enableEllipsis, ellipsisConfig] = useMergedConfig(ellipsis, {\n    expandable: false,\n    symbol: isExpanded => isExpanded ? textLocale === null || textLocale === void 0 ? void 0 : textLocale.collapse : textLocale === null || textLocale === void 0 ? void 0 : textLocale.expand\n  });\n  const [expanded, setExpanded] = useMergedState(ellipsisConfig.defaultExpanded || false, {\n    value: ellipsisConfig.expanded\n  });\n  const mergedEnableEllipsis = enableEllipsis && (!expanded || ellipsisConfig.expandable === 'collapsible');\n  // Shared prop to reduce bundle size\n  const {\n    rows = 1\n  } = ellipsisConfig;\n  const needMeasureEllipsis = React.useMemo(() =>\n  // Disable ellipsis\n  mergedEnableEllipsis && (\n  // Provide suffix\n  ellipsisConfig.suffix !== undefined || ellipsisConfig.onEllipsis ||\n  // Can't use css ellipsis since we need to provide the place for button\n  ellipsisConfig.expandable || enableEdit || enableCopy), [mergedEnableEllipsis, ellipsisConfig, enableEdit, enableCopy]);\n  useLayoutEffect(() => {\n    if (enableEllipsis && !needMeasureEllipsis) {\n      setIsLineClampSupport(isStyleSupport('webkitLineClamp'));\n      setIsTextOverflowSupport(isStyleSupport('textOverflow'));\n    }\n  }, [needMeasureEllipsis, enableEllipsis]);\n  const [cssEllipsis, setCssEllipsis] = React.useState(mergedEnableEllipsis);\n  const canUseCssEllipsis = React.useMemo(() => {\n    if (needMeasureEllipsis) {\n      return false;\n    }\n    if (rows === 1) {\n      return isTextOverflowSupport;\n    }\n    return isLineClampSupport;\n  }, [needMeasureEllipsis, isTextOverflowSupport, isLineClampSupport]);\n  // We use effect to change from css ellipsis to js ellipsis.\n  // To make SSR still can see the ellipsis.\n  useLayoutEffect(() => {\n    setCssEllipsis(canUseCssEllipsis && mergedEnableEllipsis);\n  }, [canUseCssEllipsis, mergedEnableEllipsis]);\n  const isMergedEllipsis = mergedEnableEllipsis && (cssEllipsis ? isNativeEllipsis : isJsEllipsis);\n  const cssTextOverflow = mergedEnableEllipsis && rows === 1 && cssEllipsis;\n  const cssLineClamp = mergedEnableEllipsis && rows > 1 && cssEllipsis;\n  // >>>>> Expand\n  const onExpandClick = (e, info) => {\n    var _a;\n    setExpanded(info.expanded);\n    (_a = ellipsisConfig.onExpand) === null || _a === void 0 ? void 0 : _a.call(ellipsisConfig, e, info);\n  };\n  const [ellipsisWidth, setEllipsisWidth] = React.useState(0);\n  const onResize = _ref2 => {\n    let {\n      offsetWidth\n    } = _ref2;\n    setEllipsisWidth(offsetWidth);\n  };\n  // >>>>> JS Ellipsis\n  const onJsEllipsis = jsEllipsis => {\n    var _a;\n    setIsJsEllipsis(jsEllipsis);\n    // Trigger if changed\n    if (isJsEllipsis !== jsEllipsis) {\n      (_a = ellipsisConfig.onEllipsis) === null || _a === void 0 ? void 0 : _a.call(ellipsisConfig, jsEllipsis);\n    }\n  };\n  // >>>>> Native ellipsis\n  React.useEffect(() => {\n    const textEle = typographyRef.current;\n    if (enableEllipsis && cssEllipsis && textEle) {\n      const currentEllipsis = isEleEllipsis(textEle);\n      if (isNativeEllipsis !== currentEllipsis) {\n        setIsNativeEllipsis(currentEllipsis);\n      }\n    }\n  }, [enableEllipsis, cssEllipsis, children, cssLineClamp, isNativeVisible, ellipsisWidth]);\n  // https://github.com/ant-design/ant-design/issues/36786\n  // Use IntersectionObserver to check if element is invisible\n  React.useEffect(() => {\n    const textEle = typographyRef.current;\n    if (typeof IntersectionObserver === 'undefined' || !textEle || !cssEllipsis || !mergedEnableEllipsis) {\n      return;\n    }\n    /* eslint-disable-next-line compat/compat */\n    const observer = new IntersectionObserver(() => {\n      setIsNativeVisible(!!textEle.offsetParent);\n    });\n    observer.observe(textEle);\n    return () => {\n      observer.disconnect();\n    };\n  }, [cssEllipsis, mergedEnableEllipsis]);\n  // ========================== Tooltip ===========================\n  const tooltipProps = useTooltipProps(ellipsisConfig.tooltip, editConfig.text, children);\n  const topAriaLabel = React.useMemo(() => {\n    if (!enableEllipsis || cssEllipsis) {\n      return undefined;\n    }\n    return [editConfig.text, children, title, tooltipProps.title].find(isValidText);\n  }, [enableEllipsis, cssEllipsis, title, tooltipProps.title, isMergedEllipsis]);\n  // =========================== Render ===========================\n  // >>>>>>>>>>> Editing input\n  if (editing) {\n    return /*#__PURE__*/React.createElement(Editable, {\n      value: (_a = editConfig.text) !== null && _a !== void 0 ? _a : typeof children === 'string' ? children : '',\n      onSave: onEditChange,\n      onCancel: onEditCancel,\n      onEnd: editConfig.onEnd,\n      prefixCls: prefixCls,\n      className: className,\n      style: style,\n      direction: direction,\n      component: component,\n      maxLength: editConfig.maxLength,\n      autoSize: editConfig.autoSize,\n      enterIcon: editConfig.enterIcon\n    });\n  }\n  // >>>>>>>>>>> Typography\n  // Expand\n  const renderExpand = () => {\n    const {\n      expandable,\n      symbol\n    } = ellipsisConfig;\n    return expandable ? (/*#__PURE__*/React.createElement(\"button\", {\n      type: \"button\",\n      key: \"expand\",\n      className: `${prefixCls}-${expanded ? 'collapse' : 'expand'}`,\n      onClick: e => onExpandClick(e, {\n        expanded: !expanded\n      }),\n      \"aria-label\": expanded ? textLocale.collapse : textLocale === null || textLocale === void 0 ? void 0 : textLocale.expand\n    }, typeof symbol === 'function' ? symbol(expanded) : symbol)) : null;\n  };\n  // Edit\n  const renderEdit = () => {\n    if (!enableEdit) {\n      return;\n    }\n    const {\n      icon,\n      tooltip,\n      tabIndex\n    } = editConfig;\n    const editTitle = toArray(tooltip)[0] || (textLocale === null || textLocale === void 0 ? void 0 : textLocale.edit);\n    const ariaLabel = typeof editTitle === 'string' ? editTitle : '';\n    return triggerType.includes('icon') ? (/*#__PURE__*/React.createElement(Tooltip, {\n      key: \"edit\",\n      title: tooltip === false ? '' : editTitle\n    }, /*#__PURE__*/React.createElement(\"button\", {\n      type: \"button\",\n      ref: editIconRef,\n      className: `${prefixCls}-edit`,\n      onClick: onEditClick,\n      \"aria-label\": ariaLabel,\n      tabIndex: tabIndex\n    }, icon || /*#__PURE__*/React.createElement(EditOutlined, {\n      role: \"button\"\n    })))) : null;\n  };\n  // Copy\n  const renderCopy = () => {\n    if (!enableCopy) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(CopyBtn, Object.assign({\n      key: \"copy\"\n    }, copyConfig, {\n      prefixCls: prefixCls,\n      copied: copied,\n      locale: textLocale,\n      onCopy: onCopyClick,\n      loading: copyLoading,\n      iconOnly: children === null || children === undefined\n    }));\n  };\n  const renderOperations = canEllipsis => [canEllipsis && renderExpand(), renderEdit(), renderCopy()];\n  const renderEllipsis = canEllipsis => [canEllipsis && !expanded && (/*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": true,\n    key: \"ellipsis\"\n  }, ELLIPSIS_STR)), ellipsisConfig.suffix, renderOperations(canEllipsis)];\n  return /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onResize,\n    disabled: !mergedEnableEllipsis\n  }, resizeRef => (/*#__PURE__*/React.createElement(EllipsisTooltip, {\n    tooltipProps: tooltipProps,\n    enableEllipsis: mergedEnableEllipsis,\n    isEllipsis: isMergedEllipsis\n  }, /*#__PURE__*/React.createElement(Typography, Object.assign({\n    className: classNames({\n      [`${prefixCls}-${type}`]: type,\n      [`${prefixCls}-disabled`]: disabled,\n      [`${prefixCls}-ellipsis`]: enableEllipsis,\n      [`${prefixCls}-ellipsis-single-line`]: cssTextOverflow,\n      [`${prefixCls}-ellipsis-multiple-line`]: cssLineClamp\n    }, className),\n    prefixCls: customizePrefixCls,\n    style: Object.assign(Object.assign({}, style), {\n      WebkitLineClamp: cssLineClamp ? rows : undefined\n    }),\n    component: component,\n    ref: composeRef(resizeRef, typographyRef, ref),\n    direction: direction,\n    onClick: triggerType.includes('text') ? onEditClick : undefined,\n    \"aria-label\": topAriaLabel === null || topAriaLabel === void 0 ? void 0 : topAriaLabel.toString(),\n    title: title\n  }, textProps), /*#__PURE__*/React.createElement(Ellipsis, {\n    enableMeasure: mergedEnableEllipsis && !cssEllipsis,\n    text: children,\n    rows: rows,\n    width: ellipsisWidth,\n    onEllipsis: onJsEllipsis,\n    expanded: expanded,\n    miscDeps: [copied, expanded, copyLoading, enableEdit, enableCopy, textLocale]\n  }, (node, canEllipsis) => wrapperDecorations(props, /*#__PURE__*/React.createElement(React.Fragment, null, node.length > 0 && canEllipsis && !expanded && topAriaLabel ? (/*#__PURE__*/React.createElement(\"span\", {\n    key: \"show-content\",\n    \"aria-hidden\": true\n  }, node)) : node, renderEllipsis(canEllipsis))))))));\n});\nexport default Base;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\nimport Base from './Base';\nconst Link = /*#__PURE__*/React.forwardRef((_a, ref) => {\n  var {\n      ellipsis,\n      rel\n    } = _a,\n    restProps = __rest(_a, [\"ellipsis\", \"rel\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Typography.Link');\n    process.env.NODE_ENV !== \"production\" ? warning(typeof ellipsis !== 'object', 'usage', '`ellipsis` only supports boolean value.') : void 0;\n  }\n  const mergedProps = Object.assign(Object.assign({}, restProps), {\n    rel: rel === undefined && restProps.target === '_blank' ? 'noopener noreferrer' : rel\n  });\n  // @ts-expect-error: https://github.com/ant-design/ant-design/issues/26622\n  delete mergedProps.navigate;\n  return /*#__PURE__*/React.createElement(Base, Object.assign({}, mergedProps, {\n    ref: ref,\n    ellipsis: !!ellipsis,\n    component: \"a\"\n  }));\n});\nexport default Link;","\"use client\";\n\nimport * as React from 'react';\nimport Base from './Base';\nconst Paragraph = /*#__PURE__*/React.forwardRef((props, ref) => (/*#__PURE__*/React.createElement(Base, Object.assign({\n  ref: ref\n}, props, {\n  component: \"div\"\n}))));\nexport default Paragraph;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport omit from \"rc-util/es/omit\";\nimport { devUseWarning } from '../_util/warning';\nimport Base from './Base';\nconst Text = (_a, ref) => {\n  var {\n      ellipsis\n    } = _a,\n    restProps = __rest(_a, [\"ellipsis\"]);\n  const mergedEllipsis = React.useMemo(() => {\n    if (ellipsis && typeof ellipsis === 'object') {\n      return omit(ellipsis, ['expandable', 'rows']);\n    }\n    return ellipsis;\n  }, [ellipsis]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Typography.Text');\n    process.env.NODE_ENV !== \"production\" ? warning(typeof ellipsis !== 'object' || !ellipsis || !('expandable' in ellipsis) && !('rows' in ellipsis), 'usage', '`ellipsis` do not support `expandable` or `rows` props.') : void 0;\n  }\n  return /*#__PURE__*/React.createElement(Base, Object.assign({\n    ref: ref\n  }, restProps, {\n    ellipsis: mergedEllipsis,\n    component: \"span\"\n  }));\n};\nexport default /*#__PURE__*/React.forwardRef(Text);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\nimport Base from './Base';\nconst TITLE_ELE_LIST = [1, 2, 3, 4, 5];\nconst Title = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      level = 1\n    } = props,\n    restProps = __rest(props, [\"level\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Typography.Title');\n    process.env.NODE_ENV !== \"production\" ? warning(TITLE_ELE_LIST.includes(level), 'usage', 'Title only accept `1 | 2 | 3 | 4 | 5` as `level` value. And `5` need 4.6.0+ version.') : void 0;\n  }\n  const component = TITLE_ELE_LIST.includes(level) ? `h${level}` : `h1`;\n  return /*#__PURE__*/React.createElement(Base, Object.assign({\n    ref: ref\n  }, restProps, {\n    component: component\n  }));\n});\nexport default Title;","\"use client\";\n\nimport Link from './Link';\nimport Paragraph from './Paragraph';\nimport Text from './Text';\nimport Title from './Title';\nimport OriginTypography from './Typography';\nconst Typography = OriginTypography;\nTypography.Text = Text;\nTypography.Link = Link;\nTypography.Title = Title;\nTypography.Paragraph = Paragraph;\nexport default Typography;","\"use client\";\n\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { FormItemInputContext } from '../form/context';\nimport useStyle from './style';\n/** @deprecated Please use `Space.Compact` */\nconst Group = props => {\n  const {\n    getPrefixCls,\n    direction\n  } = useContext(ConfigContext);\n  const {\n    prefixCls: customizePrefixCls,\n    className\n  } = props;\n  const prefixCls = getPrefixCls('input-group', customizePrefixCls);\n  const inputPrefixCls = getPrefixCls('input');\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(inputPrefixCls);\n  const cls = classNames(prefixCls, cssVarCls, {\n    [`${prefixCls}-lg`]: props.size === 'large',\n    [`${prefixCls}-sm`]: props.size === 'small',\n    [`${prefixCls}-compact`]: props.compact,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, hashId, className);\n  const formItemContext = useContext(FormItemInputContext);\n  const groupFormItemContext = useMemo(() => Object.assign(Object.assign({}, formItemContext), {\n    isFormItemInput: false\n  }), [formItemContext]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Input.Group');\n    warning.deprecated(false, 'Input.Group', 'Space.Compact');\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"span\", {\n    className: cls,\n    style: props.style,\n    onMouseEnter: props.onMouseEnter,\n    onMouseLeave: props.onMouseLeave,\n    onFocus: props.onFocus,\n    onBlur: props.onBlur\n  }, /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n    value: groupFormItemContext\n  }, props.children)));\n};\nexport default Group;","import { useEffect, useRef } from 'react';\nexport default function useRemovePasswordTimeout(inputRef, triggerOnMount) {\n  const removePasswordTimeoutRef = useRef([]);\n  const removePasswordTimeout = () => {\n    removePasswordTimeoutRef.current.push(setTimeout(() => {\n      var _a, _b, _c, _d;\n      if (((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input) && ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.input.getAttribute('type')) === 'password' && ((_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.input.hasAttribute('value'))) {\n        (_d = inputRef.current) === null || _d === void 0 ? void 0 : _d.input.removeAttribute('value');\n      }\n    }));\n  };\n  useEffect(() => {\n    if (triggerOnMount) {\n      removePasswordTimeout();\n    }\n    return () => removePasswordTimeoutRef.current.forEach(timer => {\n      if (timer) {\n        clearTimeout(timer);\n      }\n    });\n  }, []);\n  return removePasswordTimeout;\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React, { forwardRef, useContext, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport RcInput from 'rc-input';\nimport { triggerFocus } from \"rc-input/es/utils/commonUtils\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport ContextIsolator from '../_util/ContextIsolator';\nimport getAllowClear from '../_util/getAllowClear';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport useVariant from '../form/hooks/useVariants';\nimport { useCompactItemContext } from '../space/Compact';\nimport useRemovePasswordTimeout from './hooks/useRemovePasswordTimeout';\nimport useStyle, { useSharedStyle } from './style';\nimport { hasPrefixSuffix } from './utils';\nexport { triggerFocus };\nconst Input = /*#__PURE__*/forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      bordered = true,\n      status: customStatus,\n      size: customSize,\n      disabled: customDisabled,\n      onBlur,\n      onFocus,\n      suffix,\n      allowClear,\n      addonAfter,\n      addonBefore,\n      className,\n      style,\n      styles,\n      rootClassName,\n      onChange,\n      classNames: classes,\n      variant: customVariant\n    } = props,\n    rest = __rest(props, [\"prefixCls\", \"bordered\", \"status\", \"size\", \"disabled\", \"onBlur\", \"onFocus\", \"suffix\", \"allowClear\", \"addonAfter\", \"addonBefore\", \"className\", \"style\", \"styles\", \"rootClassName\", \"onChange\", \"classNames\", \"variant\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const {\n      deprecated\n    } = devUseWarning('Input');\n    deprecated(!('bordered' in props), 'bordered', 'variant');\n  }\n  const {\n    getPrefixCls,\n    direction,\n    allowClear: contextAllowClear,\n    autoComplete: contextAutoComplete,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('input');\n  const prefixCls = getPrefixCls('input', customizePrefixCls);\n  const inputRef = useRef(null);\n  // Style\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapSharedCSSVar, hashId, cssVarCls] = useSharedStyle(prefixCls, rootClassName);\n  const [wrapCSSVar] = useStyle(prefixCls, rootCls);\n  // ===================== Compact Item =====================\n  const {\n    compactSize,\n    compactItemClassnames\n  } = useCompactItemContext(prefixCls, direction);\n  // ===================== Size =====================\n  const mergedSize = useSize(ctx => {\n    var _a;\n    return (_a = customSize !== null && customSize !== void 0 ? customSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n  });\n  // ===================== Disabled =====================\n  const disabled = React.useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  // ===================== Status =====================\n  const {\n    status: contextStatus,\n    hasFeedback,\n    feedbackIcon\n  } = useContext(FormItemInputContext);\n  const mergedStatus = getMergedStatus(contextStatus, customStatus);\n  // ===================== Focus warning =====================\n  const inputHasPrefixSuffix = hasPrefixSuffix(props) || !!hasFeedback;\n  const prevHasPrefixSuffix = useRef(inputHasPrefixSuffix);\n  /* eslint-disable react-hooks/rules-of-hooks */\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Input');\n    useEffect(() => {\n      var _a;\n      if (inputHasPrefixSuffix && !prevHasPrefixSuffix.current) {\n        process.env.NODE_ENV !== \"production\" ? warning(document.activeElement === ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input), 'usage', `When Input is focused, dynamic add or remove prefix / suffix will make it lose focus caused by dom structure change. Read more: https://ant.design/components/input/#FAQ`) : void 0;\n      }\n      prevHasPrefixSuffix.current = inputHasPrefixSuffix;\n    }, [inputHasPrefixSuffix]);\n  }\n  /* eslint-enable */\n  // ===================== Remove Password value =====================\n  const removePasswordTimeout = useRemovePasswordTimeout(inputRef, true);\n  const handleBlur = e => {\n    removePasswordTimeout();\n    onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n  };\n  const handleFocus = e => {\n    removePasswordTimeout();\n    onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n  };\n  const handleChange = e => {\n    removePasswordTimeout();\n    onChange === null || onChange === void 0 ? void 0 : onChange(e);\n  };\n  const suffixNode = (hasFeedback || suffix) && (/*#__PURE__*/React.createElement(React.Fragment, null, suffix, hasFeedback && feedbackIcon));\n  const mergedAllowClear = getAllowClear(allowClear !== null && allowClear !== void 0 ? allowClear : contextAllowClear);\n  const [variant, enableVariantCls] = useVariant('input', customVariant, bordered);\n  return wrapSharedCSSVar(wrapCSSVar(/*#__PURE__*/React.createElement(RcInput, Object.assign({\n    ref: composeRef(ref, inputRef),\n    prefixCls: prefixCls,\n    autoComplete: contextAutoComplete\n  }, rest, {\n    disabled: mergedDisabled,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    style: Object.assign(Object.assign({}, contextStyle), style),\n    styles: Object.assign(Object.assign({}, contextStyles), styles),\n    suffix: suffixNode,\n    allowClear: mergedAllowClear,\n    className: classNames(className, rootClassName, cssVarCls, rootCls, compactItemClassnames, contextClassName),\n    onChange: handleChange,\n    addonBefore: addonBefore && (/*#__PURE__*/React.createElement(ContextIsolator, {\n      form: true,\n      space: true\n    }, addonBefore)),\n    addonAfter: addonAfter && (/*#__PURE__*/React.createElement(ContextIsolator, {\n      form: true,\n      space: true\n    }, addonAfter)),\n    classNames: Object.assign(Object.assign(Object.assign({}, classes), contextClassNames), {\n      input: classNames({\n        [`${prefixCls}-sm`]: mergedSize === 'small',\n        [`${prefixCls}-lg`]: mergedSize === 'large',\n        [`${prefixCls}-rtl`]: direction === 'rtl'\n      }, classes === null || classes === void 0 ? void 0 : classes.input, contextClassNames.input, hashId),\n      variant: classNames({\n        [`${prefixCls}-${variant}`]: enableVariantCls\n      }, getStatusClassNames(prefixCls, mergedStatus)),\n      affixWrapper: classNames({\n        [`${prefixCls}-affix-wrapper-sm`]: mergedSize === 'small',\n        [`${prefixCls}-affix-wrapper-lg`]: mergedSize === 'large',\n        [`${prefixCls}-affix-wrapper-rtl`]: direction === 'rtl'\n      }, hashId),\n      wrapper: classNames({\n        [`${prefixCls}-group-rtl`]: direction === 'rtl'\n      }, hashId),\n      groupWrapper: classNames({\n        [`${prefixCls}-group-wrapper-sm`]: mergedSize === 'small',\n        [`${prefixCls}-group-wrapper-lg`]: mergedSize === 'large',\n        [`${prefixCls}-group-wrapper-rtl`]: direction === 'rtl',\n        [`${prefixCls}-group-wrapper-${variant}`]: enableVariantCls\n      }, getStatusClassNames(`${prefixCls}-group-wrapper`, mergedStatus, hasFeedback), hashId)\n    })\n  }))));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Input.displayName = 'Input';\n}\nexport default Input;","export function hasPrefixSuffix(props) {\n  return !!(props.prefix || props.suffix || props.allowClear || props.showCount);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar attributes = \"accept acceptCharset accessKey action allowFullScreen allowTransparency\\n    alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\\n    charSet checked classID className colSpan cols content contentEditable contextMenu\\n    controls coords crossOrigin data dateTime default defer dir disabled download draggable\\n    encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\\n    headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\\n    is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\\n    mediaGroup method min minLength multiple muted name noValidate nonce open\\n    optimum pattern placeholder poster preload radioGroup readOnly rel required\\n    reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\\n    shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\\n    summary tabIndex target title type useMap value width wmode wrap\";\nvar eventsName = \"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\\n    onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\\n    onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\\n    onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\\n    onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\\n    onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\\n    onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError\";\nvar propList = \"\".concat(attributes, \" \").concat(eventsName).split(/[\\s\\n]+/);\n\n/* eslint-enable max-len */\nvar ariaPrefix = 'aria-';\nvar dataPrefix = 'data-';\nfunction match(key, prefix) {\n  return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n  var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var mergedConfig;\n  if (ariaOnly === false) {\n    mergedConfig = {\n      aria: true,\n      data: true,\n      attr: true\n    };\n  } else if (ariaOnly === true) {\n    mergedConfig = {\n      aria: true\n    };\n  } else {\n    mergedConfig = _objectSpread({}, ariaOnly);\n  }\n  var attrs = {};\n  Object.keys(props).forEach(function (key) {\n    if (\n    // Aria\n    mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n    // Data\n    mergedConfig.data && match(key, dataPrefix) ||\n    // Attr\n    mergedConfig.attr && propList.includes(key)) {\n      attrs[key] = props[key];\n    }\n  });\n  return attrs;\n}","import { genStyleHooks, mergeToken } from '../../theme/internal';\nimport { initComponentToken, initInputToken } from './token';\n// =============================== OTP ================================\nconst genOTPStyle = token => {\n  const {\n    componentCls,\n    paddingXS\n  } = token;\n  return {\n    [componentCls]: {\n      display: 'inline-flex',\n      alignItems: 'center',\n      flexWrap: 'nowrap',\n      columnGap: paddingXS,\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      [`${componentCls}-input`]: {\n        textAlign: 'center',\n        paddingInline: token.paddingXXS\n      },\n      // ================= Size =================\n      [`&${componentCls}-sm ${componentCls}-input`]: {\n        paddingInline: token.calc(token.paddingXXS).div(2).equal()\n      },\n      [`&${componentCls}-lg ${componentCls}-input`]: {\n        paddingInline: token.paddingXS\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks(['Input', 'OTP'], token => {\n  const inputToken = mergeToken(token, initInputToken(token));\n  return [genOTPStyle(inputToken)];\n}, initComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nimport Input from '../Input';\nconst OTPInput = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      value,\n      onChange,\n      onActiveChange,\n      index,\n      mask\n    } = props,\n    restProps = __rest(props, [\"value\", \"onChange\", \"onActiveChange\", \"index\", \"mask\"]);\n  const internalValue = value && typeof mask === 'string' ? mask : value;\n  const onInternalChange = e => {\n    onChange(index, e.target.value);\n  };\n  // ========================== Ref ===========================\n  const inputRef = React.useRef(null);\n  React.useImperativeHandle(ref, () => inputRef.current);\n  // ========================= Focus ==========================\n  const syncSelection = () => {\n    raf(() => {\n      var _a;\n      const inputEle = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input;\n      if (document.activeElement === inputEle && inputEle) {\n        inputEle.select();\n      }\n    });\n  };\n  // ======================== Keyboard ========================\n  const onInternalKeyDown = event => {\n    const {\n      key,\n      ctrlKey,\n      metaKey\n    } = event;\n    if (key === 'ArrowLeft') {\n      onActiveChange(index - 1);\n    } else if (key === 'ArrowRight') {\n      onActiveChange(index + 1);\n    } else if (key === 'z' && (ctrlKey || metaKey)) {\n      event.preventDefault();\n    }\n    syncSelection();\n  };\n  const onInternalKeyUp = e => {\n    if (e.key === 'Backspace' && !value) {\n      onActiveChange(index - 1);\n    }\n    syncSelection();\n  };\n  // ========================= Render =========================\n  return /*#__PURE__*/React.createElement(Input, Object.assign({\n    type: mask === true ? 'password' : 'text'\n  }, restProps, {\n    ref: inputRef,\n    value: internalValue,\n    onInput: onInternalChange,\n    onFocus: syncSelection,\n    onKeyDown: onInternalKeyDown,\n    onKeyUp: onInternalKeyUp,\n    onMouseDown: syncSelection,\n    onMouseUp: syncSelection\n  }));\n});\nexport default OTPInput;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport { getMergedStatus } from '../../_util/statusUtils';\nimport { devUseWarning } from '../../_util/warning';\nimport { ConfigContext } from '../../config-provider';\nimport useSize from '../../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../../form/context';\nimport useStyle from '../style/otp';\nimport OTPInput from './OTPInput';\nfunction strToArr(str) {\n  return (str || '').split('');\n}\nconst OTP = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      length = 6,\n      size: customSize,\n      defaultValue,\n      value,\n      onChange,\n      formatter,\n      separator,\n      variant,\n      disabled,\n      status: customStatus,\n      autoFocus,\n      mask,\n      type,\n      onInput,\n      inputMode\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"length\", \"size\", \"defaultValue\", \"value\", \"onChange\", \"formatter\", \"separator\", \"variant\", \"disabled\", \"status\", \"autoFocus\", \"mask\", \"type\", \"onInput\", \"inputMode\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Input.OTP');\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof mask === 'string' && mask.length > 1), 'usage', '`mask` prop should be a single character.') : void 0;\n  }\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('otp', customizePrefixCls);\n  const domAttrs = pickAttrs(restProps, {\n    aria: true,\n    data: true,\n    attr: true\n  });\n  // ========================= Root =========================\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  // ========================= Size =========================\n  const mergedSize = useSize(ctx => customSize !== null && customSize !== void 0 ? customSize : ctx);\n  // ======================== Status ========================\n  const formContext = React.useContext(FormItemInputContext);\n  const mergedStatus = getMergedStatus(formContext.status, customStatus);\n  const proxyFormContext = React.useMemo(() => Object.assign(Object.assign({}, formContext), {\n    status: mergedStatus,\n    hasFeedback: false,\n    feedbackIcon: null\n  }), [formContext, mergedStatus]);\n  // ========================= Refs =========================\n  const containerRef = React.useRef(null);\n  const refs = React.useRef({});\n  React.useImperativeHandle(ref, () => ({\n    focus: () => {\n      var _a;\n      (_a = refs.current[0]) === null || _a === void 0 ? void 0 : _a.focus();\n    },\n    blur: () => {\n      var _a;\n      for (let i = 0; i < length; i += 1) {\n        (_a = refs.current[i]) === null || _a === void 0 ? void 0 : _a.blur();\n      }\n    },\n    nativeElement: containerRef.current\n  }));\n  // ======================= Formatter ======================\n  const internalFormatter = txt => formatter ? formatter(txt) : txt;\n  // ======================== Values ========================\n  const [valueCells, setValueCells] = React.useState(strToArr(internalFormatter(defaultValue || '')));\n  React.useEffect(() => {\n    if (value !== undefined) {\n      setValueCells(strToArr(value));\n    }\n  }, [value]);\n  const triggerValueCellsChange = useEvent(nextValueCells => {\n    setValueCells(nextValueCells);\n    if (onInput) {\n      onInput(nextValueCells);\n    }\n    // Trigger if all cells are filled\n    if (onChange && nextValueCells.length === length && nextValueCells.every(c => c) && nextValueCells.some((c, index) => valueCells[index] !== c)) {\n      onChange(nextValueCells.join(''));\n    }\n  });\n  const patchValue = useEvent((index, txt) => {\n    let nextCells = _toConsumableArray(valueCells);\n    // Fill cells till index\n    for (let i = 0; i < index; i += 1) {\n      if (!nextCells[i]) {\n        nextCells[i] = '';\n      }\n    }\n    if (txt.length <= 1) {\n      nextCells[index] = txt;\n    } else {\n      nextCells = nextCells.slice(0, index).concat(strToArr(txt));\n    }\n    nextCells = nextCells.slice(0, length);\n    // Clean the last empty cell\n    for (let i = nextCells.length - 1; i >= 0; i -= 1) {\n      if (nextCells[i]) {\n        break;\n      }\n      nextCells.pop();\n    }\n    // Format if needed\n    const formattedValue = internalFormatter(nextCells.map(c => c || ' ').join(''));\n    nextCells = strToArr(formattedValue).map((c, i) => {\n      if (c === ' ' && !nextCells[i]) {\n        return nextCells[i];\n      }\n      return c;\n    });\n    return nextCells;\n  });\n  // ======================== Change ========================\n  const onInputChange = (index, txt) => {\n    var _a;\n    const nextCells = patchValue(index, txt);\n    const nextIndex = Math.min(index + txt.length, length - 1);\n    if (nextIndex !== index && nextCells[index] !== undefined) {\n      (_a = refs.current[nextIndex]) === null || _a === void 0 ? void 0 : _a.focus();\n    }\n    triggerValueCellsChange(nextCells);\n  };\n  const onInputActiveChange = nextIndex => {\n    var _a;\n    (_a = refs.current[nextIndex]) === null || _a === void 0 ? void 0 : _a.focus();\n  };\n  // ======================== Render ========================\n  const inputSharedProps = {\n    variant,\n    disabled,\n    status: mergedStatus,\n    mask,\n    type,\n    inputMode\n  };\n  const renderSeparator = index => {\n    const result = typeof separator === 'function' ? separator(index) : separator;\n    return result ? /*#__PURE__*/React.createElement(\"span\", {\n      className: `${prefixCls}-separator`\n    }, result) : null;\n  };\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({}, domAttrs, {\n    ref: containerRef,\n    className: classNames(prefixCls, {\n      [`${prefixCls}-sm`]: mergedSize === 'small',\n      [`${prefixCls}-lg`]: mergedSize === 'large',\n      [`${prefixCls}-rtl`]: direction === 'rtl'\n    }, cssVarCls, hashId)\n  }), /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n    value: proxyFormContext\n  }, Array.from({\n    length\n  }).map((_, index) => {\n    const key = `otp-${index}`;\n    const singleValue = valueCells[index] || '';\n    return /*#__PURE__*/React.createElement(React.Fragment, {\n      key: key\n    }, /*#__PURE__*/React.createElement(OTPInput, Object.assign({\n      ref: inputEle => {\n        refs.current[index] = inputEle;\n      },\n      index: index,\n      size: mergedSize,\n      htmlSize: 1,\n      className: `${prefixCls}-input`,\n      onChange: onInputChange,\n      value: singleValue,\n      onActiveChange: onInputActiveChange,\n      autoFocus: index === 0 && autoFocus\n    }, inputSharedProps)), separator && index < length - 1 && renderSeparator(index));\n  }))));\n});\nexport default OTP;","// This icon file is generated automatically.\nvar EyeInvisibleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\" } }] }, \"name\": \"eye-invisible\", \"theme\": \"outlined\" };\nexport default EyeInvisibleOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EyeInvisibleOutlinedSvg from \"@ant-design/icons-svg/es/asn/EyeInvisibleOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EyeInvisibleOutlined = function EyeInvisibleOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: EyeInvisibleOutlinedSvg\n  }));\n};\n\n/**![eye-invisible](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk0Mi4yIDQ4Ni4yUTg4OS40NyAzNzUuMTEgODE2LjcgMzA1bC01MC44OCA1MC44OEM4MDcuMzEgMzk1LjUzIDg0My40NSA0NDcuNCA4NzQuNyA1MTIgNzkxLjUgNjg0LjIgNjczLjQgNzY2IDUxMiA3NjZxLTcyLjY3IDAtMTMzLjg3LTIyLjM4TDMyMyA3OTguNzVRNDA4IDgzOCA1MTIgODM4cTI4OC4zIDAgNDMwLjItMzAwLjNhNjAuMjkgNjAuMjkgMCAwMDAtNTEuNXptLTYzLjU3LTMyMC42NEw4MzYgMTIyLjg4YTggOCAwIDAwLTExLjMyIDBMNzE1LjMxIDIzMi4yUTYyNC44NiAxODYgNTEyIDE4NnEtMjg4LjMgMC00MzAuMiAzMDAuM2E2MC4zIDYwLjMgMCAwMDAgNTEuNXE1Ni42OSAxMTkuNCAxMzYuNSAxOTEuNDFMMTEyLjQ4IDgzNWE4IDggMCAwMDAgMTEuMzFMMTU1LjE3IDg4OWE4IDggMCAwMDExLjMxIDBsNzEyLjE1LTcxMi4xMmE4IDggMCAwMDAtMTEuMzJ6TTE0OS4zIDUxMkMyMzIuNiAzMzkuOCAzNTAuNyAyNTggNTEyIDI1OGM1NC41NCAwIDEwNC4xMyA5LjM2IDE0OS4xMiAyOC4zOWwtNzAuMyA3MC4zYTE3NiAxNzYgMCAwMC0yMzguMTMgMjM4LjEzbC04My40MiA4My40MkMyMjMuMSA2MzcuNDkgMTgzLjMgNTgyLjI4IDE0OS4zIDUxMnptMjQ2LjcgMGExMTIuMTEgMTEyLjExIDAgMDExNDYuMi0xMDYuNjlMNDAxLjMxIDU0Ni4yQTExMiAxMTIgMCAwMTM5NiA1MTJ6IiAvPjxwYXRoIGQ9Ik01MDggNjI0Yy0zLjQ2IDAtNi44Ny0uMTYtMTAuMjUtLjQ3bC01Mi44MiA1Mi44MmExNzYuMDkgMTc2LjA5IDAgMDAyMjcuNDItMjI3LjQybC01Mi44MiA1Mi44MmMuMzEgMy4zOC40NyA2Ljc5LjQ3IDEwLjI1YTExMS45NCAxMTEuOTQgMCAwMS0xMTIgMTEyeiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EyeInvisibleOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'EyeInvisibleOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar EyeOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\" } }] }, \"name\": \"eye\", \"theme\": \"outlined\" };\nexport default EyeOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EyeOutlinedSvg from \"@ant-design/icons-svg/es/asn/EyeOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EyeOutlined = function EyeOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: EyeOutlinedSvg\n  }));\n};\n\n/**![eye](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk0Mi4yIDQ4Ni4yQzg0Ny40IDI4Ni41IDcwNC4xIDE4NiA1MTIgMTg2Yy0xOTIuMiAwLTMzNS40IDEwMC41LTQzMC4yIDMwMC4zYTYwLjMgNjAuMyAwIDAwMCA1MS41QzE3Ni42IDczNy41IDMxOS45IDgzOCA1MTIgODM4YzE5Mi4yIDAgMzM1LjQtMTAwLjUgNDMwLjItMzAwLjMgNy43LTE2LjIgNy43LTM1IDAtNTEuNXpNNTEyIDc2NmMtMTYxLjMgMC0yNzkuNC04MS44LTM2Mi43LTI1NEMyMzIuNiAzMzkuOCAzNTAuNyAyNTggNTEyIDI1OGMxNjEuMyAwIDI3OS40IDgxLjggMzYyLjcgMjU0Qzc5MS41IDY4NC4yIDY3My40IDc2NiA1MTIgNzY2em0tNC00MzBjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em0wIDI4OGMtNjEuOSAwLTExMi01MC4xLTExMi0xMTJzNTAuMS0xMTIgMTEyLTExMiAxMTIgNTAuMSAxMTIgMTEyLTUwLjEgMTEyLTExMiAxMTJ6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EyeOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'EyeOutlined';\n}\nexport default RefIcon;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport EyeInvisibleOutlined from \"@ant-design/icons/es/icons/EyeInvisibleOutlined\";\nimport EyeOutlined from \"@ant-design/icons/es/icons/EyeOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useRemovePasswordTimeout from './hooks/useRemovePasswordTimeout';\nimport Input from './Input';\nconst defaultIconRender = visible => visible ? /*#__PURE__*/React.createElement(EyeOutlined, null) : /*#__PURE__*/React.createElement(EyeInvisibleOutlined, null);\nconst actionMap = {\n  click: 'onClick',\n  hover: 'onMouseOver'\n};\nconst Password = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n    disabled: customDisabled,\n    action = 'click',\n    visibilityToggle = true,\n    iconRender = defaultIconRender\n  } = props;\n  // ===================== Disabled =====================\n  const disabled = React.useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  const visibilityControlled = typeof visibilityToggle === 'object' && visibilityToggle.visible !== undefined;\n  const [visible, setVisible] = useState(() => visibilityControlled ? visibilityToggle.visible : false);\n  const inputRef = useRef(null);\n  React.useEffect(() => {\n    if (visibilityControlled) {\n      setVisible(visibilityToggle.visible);\n    }\n  }, [visibilityControlled, visibilityToggle]);\n  // Remove Password value\n  const removePasswordTimeout = useRemovePasswordTimeout(inputRef);\n  const onVisibleChange = () => {\n    var _a;\n    if (mergedDisabled) {\n      return;\n    }\n    if (visible) {\n      removePasswordTimeout();\n    }\n    const nextVisible = !visible;\n    setVisible(nextVisible);\n    if (typeof visibilityToggle === 'object') {\n      (_a = visibilityToggle.onVisibleChange) === null || _a === void 0 ? void 0 : _a.call(visibilityToggle, nextVisible);\n    }\n  };\n  const getIcon = prefixCls => {\n    const iconTrigger = actionMap[action] || '';\n    const icon = iconRender(visible);\n    const iconProps = {\n      [iconTrigger]: onVisibleChange,\n      className: `${prefixCls}-icon`,\n      key: 'passwordIcon',\n      onMouseDown: e => {\n        // Prevent focused state lost\n        // https://github.com/ant-design/ant-design/issues/15173\n        e.preventDefault();\n      },\n      onMouseUp: e => {\n        // Prevent caret position change\n        // https://github.com/ant-design/ant-design/issues/23524\n        e.preventDefault();\n      }\n    };\n    return /*#__PURE__*/React.cloneElement(/*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/React.createElement(\"span\", null, icon), iconProps);\n  };\n  const {\n      className,\n      prefixCls: customizePrefixCls,\n      inputPrefixCls: customizeInputPrefixCls,\n      size\n    } = props,\n    restProps = __rest(props, [\"className\", \"prefixCls\", \"inputPrefixCls\", \"size\"]);\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n  const prefixCls = getPrefixCls('input-password', customizePrefixCls);\n  const suffixIcon = visibilityToggle && getIcon(prefixCls);\n  const inputClassName = classNames(prefixCls, className, {\n    [`${prefixCls}-${size}`]: !!size\n  });\n  const omittedProps = Object.assign(Object.assign({}, omit(restProps, ['suffix', 'iconRender', 'visibilityToggle'])), {\n    type: visible ? 'text' : 'password',\n    className: inputClassName,\n    prefixCls: inputPrefixCls,\n    suffix: suffixIcon\n  });\n  if (size) {\n    omittedProps.size = size;\n  }\n  return /*#__PURE__*/React.createElement(Input, Object.assign({\n    ref: composeRef(ref, inputRef)\n  }, omittedProps));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Password.displayName = 'Input.Password';\n}\nexport default Password;","// This icon file is generated automatically.\nvar SearchOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\" } }] }, \"name\": \"search\", \"theme\": \"outlined\" };\nexport default SearchOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SearchOutlinedSvg from \"@ant-design/icons-svg/es/asn/SearchOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SearchOutlined = function SearchOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: SearchOutlinedSvg\n  }));\n};\n\n/**![search](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkwOS42IDg1NC41TDY0OS45IDU5NC44QzY5MC4yIDU0Mi43IDcxMiA0NzkgNzEyIDQxMmMwLTgwLjItMzEuMy0xNTUuNC04Ny45LTIxMi4xLTU2LjYtNTYuNy0xMzItODcuOS0yMTIuMS04Ny45cy0xNTUuNSAzMS4zLTIxMi4xIDg3LjlDMTQzLjIgMjU2LjUgMTEyIDMzMS44IDExMiA0MTJjMCA4MC4xIDMxLjMgMTU1LjUgODcuOSAyMTIuMUMyNTYuNSA2ODAuOCAzMzEuOCA3MTIgNDEyIDcxMmM2NyAwIDEzMC42LTIxLjggMTgyLjctNjJsMjU5LjcgMjU5LjZhOC4yIDguMiAwIDAwMTEuNiAwbDQzLjYtNDMuNWE4LjIgOC4yIDAgMDAwLTExLjZ6TTU3MC40IDU3MC40QzUyOCA2MTIuNyA0NzEuOCA2MzYgNDEyIDYzNnMtMTE2LTIzLjMtMTU4LjQtNjUuNkMyMTEuMyA1MjggMTg4IDQ3MS44IDE4OCA0MTJzMjMuMy0xMTYuMSA2NS42LTE1OC40QzI5NiAyMTEuMyAzNTIuMiAxODggNDEyIDE4OHMxMTYuMSAyMy4yIDE1OC40IDY1LjZTNjM2IDM1Mi4yIDYzNiA0MTJzLTIzLjMgMTE2LjEtNjUuNiAxNTguNHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SearchOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'SearchOutlined';\n}\nexport default RefIcon;","import { genComponentStyleHook } from '../../theme/internal';\nconst genWaveStyle = token => {\n  const {\n    componentCls,\n    colorPrimary\n  } = token;\n  return {\n    [componentCls]: {\n      position: 'absolute',\n      background: 'transparent',\n      pointerEvents: 'none',\n      boxSizing: 'border-box',\n      color: `var(--wave-color, ${colorPrimary})`,\n      boxShadow: `0 0 0 0 currentcolor`,\n      opacity: 0.2,\n      // =================== Motion ===================\n      '&.wave-motion-appear': {\n        transition: [`box-shadow 0.4s ${token.motionEaseOutCirc}`, `opacity 2s ${token.motionEaseOutCirc}`].join(','),\n        '&-active': {\n          boxShadow: `0 0 0 6px currentcolor`,\n          opacity: 0\n        },\n        '&.wave-quick': {\n          transition: [`box-shadow ${token.motionDurationSlow} ${token.motionEaseInOut}`, `opacity ${token.motionDurationSlow} ${token.motionEaseInOut}`].join(',')\n        }\n      }\n    }\n  };\n};\nexport default genComponentStyleHook('Wave', token => [genWaveStyle(token)]);","import { defaultPrefixCls } from '../../config-provider';\nexport const TARGET_CLS = `${defaultPrefixCls}-wave-target`;","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = _objectSpread({}, ReactDOM);\nvar version = fullClone.version,\n  reactRender = fullClone.render,\n  unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n  var mainVersion = Number((version || '').split('.')[0]);\n  if (mainVersion >= 18) {\n    createRoot = fullClone.createRoot;\n  }\n} catch (e) {\n  // Do nothing;\n}\nfunction toggleWarning(skip) {\n  var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && _typeof(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === 'object') {\n    __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n  }\n}\nvar MARK = '__rc_react_root__';\n\n// ========================== Render ==========================\n\nfunction modernRender(node, container) {\n  toggleWarning(true);\n  var root = container[MARK] || createRoot(container);\n  toggleWarning(false);\n  root.render(node);\n  container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n  reactRender === null || reactRender === void 0 || reactRender(node, container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n  if (process.env.NODE_ENV !== 'production') {\n    return legacyRender(node, container);\n  }\n}\nexport function render(node, container) {\n  if (createRoot) {\n    modernRender(node, container);\n    return;\n  }\n  legacyRender(node, container);\n}\n\n// ========================= Unmount ==========================\nfunction modernUnmount(_x) {\n  return _modernUnmount.apply(this, arguments);\n}\nfunction _modernUnmount() {\n  _modernUnmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(container) {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          return _context.abrupt(\"return\", Promise.resolve().then(function () {\n            var _container$MARK;\n            (_container$MARK = container[MARK]) === null || _container$MARK === void 0 || _container$MARK.unmount();\n            delete container[MARK];\n          }));\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n  return _modernUnmount.apply(this, arguments);\n}\nfunction legacyUnmount(container) {\n  unmountComponentAtNode(container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n  if (process.env.NODE_ENV !== 'production') {\n    return legacyUnmount(container);\n  }\n}\nexport function unmount(_x2) {\n  return _unmount.apply(this, arguments);\n}\nfunction _unmount() {\n  _unmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(container) {\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          if (!(createRoot !== undefined)) {\n            _context2.next = 2;\n            break;\n          }\n          return _context2.abrupt(\"return\", modernUnmount(container));\n        case 2:\n          legacyUnmount(container);\n        case 3:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n  return _unmount.apply(this, arguments);\n}","\"use client\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { render, unmount } from \"rc-util/es/React/render\";\nimport warning from '../_util/warning';\nconst defaultReactRender = (node, container) => {\n  // TODO: Remove in v6\n  // Warning for React 19\n  if (process.env.NODE_ENV !== 'production') {\n    const majorVersion = parseInt(React.version.split('.')[0], 10);\n    const fullKeys = Object.keys(ReactDOM);\n    process.env.NODE_ENV !== \"production\" ? warning(majorVersion < 19 || fullKeys.includes('createRoot'), 'compatible', 'antd v5 support React is 16 ~ 18. see https://u.ant.design/v5-for-19 for compatible.') : void 0;\n  }\n  render(node, container);\n  return () => {\n    return unmount(container);\n  };\n};\nlet unstableRender = defaultReactRender;\n/**\n * @deprecated Set React render function for compatible usage.\n * This is internal usage only compatible with React 19.\n * And will be removed in next major version.\n */\nexport function unstableSetRender(render) {\n  unstableRender = render;\n}\nexport function getReactRender() {\n  return unstableRender;\n}","export function isValidWaveColor(color) {\n  return color && color !== '#fff' && color !== '#ffffff' && color !== 'rgb(255, 255, 255)' && color !== 'rgba(255, 255, 255, 1)' && !/rgba\\((?:\\d*, ){3}0\\)/.test(color) &&\n  // any transparent rgba color\n  color !== 'transparent';\n}\nexport function getTargetWaveColor(node) {\n  const {\n    borderTopColor,\n    borderColor,\n    backgroundColor\n  } = getComputedStyle(node);\n  if (isValidWaveColor(borderTopColor)) {\n    return borderTopColor;\n  }\n  if (isValidWaveColor(borderColor)) {\n    return borderColor;\n  }\n  if (isValidWaveColor(backgroundColor)) {\n    return backgroundColor;\n  }\n  return null;\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport raf from \"rc-util/es/raf\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport { getReactRender } from '../../config-provider/UnstableContext';\nimport { TARGET_CLS } from './interface';\nimport { getTargetWaveColor } from './util';\nfunction validateNum(value) {\n  return Number.isNaN(value) ? 0 : value;\n}\nconst WaveEffect = props => {\n  const {\n    className,\n    target,\n    component,\n    registerUnmount\n  } = props;\n  const divRef = React.useRef(null);\n  // ====================== Refs ======================\n  const unmountRef = React.useRef(null);\n  React.useEffect(() => {\n    unmountRef.current = registerUnmount();\n  }, []);\n  // ===================== Effect =====================\n  const [color, setWaveColor] = React.useState(null);\n  const [borderRadius, setBorderRadius] = React.useState([]);\n  const [left, setLeft] = React.useState(0);\n  const [top, setTop] = React.useState(0);\n  const [width, setWidth] = React.useState(0);\n  const [height, setHeight] = React.useState(0);\n  const [enabled, setEnabled] = React.useState(false);\n  const waveStyle = {\n    left,\n    top,\n    width,\n    height,\n    borderRadius: borderRadius.map(radius => `${radius}px`).join(' ')\n  };\n  if (color) {\n    waveStyle['--wave-color'] = color;\n  }\n  function syncPos() {\n    const nodeStyle = getComputedStyle(target);\n    // Get wave color from target\n    setWaveColor(getTargetWaveColor(target));\n    const isStatic = nodeStyle.position === 'static';\n    // Rect\n    const {\n      borderLeftWidth,\n      borderTopWidth\n    } = nodeStyle;\n    setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));\n    setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));\n    setWidth(target.offsetWidth);\n    setHeight(target.offsetHeight);\n    // Get border radius\n    const {\n      borderTopLeftRadius,\n      borderTopRightRadius,\n      borderBottomLeftRadius,\n      borderBottomRightRadius\n    } = nodeStyle;\n    setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map(radius => validateNum(parseFloat(radius))));\n  }\n  React.useEffect(() => {\n    if (target) {\n      // We need delay to check position here\n      // since UI may change after click\n      const id = raf(() => {\n        syncPos();\n        setEnabled(true);\n      });\n      // Add resize observer to follow size\n      let resizeObserver;\n      if (typeof ResizeObserver !== 'undefined') {\n        resizeObserver = new ResizeObserver(syncPos);\n        resizeObserver.observe(target);\n      }\n      return () => {\n        raf.cancel(id);\n        resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n      };\n    }\n  }, []);\n  if (!enabled) {\n    return null;\n  }\n  const isSmallComponent = (component === 'Checkbox' || component === 'Radio') && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: true,\n    motionAppear: true,\n    motionName: \"wave-motion\",\n    motionDeadline: 5000,\n    onAppearEnd: (_, event) => {\n      var _a, _b;\n      if (event.deadline || event.propertyName === 'opacity') {\n        const holder = (_a = divRef.current) === null || _a === void 0 ? void 0 : _a.parentElement;\n        (_b = unmountRef.current) === null || _b === void 0 ? void 0 : _b.call(unmountRef).then(() => {\n          holder === null || holder === void 0 ? void 0 : holder.remove();\n        });\n      }\n      return false;\n    }\n  }, (_ref, ref) => {\n    let {\n      className: motionClassName\n    } = _ref;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: composeRef(divRef, ref),\n      className: classNames(className, motionClassName, {\n        'wave-quick': isSmallComponent\n      }),\n      style: waveStyle\n    });\n  });\n};\nconst showWaveEffect = (target, info) => {\n  var _a;\n  const {\n    component\n  } = info;\n  // Skip for unchecked checkbox\n  if (component === 'Checkbox' && !((_a = target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.checked)) {\n    return;\n  }\n  // Create holder\n  const holder = document.createElement('div');\n  holder.style.position = 'absolute';\n  holder.style.left = '0px';\n  holder.style.top = '0px';\n  target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);\n  const reactRender = getReactRender();\n  let unmountCallback = null;\n  function registerUnmount() {\n    return unmountCallback;\n  }\n  unmountCallback = reactRender(/*#__PURE__*/React.createElement(WaveEffect, Object.assign({}, info, {\n    target: target,\n    registerUnmount: registerUnmount\n  })), holder);\n};\nexport default showWaveEffect;","import * as React from 'react';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport raf from \"rc-util/es/raf\";\nimport { ConfigContext } from '../../config-provider';\nimport useToken from '../../theme/useToken';\nimport { TARGET_CLS } from './interface';\nimport showWaveEffect from './WaveEffect';\nconst useWave = (nodeRef, className, component) => {\n  const {\n    wave\n  } = React.useContext(ConfigContext);\n  const [, token, hashId] = useToken();\n  const showWave = useEvent(event => {\n    const node = nodeRef.current;\n    if ((wave === null || wave === void 0 ? void 0 : wave.disabled) || !node) {\n      return;\n    }\n    const targetNode = node.querySelector(`.${TARGET_CLS}`) || node;\n    const {\n      showEffect\n    } = wave || {};\n    // Customize wave effect\n    (showEffect || showWaveEffect)(targetNode, {\n      className,\n      token,\n      component,\n      event,\n      hashId\n    });\n  });\n  const rafId = React.useRef(null);\n  // Merge trigger event into one for each frame\n  const showDebounceWave = event => {\n    raf.cancel(rafId.current);\n    rafId.current = raf(() => {\n      showWave(event);\n    });\n  };\n  return showDebounceWave;\n};\nexport default useWave;","import React, { useContext, useRef } from 'react';\nimport classNames from 'classnames';\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport { composeRef, getNodeRef, supportRef } from \"rc-util/es/ref\";\nimport { ConfigContext } from '../../config-provider';\nimport { cloneElement } from '../reactNode';\nimport useStyle from './style';\nimport useWave from './useWave';\nconst Wave = props => {\n  const {\n    children,\n    disabled,\n    component\n  } = props;\n  const {\n    getPrefixCls\n  } = useContext(ConfigContext);\n  const containerRef = useRef(null);\n  // ============================== Style ===============================\n  const prefixCls = getPrefixCls('wave');\n  const [, hashId] = useStyle(prefixCls);\n  // =============================== Wave ===============================\n  const showWave = useWave(containerRef, classNames(prefixCls, hashId), component);\n  // ============================== Effect ==============================\n  React.useEffect(() => {\n    const node = containerRef.current;\n    if (!node || node.nodeType !== 1 || disabled) {\n      return;\n    }\n    // Click handler\n    const onClick = e => {\n      // Fix radio button click twice\n      if (!isVisible(e.target) ||\n      // No need wave\n      !node.getAttribute || node.getAttribute('disabled') || node.disabled || node.className.includes('disabled') || node.className.includes('-leave')) {\n        return;\n      }\n      showWave(e);\n    };\n    // Bind events\n    node.addEventListener('click', onClick, true);\n    return () => {\n      node.removeEventListener('click', onClick, true);\n    };\n  }, [disabled]);\n  // ============================== Render ==============================\n  if (! /*#__PURE__*/React.isValidElement(children)) {\n    return children !== null && children !== void 0 ? children : null;\n  }\n  const ref = supportRef(children) ? composeRef(getNodeRef(children), containerRef) : containerRef;\n  return cloneElement(children, {\n    ref\n  });\n};\nif (process.env.NODE_ENV !== 'production') {\n  Wave.displayName = 'Wave';\n}\nexport default Wave;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { useToken } from '../theme/internal';\nexport const GroupSizeContext = /*#__PURE__*/React.createContext(undefined);\nconst ButtonGroup = props => {\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const {\n      prefixCls: customizePrefixCls,\n      size,\n      className\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"size\", \"className\"]);\n  const prefixCls = getPrefixCls('btn-group', customizePrefixCls);\n  const [,, hashId] = useToken();\n  const sizeCls = React.useMemo(() => {\n    switch (size) {\n      case 'large':\n        return 'lg';\n      case 'small':\n        return 'sm';\n      default:\n        return '';\n    }\n  }, [size]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Button.Group');\n    warning.deprecated(false, 'Button.Group', 'Space.Compact');\n    process.env.NODE_ENV !== \"production\" ? warning(!size || ['large', 'small', 'middle'].includes(size), 'usage', 'Invalid prop `size`.') : void 0;\n  }\n  const classes = classNames(prefixCls, {\n    [`${prefixCls}-${sizeCls}`]: sizeCls,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, hashId);\n  return /*#__PURE__*/React.createElement(GroupSizeContext.Provider, {\n    value: size\n  }, /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n    className: classes\n  })));\n};\nexport default ButtonGroup;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport React from 'react';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nimport { PresetColors } from '../theme/interface';\nconst rxTwoCNChar = /^[\\u4E00-\\u9FA5]{2}$/;\nexport const isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\nexport function convertLegacyProps(type) {\n  if (type === 'danger') {\n    return {\n      danger: true\n    };\n  }\n  return {\n    type\n  };\n}\nexport function isString(str) {\n  return typeof str === 'string';\n}\nexport function isUnBorderedButtonVariant(type) {\n  return type === 'text' || type === 'link';\n}\nfunction splitCNCharsBySpace(child, needInserted) {\n  if (child === null || child === undefined) {\n    return;\n  }\n  const SPACE = needInserted ? ' ' : '';\n  if (typeof child !== 'string' && typeof child !== 'number' && isString(child.type) && isTwoCNChar(child.props.children)) {\n    return cloneElement(child, {\n      children: child.props.children.split('').join(SPACE)\n    });\n  }\n  if (isString(child)) {\n    return isTwoCNChar(child) ? /*#__PURE__*/React.createElement(\"span\", null, child.split('').join(SPACE)) : /*#__PURE__*/React.createElement(\"span\", null, child);\n  }\n  if (isFragment(child)) {\n    return /*#__PURE__*/React.createElement(\"span\", null, child);\n  }\n  return child;\n}\nexport function spaceChildren(children, needInserted) {\n  let isPrevChildPure = false;\n  const childList = [];\n  React.Children.forEach(children, child => {\n    const type = typeof child;\n    const isCurrentChildPure = type === 'string' || type === 'number';\n    if (isPrevChildPure && isCurrentChildPure) {\n      const lastIndex = childList.length - 1;\n      const lastChild = childList[lastIndex];\n      childList[lastIndex] = `${lastChild}${child}`;\n    } else {\n      childList.push(child);\n    }\n    isPrevChildPure = isCurrentChildPure;\n  });\n  return React.Children.map(childList, child => splitCNCharsBySpace(child, needInserted));\n}\nconst _ButtonTypes = ['default', 'primary', 'dashed', 'link', 'text'];\nconst _ButtonShapes = ['default', 'circle', 'round'];\nconst _ButtonHTMLTypes = ['submit', 'button', 'reset'];\nexport const _ButtonVariantTypes = ['outlined', 'dashed', 'solid', 'filled', 'text', 'link'];\nexport const _ButtonColorTypes = ['default', 'primary', 'danger'].concat(_toConsumableArray(PresetColors));","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nconst IconWrapper = /*#__PURE__*/forwardRef((props, ref) => {\n  const {\n    className,\n    style,\n    children,\n    prefixCls\n  } = props;\n  const iconWrapperCls = classNames(`${prefixCls}-icon`, className);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    ref: ref,\n    className: iconWrapperCls,\n    style: style\n  }, children);\n});\nexport default IconWrapper;","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport IconWrapper from './IconWrapper';\nconst InnerLoadingIcon = /*#__PURE__*/forwardRef((props, ref) => {\n  const {\n    prefixCls,\n    className,\n    style,\n    iconClassName\n  } = props;\n  const mergedIconCls = classNames(`${prefixCls}-loading-icon`, className);\n  return /*#__PURE__*/React.createElement(IconWrapper, {\n    prefixCls: prefixCls,\n    className: mergedIconCls,\n    style: style,\n    ref: ref\n  }, /*#__PURE__*/React.createElement(LoadingOutlined, {\n    className: iconClassName\n  }));\n});\nconst getCollapsedWidth = () => ({\n  width: 0,\n  opacity: 0,\n  transform: 'scale(0)'\n});\nconst getRealWidth = node => ({\n  width: node.scrollWidth,\n  opacity: 1,\n  transform: 'scale(1)'\n});\nconst DefaultLoadingIcon = props => {\n  const {\n    prefixCls,\n    loading,\n    existIcon,\n    className,\n    style,\n    mount\n  } = props;\n  const visible = !!loading;\n  if (existIcon) {\n    return /*#__PURE__*/React.createElement(InnerLoadingIcon, {\n      prefixCls: prefixCls,\n      className: className,\n      style: style\n    });\n  }\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: visible,\n    // Used for minus flex gap style only\n    motionName: `${prefixCls}-loading-icon-motion`,\n    motionAppear: !mount,\n    motionEnter: !mount,\n    motionLeave: !mount,\n    removeOnLeave: true,\n    onAppearStart: getCollapsedWidth,\n    onAppearActive: getRealWidth,\n    onEnterStart: getCollapsedWidth,\n    onEnterActive: getRealWidth,\n    onLeaveStart: getRealWidth,\n    onLeaveActive: getCollapsedWidth\n  }, (_ref, ref) => {\n    let {\n      className: motionCls,\n      style: motionStyle\n    } = _ref;\n    const mergedStyle = Object.assign(Object.assign({}, style), motionStyle);\n    return /*#__PURE__*/React.createElement(InnerLoadingIcon, {\n      prefixCls: prefixCls,\n      className: classNames(className, motionCls),\n      style: mergedStyle,\n      ref: ref\n    });\n  });\n};\nexport default DefaultLoadingIcon;","const genButtonBorderStyle = (buttonTypeCls, borderColor) => ({\n  // Border\n  [`> span, > ${buttonTypeCls}`]: {\n    '&:not(:last-child)': {\n      [`&, & > ${buttonTypeCls}`]: {\n        '&:not(:disabled)': {\n          borderInlineEndColor: borderColor\n        }\n      }\n    },\n    '&:not(:first-child)': {\n      [`&, & > ${buttonTypeCls}`]: {\n        '&:not(:disabled)': {\n          borderInlineStartColor: borderColor\n        }\n      }\n    }\n  }\n});\nconst genGroupStyle = token => {\n  const {\n    componentCls,\n    fontSize,\n    lineWidth,\n    groupBorderColor,\n    colorErrorHover\n  } = token;\n  return {\n    [`${componentCls}-group`]: [{\n      position: 'relative',\n      display: 'inline-flex',\n      // Border\n      [`> span, > ${componentCls}`]: {\n        '&:not(:last-child)': {\n          [`&, & > ${componentCls}`]: {\n            borderStartEndRadius: 0,\n            borderEndEndRadius: 0\n          }\n        },\n        '&:not(:first-child)': {\n          marginInlineStart: token.calc(lineWidth).mul(-1).equal(),\n          [`&, & > ${componentCls}`]: {\n            borderStartStartRadius: 0,\n            borderEndStartRadius: 0\n          }\n        }\n      },\n      [componentCls]: {\n        position: 'relative',\n        zIndex: 1,\n        '&:hover, &:focus, &:active': {\n          zIndex: 2\n        },\n        '&[disabled]': {\n          zIndex: 0\n        }\n      },\n      [`${componentCls}-icon-only`]: {\n        fontSize\n      }\n    },\n    // Border Color\n    genButtonBorderStyle(`${componentCls}-primary`, groupBorderColor), genButtonBorderStyle(`${componentCls}-danger`, colorErrorHover)]\n  };\n};\nexport default genGroupStyle;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"b\"],\n  _excluded2 = [\"v\"];\nimport { FastColor } from '@ant-design/fast-color';\nexport var getRoundNumber = function getRoundNumber(value) {\n  return Math.round(Number(value || 0));\n};\nvar convertHsb2Hsv = function convertHsb2Hsv(color) {\n  if (color instanceof FastColor) {\n    return color;\n  }\n  if (color && _typeof(color) === 'object' && 'h' in color && 'b' in color) {\n    var _ref = color,\n      b = _ref.b,\n      resets = _objectWithoutProperties(_ref, _excluded);\n    return _objectSpread(_objectSpread({}, resets), {}, {\n      v: b\n    });\n  }\n  if (typeof color === 'string' && /hsb/.test(color)) {\n    return color.replace(/hsb/, 'hsv');\n  }\n  return color;\n};\nexport var Color = /*#__PURE__*/function (_FastColor) {\n  _inherits(Color, _FastColor);\n  var _super = _createSuper(Color);\n  function Color(color) {\n    _classCallCheck(this, Color);\n    return _super.call(this, convertHsb2Hsv(color));\n  }\n  _createClass(Color, [{\n    key: \"toHsbString\",\n    value: function toHsbString() {\n      var hsb = this.toHsb();\n      var saturation = getRoundNumber(hsb.s * 100);\n      var lightness = getRoundNumber(hsb.b * 100);\n      var hue = getRoundNumber(hsb.h);\n      var alpha = hsb.a;\n      var hsbString = \"hsb(\".concat(hue, \", \").concat(saturation, \"%, \").concat(lightness, \"%)\");\n      var hsbaString = \"hsba(\".concat(hue, \", \").concat(saturation, \"%, \").concat(lightness, \"%, \").concat(alpha.toFixed(alpha === 0 ? 0 : 2), \")\");\n      return alpha === 1 ? hsbString : hsbaString;\n    }\n  }, {\n    key: \"toHsb\",\n    value: function toHsb() {\n      var _this$toHsv = this.toHsv(),\n        v = _this$toHsv.v,\n        resets = _objectWithoutProperties(_this$toHsv, _excluded2);\n      return _objectSpread(_objectSpread({}, resets), {}, {\n        b: v,\n        a: this.a\n      });\n    }\n  }]);\n  return Color;\n}(FastColor);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { Color } from \"./color\";\nexport var ColorPickerPrefixCls = 'rc-color-picker';\nexport var generateColor = function generateColor(color) {\n  if (color instanceof Color) {\n    return color;\n  }\n  return new Color(color);\n};\nexport var defaultColor = generateColor('#1677ff');\nexport var calculateColor = function calculateColor(props) {\n  var offset = props.offset,\n    targetRef = props.targetRef,\n    containerRef = props.containerRef,\n    color = props.color,\n    type = props.type;\n  var _containerRef$current = containerRef.current.getBoundingClientRect(),\n    width = _containerRef$current.width,\n    height = _containerRef$current.height;\n  var _targetRef$current$ge = targetRef.current.getBoundingClientRect(),\n    targetWidth = _targetRef$current$ge.width,\n    targetHeight = _targetRef$current$ge.height;\n  var centerOffsetX = targetWidth / 2;\n  var centerOffsetY = targetHeight / 2;\n  var saturation = (offset.x + centerOffsetX) / width;\n  var bright = 1 - (offset.y + centerOffsetY) / height;\n  var hsb = color.toHsb();\n  var alphaOffset = saturation;\n  var hueOffset = (offset.x + centerOffsetX) / width * 360;\n  if (type) {\n    switch (type) {\n      case 'hue':\n        return generateColor(_objectSpread(_objectSpread({}, hsb), {}, {\n          h: hueOffset <= 0 ? 0 : hueOffset\n        }));\n      case 'alpha':\n        return generateColor(_objectSpread(_objectSpread({}, hsb), {}, {\n          a: alphaOffset <= 0 ? 0 : alphaOffset\n        }));\n    }\n  }\n  return generateColor({\n    h: hsb.h,\n    s: saturation <= 0 ? 0 : saturation,\n    b: bright >= 1 ? 1 : bright,\n    a: hsb.a\n  });\n};\nexport var calcOffset = function calcOffset(color, type) {\n  var hsb = color.toHsb();\n  switch (type) {\n    case 'hue':\n      return {\n        x: hsb.h / 360 * 100,\n        y: 50\n      };\n    case 'alpha':\n      return {\n        x: color.a * 100,\n        y: 50\n      };\n\n    // Picker panel\n    default:\n      return {\n        x: hsb.s * 100,\n        y: (1 - hsb.b) * 100\n      };\n  }\n};","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { Color as RcColor } from '@rc-component/color-picker';\nexport const toHexFormat = (value, alpha) => (value === null || value === void 0 ? void 0 : value.replace(/[^\\w/]/g, '').slice(0, alpha ? 8 : 6)) || '';\nexport const getHex = (value, alpha) => value ? toHexFormat(value, alpha) : '';\nexport let AggregationColor = /*#__PURE__*/function () {\n  function AggregationColor(color) {\n    _classCallCheck(this, AggregationColor);\n    var _a;\n    this.cleared = false;\n    // Clone from another AggregationColor\n    if (color instanceof AggregationColor) {\n      this.metaColor = color.metaColor.clone();\n      this.colors = (_a = color.colors) === null || _a === void 0 ? void 0 : _a.map(info => ({\n        color: new AggregationColor(info.color),\n        percent: info.percent\n      }));\n      this.cleared = color.cleared;\n      return;\n    }\n    const isArray = Array.isArray(color);\n    if (isArray && color.length) {\n      this.colors = color.map(_ref => {\n        let {\n          color: c,\n          percent\n        } = _ref;\n        return {\n          color: new AggregationColor(c),\n          percent\n        };\n      });\n      this.metaColor = new RcColor(this.colors[0].color.metaColor);\n    } else {\n      this.metaColor = new RcColor(isArray ? '' : color);\n    }\n    if (!color || isArray && !this.colors) {\n      this.metaColor = this.metaColor.setA(0);\n      this.cleared = true;\n    }\n  }\n  return _createClass(AggregationColor, [{\n    key: \"toHsb\",\n    value: function toHsb() {\n      return this.metaColor.toHsb();\n    }\n  }, {\n    key: \"toHsbString\",\n    value: function toHsbString() {\n      return this.metaColor.toHsbString();\n    }\n  }, {\n    key: \"toHex\",\n    value: function toHex() {\n      return getHex(this.toHexString(), this.metaColor.a < 1);\n    }\n  }, {\n    key: \"toHexString\",\n    value: function toHexString() {\n      return this.metaColor.toHexString();\n    }\n  }, {\n    key: \"toRgb\",\n    value: function toRgb() {\n      return this.metaColor.toRgb();\n    }\n  }, {\n    key: \"toRgbString\",\n    value: function toRgbString() {\n      return this.metaColor.toRgbString();\n    }\n  }, {\n    key: \"isGradient\",\n    value: function isGradient() {\n      return !!this.colors && !this.cleared;\n    }\n  }, {\n    key: \"getColors\",\n    value: function getColors() {\n      return this.colors || [{\n        color: this,\n        percent: 0\n      }];\n    }\n  }, {\n    key: \"toCssString\",\n    value: function toCssString() {\n      const {\n        colors\n      } = this;\n      // CSS line-gradient\n      if (colors) {\n        const colorsStr = colors.map(c => `${c.color.toRgbString()} ${c.percent}%`).join(', ');\n        return `linear-gradient(90deg, ${colorsStr})`;\n      }\n      return this.metaColor.toRgbString();\n    }\n  }, {\n    key: \"equals\",\n    value: function equals(color) {\n      if (!color || this.isGradient() !== color.isGradient()) {\n        return false;\n      }\n      if (!this.isGradient()) {\n        return this.toHexString() === color.toHexString();\n      }\n      return this.colors.length === color.colors.length && this.colors.every((c, i) => {\n        const target = color.colors[i];\n        return c.percent === target.percent && c.color.equals(target.color);\n      });\n    }\n  }]);\n}();","\"use client\";\n\nimport React, { useMemo } from 'react';\nimport { ColorBlock, Color as RcColor } from '@rc-component/color-picker';\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Collapse from '../../collapse';\nimport { useLocale } from '../../locale';\nimport { useToken } from '../../theme/internal';\nimport { generateColor } from '../util';\nconst genPresetColor = list => list.map(value => {\n  value.colors = value.colors.map(generateColor);\n  return value;\n});\nexport const isBright = (value, bgColorToken) => {\n  const {\n    r,\n    g,\n    b,\n    a\n  } = value.toRgb();\n  const hsv = new RcColor(value.toRgbString()).onBackground(bgColorToken).toHsv();\n  if (a <= 0.5) {\n    // Adapted to dark mode\n    return hsv.v > 0.5;\n  }\n  return r * 0.299 + g * 0.587 + b * 0.114 > 192;\n};\nconst genCollapsePanelKey = (preset, index) => {\n  var _a;\n  const mergedKey = (_a = preset.key) !== null && _a !== void 0 ? _a : index;\n  return `panel-${mergedKey}`;\n};\nconst ColorPresets = _ref => {\n  let {\n    prefixCls,\n    presets,\n    value: color,\n    onChange\n  } = _ref;\n  const [locale] = useLocale('ColorPicker');\n  const [, token] = useToken();\n  const [presetsValue] = useMergedState(genPresetColor(presets), {\n    value: genPresetColor(presets),\n    postState: genPresetColor\n  });\n  const colorPresetsPrefixCls = `${prefixCls}-presets`;\n  const activeKeys = useMemo(() => presetsValue.reduce((acc, preset, index) => {\n    const {\n      defaultOpen = true\n    } = preset;\n    if (defaultOpen) {\n      acc.push(genCollapsePanelKey(preset, index));\n    }\n    return acc;\n  }, []), [presetsValue]);\n  const handleClick = colorValue => {\n    onChange === null || onChange === void 0 ? void 0 : onChange(colorValue);\n  };\n  const items = presetsValue.map((preset, index) => {\n    var _a;\n    return {\n      key: genCollapsePanelKey(preset, index),\n      label: /*#__PURE__*/React.createElement(\"div\", {\n        className: `${colorPresetsPrefixCls}-label`\n      }, preset === null || preset === void 0 ? void 0 : preset.label),\n      children: (/*#__PURE__*/React.createElement(\"div\", {\n        className: `${colorPresetsPrefixCls}-items`\n      }, Array.isArray(preset === null || preset === void 0 ? void 0 : preset.colors) && ((_a = preset.colors) === null || _a === void 0 ? void 0 : _a.length) > 0 ? preset.colors.map((presetColor, index) => (/*#__PURE__*/React.createElement(ColorBlock\n      // eslint-disable-next-line react/no-array-index-key\n      , {\n        // eslint-disable-next-line react/no-array-index-key\n        key: `preset-${index}-${presetColor.toHexString()}`,\n        color: generateColor(presetColor).toRgbString(),\n        prefixCls: prefixCls,\n        className: classNames(`${colorPresetsPrefixCls}-color`, {\n          [`${colorPresetsPrefixCls}-color-checked`]: presetColor.toHexString() === (color === null || color === void 0 ? void 0 : color.toHexString()),\n          [`${colorPresetsPrefixCls}-color-bright`]: isBright(presetColor, token.colorBgElevated)\n        }),\n        onClick: () => handleClick(presetColor)\n      }))) : (/*#__PURE__*/React.createElement(\"span\", {\n        className: `${colorPresetsPrefixCls}-empty`\n      }, locale.presetEmpty))))\n    };\n  });\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: colorPresetsPrefixCls\n  }, /*#__PURE__*/React.createElement(Collapse, {\n    defaultActiveKey: activeKeys,\n    ghost: true,\n    items: items\n  }));\n};\nexport default ColorPresets;","import { unit } from '@ant-design/cssinjs';\nimport { AggregationColor } from '../../color-picker/color';\nimport { isBright } from '../../color-picker/components/ColorPresets';\nimport { getLineHeight, mergeToken } from '../../theme/internal';\nimport { PresetColors } from '../../theme/interface';\nimport getAlphaColor from '../../theme/util/getAlphaColor';\nexport const prepareToken = token => {\n  const {\n    paddingInline,\n    onlyIconSize\n  } = token;\n  const buttonToken = mergeToken(token, {\n    buttonPaddingHorizontal: paddingInline,\n    buttonPaddingVertical: 0,\n    buttonIconOnlyFontSize: onlyIconSize\n  });\n  return buttonToken;\n};\nexport const prepareComponentToken = token => {\n  var _a, _b, _c, _d, _e, _f;\n  const contentFontSize = (_a = token.contentFontSize) !== null && _a !== void 0 ? _a : token.fontSize;\n  const contentFontSizeSM = (_b = token.contentFontSizeSM) !== null && _b !== void 0 ? _b : token.fontSize;\n  const contentFontSizeLG = (_c = token.contentFontSizeLG) !== null && _c !== void 0 ? _c : token.fontSizeLG;\n  const contentLineHeight = (_d = token.contentLineHeight) !== null && _d !== void 0 ? _d : getLineHeight(contentFontSize);\n  const contentLineHeightSM = (_e = token.contentLineHeightSM) !== null && _e !== void 0 ? _e : getLineHeight(contentFontSizeSM);\n  const contentLineHeightLG = (_f = token.contentLineHeightLG) !== null && _f !== void 0 ? _f : getLineHeight(contentFontSizeLG);\n  const solidTextColor = isBright(new AggregationColor(token.colorBgSolid), '#fff') ? '#000' : '#fff';\n  const shadowColorTokens = PresetColors.reduce((prev, colorKey) => Object.assign(Object.assign({}, prev), {\n    [`${colorKey}ShadowColor`]: `0 ${unit(token.controlOutlineWidth)} 0 ${getAlphaColor(token[`${colorKey}1`], token.colorBgContainer)}`\n  }), {});\n  return Object.assign(Object.assign({}, shadowColorTokens), {\n    fontWeight: 400,\n    defaultShadow: `0 ${token.controlOutlineWidth}px 0 ${token.controlTmpOutline}`,\n    primaryShadow: `0 ${token.controlOutlineWidth}px 0 ${token.controlOutline}`,\n    dangerShadow: `0 ${token.controlOutlineWidth}px 0 ${token.colorErrorOutline}`,\n    primaryColor: token.colorTextLightSolid,\n    dangerColor: token.colorTextLightSolid,\n    borderColorDisabled: token.colorBorder,\n    defaultGhostColor: token.colorBgContainer,\n    ghostBg: 'transparent',\n    defaultGhostBorderColor: token.colorBgContainer,\n    paddingInline: token.paddingContentHorizontal - token.lineWidth,\n    paddingInlineLG: token.paddingContentHorizontal - token.lineWidth,\n    paddingInlineSM: 8 - token.lineWidth,\n    onlyIconSize: 'inherit',\n    onlyIconSizeSM: 'inherit',\n    onlyIconSizeLG: 'inherit',\n    groupBorderColor: token.colorPrimaryHover,\n    linkHoverBg: 'transparent',\n    textTextColor: token.colorText,\n    textTextHoverColor: token.colorText,\n    textTextActiveColor: token.colorText,\n    textHoverBg: token.colorFillTertiary,\n    defaultColor: token.colorText,\n    defaultBg: token.colorBgContainer,\n    defaultBorderColor: token.colorBorder,\n    defaultBorderColorDisabled: token.colorBorder,\n    defaultHoverBg: token.colorBgContainer,\n    defaultHoverColor: token.colorPrimaryHover,\n    defaultHoverBorderColor: token.colorPrimaryHover,\n    defaultActiveBg: token.colorBgContainer,\n    defaultActiveColor: token.colorPrimaryActive,\n    defaultActiveBorderColor: token.colorPrimaryActive,\n    solidTextColor,\n    contentFontSize,\n    contentFontSizeSM,\n    contentFontSizeLG,\n    contentLineHeight,\n    contentLineHeightSM,\n    contentLineHeightLG,\n    paddingBlock: Math.max((token.controlHeight - contentFontSize * contentLineHeight) / 2 - token.lineWidth, 0),\n    paddingBlockSM: Math.max((token.controlHeightSM - contentFontSizeSM * contentLineHeightSM) / 2 - token.lineWidth, 0),\n    paddingBlockLG: Math.max((token.controlHeightLG - contentFontSizeLG * contentLineHeightLG) / 2 - token.lineWidth, 0)\n  });\n};","import { unit } from '@ant-design/cssinjs';\nimport { genFocusStyle, resetIcon } from '../../style';\nimport { PresetColors } from '../../theme/interface';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genGroupStyle from './group';\nimport { prepareComponentToken, prepareToken } from './token';\n// ============================== Shared ==============================\nconst genSharedButtonStyle = token => {\n  const {\n    componentCls,\n    iconCls,\n    fontWeight,\n    opacityLoading,\n    motionDurationSlow,\n    motionEaseInOut,\n    marginXS,\n    calc\n  } = token;\n  return {\n    [componentCls]: {\n      outline: 'none',\n      position: 'relative',\n      display: 'inline-flex',\n      gap: token.marginXS,\n      alignItems: 'center',\n      justifyContent: 'center',\n      fontWeight,\n      whiteSpace: 'nowrap',\n      textAlign: 'center',\n      backgroundImage: 'none',\n      background: 'transparent',\n      border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n      cursor: 'pointer',\n      transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n      userSelect: 'none',\n      touchAction: 'manipulation',\n      color: token.colorText,\n      '&:disabled > *': {\n        pointerEvents: 'none'\n      },\n      // https://github.com/ant-design/ant-design/issues/51380\n      [`${componentCls}-icon > svg`]: resetIcon(),\n      '> a': {\n        color: 'currentColor'\n      },\n      '&:not(:disabled)': genFocusStyle(token),\n      [`&${componentCls}-two-chinese-chars::first-letter`]: {\n        letterSpacing: '0.34em'\n      },\n      [`&${componentCls}-two-chinese-chars > *:not(${iconCls})`]: {\n        marginInlineEnd: '-0.34em',\n        letterSpacing: '0.34em'\n      },\n      [`&${componentCls}-icon-only`]: {\n        paddingInline: 0,\n        // make `btn-icon-only` not too narrow\n        [`&${componentCls}-compact-item`]: {\n          flex: 'none'\n        },\n        [`&${componentCls}-round`]: {\n          width: 'auto'\n        }\n      },\n      // Loading\n      [`&${componentCls}-loading`]: {\n        opacity: opacityLoading,\n        cursor: 'default'\n      },\n      [`${componentCls}-loading-icon`]: {\n        transition: ['width', 'opacity', 'margin'].map(transition => `${transition} ${motionDurationSlow} ${motionEaseInOut}`).join(',')\n      },\n      // iconPosition\n      [`&:not(${componentCls}-icon-end)`]: {\n        [`${componentCls}-loading-icon-motion`]: {\n          '&-appear-start, &-enter-start': {\n            marginInlineEnd: calc(marginXS).mul(-1).equal()\n          },\n          '&-appear-active, &-enter-active': {\n            marginInlineEnd: 0\n          },\n          '&-leave-start': {\n            marginInlineEnd: 0\n          },\n          '&-leave-active': {\n            marginInlineEnd: calc(marginXS).mul(-1).equal()\n          }\n        }\n      },\n      '&-icon-end': {\n        flexDirection: 'row-reverse',\n        [`${componentCls}-loading-icon-motion`]: {\n          '&-appear-start, &-enter-start': {\n            marginInlineStart: calc(marginXS).mul(-1).equal()\n          },\n          '&-appear-active, &-enter-active': {\n            marginInlineStart: 0\n          },\n          '&-leave-start': {\n            marginInlineStart: 0\n          },\n          '&-leave-active': {\n            marginInlineStart: calc(marginXS).mul(-1).equal()\n          }\n        }\n      }\n    }\n  };\n};\nconst genHoverActiveButtonStyle = (btnCls, hoverStyle, activeStyle) => ({\n  [`&:not(:disabled):not(${btnCls}-disabled)`]: {\n    '&:hover': hoverStyle,\n    '&:active': activeStyle\n  }\n});\n// ============================== Shape ===============================\nconst genCircleButtonStyle = token => ({\n  minWidth: token.controlHeight,\n  paddingInlineStart: 0,\n  paddingInlineEnd: 0,\n  borderRadius: '50%'\n});\nconst genRoundButtonStyle = token => ({\n  borderRadius: token.controlHeight,\n  paddingInlineStart: token.calc(token.controlHeight).div(2).equal(),\n  paddingInlineEnd: token.calc(token.controlHeight).div(2).equal()\n});\nconst genDisabledStyle = token => ({\n  cursor: 'not-allowed',\n  borderColor: token.borderColorDisabled,\n  color: token.colorTextDisabled,\n  background: token.colorBgContainerDisabled,\n  boxShadow: 'none'\n});\nconst genGhostButtonStyle = (btnCls, background, textColor, borderColor, textColorDisabled, borderColorDisabled, hoverStyle, activeStyle) => ({\n  [`&${btnCls}-background-ghost`]: Object.assign(Object.assign({\n    color: textColor || undefined,\n    background,\n    borderColor: borderColor || undefined,\n    boxShadow: 'none'\n  }, genHoverActiveButtonStyle(btnCls, Object.assign({\n    background\n  }, hoverStyle), Object.assign({\n    background\n  }, activeStyle))), {\n    '&:disabled': {\n      cursor: 'not-allowed',\n      color: textColorDisabled || undefined,\n      borderColor: borderColorDisabled || undefined\n    }\n  })\n});\nconst genSolidDisabledButtonStyle = token => ({\n  [`&:disabled, &${token.componentCls}-disabled`]: Object.assign({}, genDisabledStyle(token))\n});\nconst genPureDisabledButtonStyle = token => ({\n  [`&:disabled, &${token.componentCls}-disabled`]: {\n    cursor: 'not-allowed',\n    color: token.colorTextDisabled\n  }\n});\n// ============================== Variant =============================\nconst genVariantButtonStyle = (token, hoverStyle, activeStyle, variant) => {\n  const isPureDisabled = variant && ['link', 'text'].includes(variant);\n  const genDisabledButtonStyle = isPureDisabled ? genPureDisabledButtonStyle : genSolidDisabledButtonStyle;\n  return Object.assign(Object.assign({}, genDisabledButtonStyle(token)), genHoverActiveButtonStyle(token.componentCls, hoverStyle, activeStyle));\n};\nconst genSolidButtonStyle = (token, textColor, background, hoverStyle, activeStyle) => ({\n  [`&${token.componentCls}-variant-solid`]: Object.assign({\n    color: textColor,\n    background\n  }, genVariantButtonStyle(token, hoverStyle, activeStyle))\n});\nconst genOutlinedDashedButtonStyle = (token, borderColor, background, hoverStyle, activeStyle) => ({\n  [`&${token.componentCls}-variant-outlined, &${token.componentCls}-variant-dashed`]: Object.assign({\n    borderColor,\n    background\n  }, genVariantButtonStyle(token, hoverStyle, activeStyle))\n});\nconst genDashedButtonStyle = token => ({\n  [`&${token.componentCls}-variant-dashed`]: {\n    borderStyle: 'dashed'\n  }\n});\nconst genFilledButtonStyle = (token, background, hoverStyle, activeStyle) => ({\n  [`&${token.componentCls}-variant-filled`]: Object.assign({\n    boxShadow: 'none',\n    background\n  }, genVariantButtonStyle(token, hoverStyle, activeStyle))\n});\nconst genTextLinkButtonStyle = (token, textColor, variant, hoverStyle, activeStyle) => ({\n  [`&${token.componentCls}-variant-${variant}`]: Object.assign({\n    color: textColor,\n    boxShadow: 'none'\n  }, genVariantButtonStyle(token, hoverStyle, activeStyle, variant))\n});\n// =============================== Color ==============================\nconst genPresetColorStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return PresetColors.reduce((prev, colorKey) => {\n    const darkColor = token[`${colorKey}6`];\n    const lightColor = token[`${colorKey}1`];\n    const hoverColor = token[`${colorKey}5`];\n    const lightHoverColor = token[`${colorKey}2`];\n    const lightBorderColor = token[`${colorKey}3`];\n    const activeColor = token[`${colorKey}7`];\n    return Object.assign(Object.assign({}, prev), {\n      [`&${componentCls}-color-${colorKey}`]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n        color: darkColor,\n        boxShadow: token[`${colorKey}ShadowColor`]\n      }, genSolidButtonStyle(token, token.colorTextLightSolid, darkColor, {\n        background: hoverColor\n      }, {\n        background: activeColor\n      })), genOutlinedDashedButtonStyle(token, darkColor, token.colorBgContainer, {\n        color: hoverColor,\n        borderColor: hoverColor,\n        background: token.colorBgContainer\n      }, {\n        color: activeColor,\n        borderColor: activeColor,\n        background: token.colorBgContainer\n      })), genDashedButtonStyle(token)), genFilledButtonStyle(token, lightColor, {\n        background: lightHoverColor\n      }, {\n        background: lightBorderColor\n      })), genTextLinkButtonStyle(token, darkColor, 'link', {\n        color: hoverColor\n      }, {\n        color: activeColor\n      })), genTextLinkButtonStyle(token, darkColor, 'text', {\n        color: hoverColor,\n        background: lightColor\n      }, {\n        color: activeColor,\n        background: lightBorderColor\n      }))\n    });\n  }, {});\n};\nconst genDefaultButtonStyle = token => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n  color: token.defaultColor,\n  boxShadow: token.defaultShadow\n}, genSolidButtonStyle(token, token.solidTextColor, token.colorBgSolid, {\n  color: token.solidTextColor,\n  background: token.colorBgSolidHover\n}, {\n  color: token.solidTextColor,\n  background: token.colorBgSolidActive\n})), genDashedButtonStyle(token)), genFilledButtonStyle(token, token.colorFillTertiary, {\n  background: token.colorFillSecondary\n}, {\n  background: token.colorFill\n})), genGhostButtonStyle(token.componentCls, token.ghostBg, token.defaultGhostColor, token.defaultGhostBorderColor, token.colorTextDisabled, token.colorBorder)), genTextLinkButtonStyle(token, token.textTextColor, 'link', {\n  color: token.colorLinkHover,\n  background: token.linkHoverBg\n}, {\n  color: token.colorLinkActive\n}));\nconst genPrimaryButtonStyle = token => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n  color: token.colorPrimary,\n  boxShadow: token.primaryShadow\n}, genOutlinedDashedButtonStyle(token, token.colorPrimary, token.colorBgContainer, {\n  color: token.colorPrimaryTextHover,\n  borderColor: token.colorPrimaryHover,\n  background: token.colorBgContainer\n}, {\n  color: token.colorPrimaryTextActive,\n  borderColor: token.colorPrimaryActive,\n  background: token.colorBgContainer\n})), genDashedButtonStyle(token)), genFilledButtonStyle(token, token.colorPrimaryBg, {\n  background: token.colorPrimaryBgHover\n}, {\n  background: token.colorPrimaryBorder\n})), genTextLinkButtonStyle(token, token.colorPrimaryText, 'text', {\n  color: token.colorPrimaryTextHover,\n  background: token.colorPrimaryBg\n}, {\n  color: token.colorPrimaryTextActive,\n  background: token.colorPrimaryBorder\n})), genTextLinkButtonStyle(token, token.colorPrimaryText, 'link', {\n  color: token.colorPrimaryTextHover,\n  background: token.linkHoverBg\n}, {\n  color: token.colorPrimaryTextActive\n})), genGhostButtonStyle(token.componentCls, token.ghostBg, token.colorPrimary, token.colorPrimary, token.colorTextDisabled, token.colorBorder, {\n  color: token.colorPrimaryHover,\n  borderColor: token.colorPrimaryHover\n}, {\n  color: token.colorPrimaryActive,\n  borderColor: token.colorPrimaryActive\n}));\nconst genDangerousStyle = token => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n  color: token.colorError,\n  boxShadow: token.dangerShadow\n}, genSolidButtonStyle(token, token.dangerColor, token.colorError, {\n  background: token.colorErrorHover\n}, {\n  background: token.colorErrorActive\n})), genOutlinedDashedButtonStyle(token, token.colorError, token.colorBgContainer, {\n  color: token.colorErrorHover,\n  borderColor: token.colorErrorBorderHover\n}, {\n  color: token.colorErrorActive,\n  borderColor: token.colorErrorActive\n})), genDashedButtonStyle(token)), genFilledButtonStyle(token, token.colorErrorBg, {\n  background: token.colorErrorBgFilledHover\n}, {\n  background: token.colorErrorBgActive\n})), genTextLinkButtonStyle(token, token.colorError, 'text', {\n  color: token.colorErrorHover,\n  background: token.colorErrorBg\n}, {\n  color: token.colorErrorHover,\n  background: token.colorErrorBgActive\n})), genTextLinkButtonStyle(token, token.colorError, 'link', {\n  color: token.colorErrorHover\n}, {\n  color: token.colorErrorActive\n})), genGhostButtonStyle(token.componentCls, token.ghostBg, token.colorError, token.colorError, token.colorTextDisabled, token.colorBorder, {\n  color: token.colorErrorHover,\n  borderColor: token.colorErrorHover\n}, {\n  color: token.colorErrorActive,\n  borderColor: token.colorErrorActive\n}));\nconst genLinkStyle = token => Object.assign(Object.assign({}, genTextLinkButtonStyle(token, token.colorLink, 'link', {\n  color: token.colorLinkHover\n}, {\n  color: token.colorLinkActive\n})), genGhostButtonStyle(token.componentCls, token.ghostBg, token.colorInfo, token.colorInfo, token.colorTextDisabled, token.colorBorder, {\n  color: token.colorInfoHover,\n  borderColor: token.colorInfoHover\n}, {\n  color: token.colorInfoActive,\n  borderColor: token.colorInfoActive\n}));\nconst genColorButtonStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return Object.assign({\n    [`${componentCls}-color-default`]: genDefaultButtonStyle(token),\n    [`${componentCls}-color-primary`]: genPrimaryButtonStyle(token),\n    [`${componentCls}-color-dangerous`]: genDangerousStyle(token),\n    [`${componentCls}-color-link`]: genLinkStyle(token)\n  }, genPresetColorStyle(token));\n};\n// =========== Compatible with versions earlier than 5.21.0 ===========\nconst genCompatibleButtonStyle = token => Object.assign(Object.assign(Object.assign(Object.assign({}, genOutlinedDashedButtonStyle(token, token.defaultBorderColor, token.defaultBg, {\n  color: token.defaultHoverColor,\n  borderColor: token.defaultHoverBorderColor,\n  background: token.defaultHoverBg\n}, {\n  color: token.defaultActiveColor,\n  borderColor: token.defaultActiveBorderColor,\n  background: token.defaultActiveBg\n})), genTextLinkButtonStyle(token, token.textTextColor, 'text', {\n  color: token.textTextHoverColor,\n  background: token.textHoverBg\n}, {\n  color: token.textTextActiveColor,\n  background: token.colorBgTextActive\n})), genSolidButtonStyle(token, token.primaryColor, token.colorPrimary, {\n  background: token.colorPrimaryHover,\n  color: token.primaryColor\n}, {\n  background: token.colorPrimaryActive,\n  color: token.primaryColor\n})), genTextLinkButtonStyle(token, token.colorLink, 'link', {\n  color: token.colorLinkHover,\n  background: token.linkHoverBg\n}, {\n  color: token.colorLinkActive\n}));\n// =============================== Size ===============================\nconst genButtonStyle = function (token) {\n  let prefixCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  const {\n    componentCls,\n    controlHeight,\n    fontSize,\n    borderRadius,\n    buttonPaddingHorizontal,\n    iconCls,\n    buttonPaddingVertical,\n    buttonIconOnlyFontSize\n  } = token;\n  return [{\n    [prefixCls]: {\n      fontSize,\n      height: controlHeight,\n      padding: `${unit(buttonPaddingVertical)} ${unit(buttonPaddingHorizontal)}`,\n      borderRadius,\n      [`&${componentCls}-icon-only`]: {\n        width: controlHeight,\n        [iconCls]: {\n          fontSize: buttonIconOnlyFontSize\n        }\n      }\n    }\n  },\n  // Shape - patch prefixCls again to override solid border radius style\n  {\n    [`${componentCls}${componentCls}-circle${prefixCls}`]: genCircleButtonStyle(token)\n  }, {\n    [`${componentCls}${componentCls}-round${prefixCls}`]: genRoundButtonStyle(token)\n  }];\n};\nconst genSizeBaseButtonStyle = token => {\n  const baseToken = mergeToken(token, {\n    fontSize: token.contentFontSize\n  });\n  return genButtonStyle(baseToken, token.componentCls);\n};\nconst genSizeSmallButtonStyle = token => {\n  const smallToken = mergeToken(token, {\n    controlHeight: token.controlHeightSM,\n    fontSize: token.contentFontSizeSM,\n    padding: token.paddingXS,\n    buttonPaddingHorizontal: token.paddingInlineSM,\n    buttonPaddingVertical: 0,\n    borderRadius: token.borderRadiusSM,\n    buttonIconOnlyFontSize: token.onlyIconSizeSM\n  });\n  return genButtonStyle(smallToken, `${token.componentCls}-sm`);\n};\nconst genSizeLargeButtonStyle = token => {\n  const largeToken = mergeToken(token, {\n    controlHeight: token.controlHeightLG,\n    fontSize: token.contentFontSizeLG,\n    buttonPaddingHorizontal: token.paddingInlineLG,\n    buttonPaddingVertical: 0,\n    borderRadius: token.borderRadiusLG,\n    buttonIconOnlyFontSize: token.onlyIconSizeLG\n  });\n  return genButtonStyle(largeToken, `${token.componentCls}-lg`);\n};\nconst genBlockButtonStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      [`&${componentCls}-block`]: {\n        width: '100%'\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Button', token => {\n  const buttonToken = prepareToken(token);\n  return [\n  // Shared\n  genSharedButtonStyle(buttonToken),\n  // Size\n  genSizeBaseButtonStyle(buttonToken), genSizeSmallButtonStyle(buttonToken), genSizeLargeButtonStyle(buttonToken),\n  // Block\n  genBlockButtonStyle(buttonToken),\n  // Color\n  genColorButtonStyle(buttonToken),\n  // https://github.com/ant-design/ant-design/issues/50969\n  genCompatibleButtonStyle(buttonToken),\n  // Button Group\n  genGroupStyle(buttonToken)];\n}, prepareComponentToken, {\n  unitless: {\n    fontWeight: true,\n    contentLineHeight: true,\n    contentLineHeightSM: true,\n    contentLineHeightLG: true\n  }\n});","function compactItemVerticalBorder(token, parentCls) {\n  return {\n    // border collapse\n    [`&-item:not(${parentCls}-last-item)`]: {\n      marginBottom: token.calc(token.lineWidth).mul(-1).equal()\n    },\n    '&-item': {\n      '&:hover,&:focus,&:active': {\n        zIndex: 2\n      },\n      '&[disabled]': {\n        zIndex: 0\n      }\n    }\n  };\n}\nfunction compactItemBorderVerticalRadius(prefixCls, parentCls) {\n  return {\n    [`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item)`]: {\n      borderRadius: 0\n    },\n    [`&-item${parentCls}-first-item:not(${parentCls}-last-item)`]: {\n      [`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {\n        borderEndEndRadius: 0,\n        borderEndStartRadius: 0\n      }\n    },\n    [`&-item${parentCls}-last-item:not(${parentCls}-first-item)`]: {\n      [`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {\n        borderStartStartRadius: 0,\n        borderStartEndRadius: 0\n      }\n    }\n  };\n}\nexport function genCompactItemVerticalStyle(token) {\n  const compactCls = `${token.componentCls}-compact-vertical`;\n  return {\n    [compactCls]: Object.assign(Object.assign({}, compactItemVerticalBorder(token, compactCls)), compactItemBorderVerticalRadius(token.componentCls, compactCls))\n  };\n}","import { genCompactItemStyle } from '../../style/compact-item';\nimport { genCompactItemVerticalStyle } from '../../style/compact-item-vertical';\nimport { genSubStyleComponent } from '../../theme/internal';\nimport { prepareComponentToken, prepareToken } from './token';\nconst genButtonCompactStyle = token => {\n  const {\n    componentCls,\n    colorPrimaryHover,\n    lineWidth,\n    calc\n  } = token;\n  const insetOffset = calc(lineWidth).mul(-1).equal();\n  const getCompactBorderStyle = vertical => {\n    const selector = `${componentCls}-compact${vertical ? '-vertical' : ''}-item${componentCls}-primary:not([disabled])`;\n    return {\n      [`${selector} + ${selector}::before`]: {\n        position: 'absolute',\n        top: vertical ? insetOffset : 0,\n        insetInlineStart: vertical ? 0 : insetOffset,\n        backgroundColor: colorPrimaryHover,\n        content: '\"\"',\n        width: vertical ? '100%' : lineWidth,\n        height: vertical ? lineWidth : '100%'\n      }\n    };\n  };\n  // Special styles for Primary Button\n  return Object.assign(Object.assign({}, getCompactBorderStyle()), getCompactBorderStyle(true));\n};\n// ============================== Export ==============================\nexport default genSubStyleComponent(['Button', 'compact'], token => {\n  const buttonToken = prepareToken(token);\n  return [\n  // Space Compact\n  genCompactItemStyle(buttonToken), genCompactItemVerticalStyle(buttonToken), genButtonCompactStyle(buttonToken)];\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React, { Children, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport { devUseWarning } from '../_util/warning';\nimport Wave from '../_util/wave';\nimport { useComponentConfig } from '../config-provider/context';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useSize from '../config-provider/hooks/useSize';\nimport { useCompactItemContext } from '../space/Compact';\nimport Group, { GroupSizeContext } from './button-group';\nimport { isTwoCNChar, isUnBorderedButtonVariant, spaceChildren } from './buttonHelpers';\nimport DefaultLoadingIcon from './DefaultLoadingIcon';\nimport IconWrapper from './IconWrapper';\nimport useStyle from './style';\nimport Compact from './style/compact';\nfunction getLoadingConfig(loading) {\n  if (typeof loading === 'object' && loading) {\n    let delay = loading === null || loading === void 0 ? void 0 : loading.delay;\n    delay = !Number.isNaN(delay) && typeof delay === 'number' ? delay : 0;\n    return {\n      loading: delay <= 0,\n      delay\n    };\n  }\n  return {\n    loading: !!loading,\n    delay: 0\n  };\n}\nconst ButtonTypeMap = {\n  default: ['default', 'outlined'],\n  primary: ['primary', 'solid'],\n  dashed: ['default', 'dashed'],\n  // `link` is not a real color but we should compatible with it\n  link: ['link', 'link'],\n  text: ['default', 'text']\n};\nconst InternalCompoundedButton = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a, _b;\n  const {\n      loading = false,\n      prefixCls: customizePrefixCls,\n      color,\n      variant,\n      type,\n      danger = false,\n      shape = 'default',\n      size: customizeSize,\n      styles,\n      disabled: customDisabled,\n      className,\n      rootClassName,\n      children,\n      icon,\n      iconPosition = 'start',\n      ghost = false,\n      block = false,\n      // React does not recognize the `htmlType` prop on a DOM element. Here we pick it out of `rest`.\n      htmlType = 'button',\n      classNames: customClassNames,\n      style: customStyle = {},\n      autoInsertSpace,\n      autoFocus\n    } = props,\n    rest = __rest(props, [\"loading\", \"prefixCls\", \"color\", \"variant\", \"type\", \"danger\", \"shape\", \"size\", \"styles\", \"disabled\", \"className\", \"rootClassName\", \"children\", \"icon\", \"iconPosition\", \"ghost\", \"block\", \"htmlType\", \"classNames\", \"style\", \"autoInsertSpace\", \"autoFocus\"]);\n  // https://github.com/ant-design/ant-design/issues/47605\n  // Compatible with original `type` behavior\n  const mergedType = type || 'default';\n  const [mergedColor, mergedVariant] = useMemo(() => {\n    if (color && variant) {\n      return [color, variant];\n    }\n    const colorVariantPair = ButtonTypeMap[mergedType] || [];\n    if (danger) {\n      return ['danger', colorVariantPair[1]];\n    }\n    return colorVariantPair;\n  }, [type, color, variant, danger]);\n  const isDanger = mergedColor === 'danger';\n  const mergedColorText = isDanger ? 'dangerous' : mergedColor;\n  const {\n    getPrefixCls,\n    direction,\n    autoInsertSpace: contextAutoInsertSpace,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('button');\n  const mergedInsertSpace = (_a = autoInsertSpace !== null && autoInsertSpace !== void 0 ? autoInsertSpace : contextAutoInsertSpace) !== null && _a !== void 0 ? _a : true;\n  const prefixCls = getPrefixCls('btn', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const disabled = useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  const groupSize = useContext(GroupSizeContext);\n  const loadingOrDelay = useMemo(() => getLoadingConfig(loading), [loading]);\n  const [innerLoading, setLoading] = useState(loadingOrDelay.loading);\n  const [hasTwoCNChar, setHasTwoCNChar] = useState(false);\n  const buttonRef = useRef(null);\n  const mergedRef = useComposeRef(ref, buttonRef);\n  const needInserted = Children.count(children) === 1 && !icon && !isUnBorderedButtonVariant(mergedVariant);\n  // ========================= Mount ==========================\n  // Record for mount status.\n  // This will help to no to show the animation of loading on the first mount.\n  const isMountRef = useRef(true);\n  React.useEffect(() => {\n    isMountRef.current = false;\n    return () => {\n      isMountRef.current = true;\n    };\n  }, []);\n  // ========================= Effect =========================\n  // Loading\n  useEffect(() => {\n    let delayTimer = null;\n    if (loadingOrDelay.delay > 0) {\n      delayTimer = setTimeout(() => {\n        delayTimer = null;\n        setLoading(true);\n      }, loadingOrDelay.delay);\n    } else {\n      setLoading(loadingOrDelay.loading);\n    }\n    function cleanupTimer() {\n      if (delayTimer) {\n        clearTimeout(delayTimer);\n        delayTimer = null;\n      }\n    }\n    return cleanupTimer;\n  }, [loadingOrDelay]);\n  // Two chinese characters check\n  useEffect(() => {\n    // FIXME: for HOC usage like <FormatMessage />\n    if (!buttonRef.current || !mergedInsertSpace) {\n      return;\n    }\n    const buttonText = buttonRef.current.textContent || '';\n    if (needInserted && isTwoCNChar(buttonText)) {\n      if (!hasTwoCNChar) {\n        setHasTwoCNChar(true);\n      }\n    } else if (hasTwoCNChar) {\n      setHasTwoCNChar(false);\n    }\n  });\n  // Auto focus\n  useEffect(() => {\n    if (autoFocus && buttonRef.current) {\n      buttonRef.current.focus();\n    }\n  }, []);\n  // ========================= Events =========================\n  const handleClick = React.useCallback(e => {\n    var _a;\n    // FIXME: https://github.com/ant-design/ant-design/issues/30207\n    if (innerLoading || mergedDisabled) {\n      e.preventDefault();\n      return;\n    }\n    (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, 'href' in props ? e : e);\n  }, [props.onClick, innerLoading, mergedDisabled]);\n  // ========================== Warn ==========================\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Button');\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'breaking', `\\`icon\\` is using ReactNode instead of string naming in v4. Please check \\`${icon}\\` at https://ant.design/components/icon`) : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(ghost && isUnBorderedButtonVariant(mergedVariant)), 'usage', \"`link` or `text` button can't be a `ghost` button.\") : void 0;\n  }\n  // ========================== Size ==========================\n  const {\n    compactSize,\n    compactItemClassnames\n  } = useCompactItemContext(prefixCls, direction);\n  const sizeClassNameMap = {\n    large: 'lg',\n    small: 'sm',\n    middle: undefined\n  };\n  const sizeFullName = useSize(ctxSize => {\n    var _a, _b;\n    return (_b = (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : groupSize) !== null && _b !== void 0 ? _b : ctxSize;\n  });\n  const sizeCls = sizeFullName ? (_b = sizeClassNameMap[sizeFullName]) !== null && _b !== void 0 ? _b : '' : '';\n  const iconType = innerLoading ? 'loading' : icon;\n  const linkButtonRestProps = omit(rest, ['navigate']);\n  // ========================= Render =========================\n  const classes = classNames(prefixCls, hashId, cssVarCls, {\n    [`${prefixCls}-${shape}`]: shape !== 'default' && shape,\n    // line(253 - 254): Compatible with versions earlier than 5.21.0\n    [`${prefixCls}-${mergedType}`]: mergedType,\n    [`${prefixCls}-dangerous`]: danger,\n    [`${prefixCls}-color-${mergedColorText}`]: mergedColorText,\n    [`${prefixCls}-variant-${mergedVariant}`]: mergedVariant,\n    [`${prefixCls}-${sizeCls}`]: sizeCls,\n    [`${prefixCls}-icon-only`]: !children && children !== 0 && !!iconType,\n    [`${prefixCls}-background-ghost`]: ghost && !isUnBorderedButtonVariant(mergedVariant),\n    [`${prefixCls}-loading`]: innerLoading,\n    [`${prefixCls}-two-chinese-chars`]: hasTwoCNChar && mergedInsertSpace && !innerLoading,\n    [`${prefixCls}-block`]: block,\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-icon-end`]: iconPosition === 'end'\n  }, compactItemClassnames, className, rootClassName, contextClassName);\n  const fullStyle = Object.assign(Object.assign({}, contextStyle), customStyle);\n  const iconClasses = classNames(customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.icon, contextClassNames.icon);\n  const iconStyle = Object.assign(Object.assign({}, (styles === null || styles === void 0 ? void 0 : styles.icon) || {}), contextStyles.icon || {});\n  const iconNode = icon && !innerLoading ? (/*#__PURE__*/React.createElement(IconWrapper, {\n    prefixCls: prefixCls,\n    className: iconClasses,\n    style: iconStyle\n  }, icon)) : loading && typeof loading === 'object' && loading.icon ? (/*#__PURE__*/React.createElement(IconWrapper, {\n    prefixCls: prefixCls,\n    className: iconClasses,\n    style: iconStyle\n  }, loading.icon)) : (/*#__PURE__*/React.createElement(DefaultLoadingIcon, {\n    existIcon: !!icon,\n    prefixCls: prefixCls,\n    loading: innerLoading,\n    mount: isMountRef.current\n  }));\n  const kids = children || children === 0 ? spaceChildren(children, needInserted && mergedInsertSpace) : null;\n  if (linkButtonRestProps.href !== undefined) {\n    return wrapCSSVar(/*#__PURE__*/React.createElement(\"a\", Object.assign({}, linkButtonRestProps, {\n      className: classNames(classes, {\n        [`${prefixCls}-disabled`]: mergedDisabled\n      }),\n      href: mergedDisabled ? undefined : linkButtonRestProps.href,\n      style: fullStyle,\n      onClick: handleClick,\n      ref: mergedRef,\n      tabIndex: mergedDisabled ? -1 : 0\n    }), iconNode, kids));\n  }\n  let buttonNode = /*#__PURE__*/React.createElement(\"button\", Object.assign({}, rest, {\n    type: htmlType,\n    className: classes,\n    style: fullStyle,\n    onClick: handleClick,\n    disabled: mergedDisabled,\n    ref: mergedRef\n  }), iconNode, kids, compactItemClassnames && /*#__PURE__*/React.createElement(Compact, {\n    prefixCls: prefixCls\n  }));\n  if (!isUnBorderedButtonVariant(mergedVariant)) {\n    buttonNode = /*#__PURE__*/React.createElement(Wave, {\n      component: \"Button\",\n      disabled: innerLoading\n    }, buttonNode);\n  }\n  return wrapCSSVar(buttonNode);\n});\nconst Button = InternalCompoundedButton;\nButton.Group = Group;\nButton.__ANT_BUTTON = true;\nif (process.env.NODE_ENV !== 'production') {\n  Button.displayName = 'Button';\n}\nexport default Button;","\"use client\";\n\nimport Button from './button';\nexport * from './buttonHelpers';\nexport default Button;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { cloneElement } from '../_util/reactNode';\nimport Button from '../button';\nimport { ConfigContext } from '../config-provider';\nimport useSize from '../config-provider/hooks/useSize';\nimport { useCompactItemContext } from '../space/Compact';\nimport Input from './Input';\nconst Search = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      inputPrefixCls: customizeInputPrefixCls,\n      className,\n      size: customizeSize,\n      suffix,\n      enterButton = false,\n      addonAfter,\n      loading,\n      disabled,\n      onSearch: customOnSearch,\n      onChange: customOnChange,\n      onCompositionStart,\n      onCompositionEnd\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"inputPrefixCls\", \"className\", \"size\", \"suffix\", \"enterButton\", \"addonAfter\", \"loading\", \"disabled\", \"onSearch\", \"onChange\", \"onCompositionStart\", \"onCompositionEnd\"]);\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const composedRef = React.useRef(false);\n  const prefixCls = getPrefixCls('input-search', customizePrefixCls);\n  const inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n  const {\n    compactSize\n  } = useCompactItemContext(prefixCls, direction);\n  const size = useSize(ctx => {\n    var _a;\n    return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n  });\n  const inputRef = React.useRef(null);\n  const onChange = e => {\n    if ((e === null || e === void 0 ? void 0 : e.target) && e.type === 'click' && customOnSearch) {\n      customOnSearch(e.target.value, e, {\n        source: 'clear'\n      });\n    }\n    customOnChange === null || customOnChange === void 0 ? void 0 : customOnChange(e);\n  };\n  const onMouseDown = e => {\n    var _a;\n    if (document.activeElement === ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input)) {\n      e.preventDefault();\n    }\n  };\n  const onSearch = e => {\n    var _a, _b;\n    if (customOnSearch) {\n      customOnSearch((_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input) === null || _b === void 0 ? void 0 : _b.value, e, {\n        source: 'input'\n      });\n    }\n  };\n  const onPressEnter = e => {\n    if (composedRef.current || loading) {\n      return;\n    }\n    onSearch(e);\n  };\n  const searchIcon = typeof enterButton === 'boolean' ? /*#__PURE__*/React.createElement(SearchOutlined, null) : null;\n  const btnClassName = `${prefixCls}-button`;\n  let button;\n  const enterButtonAsElement = enterButton || {};\n  const isAntdButton = enterButtonAsElement.type && enterButtonAsElement.type.__ANT_BUTTON === true;\n  if (isAntdButton || enterButtonAsElement.type === 'button') {\n    button = cloneElement(enterButtonAsElement, Object.assign({\n      onMouseDown,\n      onClick: e => {\n        var _a, _b;\n        (_b = (_a = enterButtonAsElement === null || enterButtonAsElement === void 0 ? void 0 : enterButtonAsElement.props) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        onSearch(e);\n      },\n      key: 'enterButton'\n    }, isAntdButton ? {\n      className: btnClassName,\n      size\n    } : {}));\n  } else {\n    button = /*#__PURE__*/React.createElement(Button, {\n      className: btnClassName,\n      type: enterButton ? 'primary' : undefined,\n      size: size,\n      disabled: disabled,\n      key: \"enterButton\",\n      onMouseDown: onMouseDown,\n      onClick: onSearch,\n      loading: loading,\n      icon: searchIcon\n    }, enterButton);\n  }\n  if (addonAfter) {\n    button = [button, cloneElement(addonAfter, {\n      key: 'addonAfter'\n    })];\n  }\n  const cls = classNames(prefixCls, {\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-${size}`]: !!size,\n    [`${prefixCls}-with-button`]: !!enterButton\n  }, className);\n  const newProps = Object.assign(Object.assign({}, restProps), {\n    className: cls,\n    prefixCls: inputPrefixCls,\n    type: 'search'\n  });\n  const handleOnCompositionStart = e => {\n    composedRef.current = true;\n    onCompositionStart === null || onCompositionStart === void 0 ? void 0 : onCompositionStart(e);\n  };\n  const handleOnCompositionEnd = e => {\n    composedRef.current = false;\n    onCompositionEnd === null || onCompositionEnd === void 0 ? void 0 : onCompositionEnd(e);\n  };\n  return /*#__PURE__*/React.createElement(Input, Object.assign({\n    ref: composeRef(inputRef, ref),\n    onPressEnter: onPressEnter\n  }, newProps, {\n    size: size,\n    onCompositionStart: handleOnCompositionStart,\n    onCompositionEnd: handleOnCompositionEnd,\n    addonAfter: button,\n    suffix: suffix,\n    onChange: onChange,\n    disabled: disabled\n  }));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Search.displayName = 'Search';\n}\nexport default Search;","\"use client\";\n\nimport Group from './Group';\nimport InternalInput from './Input';\nimport OTP from './OTP';\nimport Password from './Password';\nimport Search from './Search';\nimport TextArea from './TextArea';\nconst Input = InternalInput;\nInput.Group = Group;\nInput.Search = Search;\nInput.TextArea = TextArea;\nInput.Password = Password;\nInput.OTP = OTP;\nexport default Input;","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import React from 'react';\nexport const AppConfigContext = /*#__PURE__*/React.createContext({});\nconst AppContext = /*#__PURE__*/React.createContext({\n  message: {},\n  notification: {},\n  modal: {}\n});\nexport default AppContext;","\"use client\";\n\nimport { createContext } from 'react';\n// ZombieJ: We export single file here since\n// ConfigProvider use this which will make loop deps\n// to import whole `rc-field-form`\nexport default /*#__PURE__*/createContext(undefined);","import defaultLocale from '../locale/en_US';\nlet runtimeLocale = Object.assign({}, defaultLocale.Modal);\nlet localeList = [];\nconst generateLocale = () => localeList.reduce((merged, locale) => Object.assign(Object.assign({}, merged), locale), defaultLocale.Modal);\nexport function changeConfirmLocale(newLocale) {\n  if (newLocale) {\n    const cloneLocale = Object.assign({}, newLocale);\n    localeList.push(cloneLocale);\n    runtimeLocale = generateLocale();\n    return () => {\n      localeList = localeList.filter(locale => locale !== cloneLocale);\n      runtimeLocale = generateLocale();\n    };\n  }\n  runtimeLocale = Object.assign({}, defaultLocale.Modal);\n}\nexport function getConfirmLocale() {\n  return runtimeLocale;\n}","\"use client\";\n\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\nimport { changeConfirmLocale } from '../modal/locale';\nimport LocaleContext from './context';\nexport { default as useLocale } from './useLocale';\nexport const ANT_MARK = 'internalMark';\nconst LocaleProvider = props => {\n  const {\n    locale = {},\n    children,\n    _ANT_MARK__\n  } = props;\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('LocaleProvider');\n    process.env.NODE_ENV !== \"production\" ? warning(_ANT_MARK__ === ANT_MARK, 'deprecated', '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale') : void 0;\n  }\n  React.useEffect(() => {\n    const clearLocale = changeConfirmLocale(locale === null || locale === void 0 ? void 0 : locale.Modal);\n    return clearLocale;\n  }, [locale]);\n  const getMemoizedContextValue = React.useMemo(() => Object.assign(Object.assign({}, locale), {\n    exist: true\n  }), [locale]);\n  return /*#__PURE__*/React.createElement(LocaleContext.Provider, {\n    value: getMemoizedContextValue\n  }, children);\n};\nif (process.env.NODE_ENV !== 'production') {\n  LocaleProvider.displayName = 'LocaleProvider';\n}\nexport default LocaleProvider;","import { generate } from '@ant-design/colors';\nimport { FastColor } from '@ant-design/fast-color';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport warning from '../_util/warning';\nconst dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`;\nexport function getStyle(globalPrefixCls, theme) {\n  const variables = {};\n  const formatColor = (color, updater) => {\n    let clone = color.clone();\n    clone = (updater === null || updater === void 0 ? void 0 : updater(clone)) || clone;\n    return clone.toRgbString();\n  };\n  const fillColor = (colorVal, type) => {\n    const baseColor = new FastColor(colorVal);\n    const colorPalettes = generate(baseColor.toRgbString());\n    variables[`${type}-color`] = formatColor(baseColor);\n    variables[`${type}-color-disabled`] = colorPalettes[1];\n    variables[`${type}-color-hover`] = colorPalettes[4];\n    variables[`${type}-color-active`] = colorPalettes[6];\n    variables[`${type}-color-outline`] = baseColor.clone().setA(0.2).toRgbString();\n    variables[`${type}-color-deprecated-bg`] = colorPalettes[0];\n    variables[`${type}-color-deprecated-border`] = colorPalettes[2];\n  };\n  // ================ Primary Color ================\n  if (theme.primaryColor) {\n    fillColor(theme.primaryColor, 'primary');\n    const primaryColor = new FastColor(theme.primaryColor);\n    const primaryColors = generate(primaryColor.toRgbString());\n    // Legacy - We should use semantic naming standard\n    primaryColors.forEach((color, index) => {\n      variables[`primary-${index + 1}`] = color;\n    });\n    // Deprecated\n    variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, c => c.lighten(35));\n    variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, c => c.lighten(20));\n    variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, c => c.tint(20));\n    variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, c => c.tint(50));\n    variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, c => c.setA(c.a * 0.12));\n    const primaryActiveColor = new FastColor(primaryColors[0]);\n    variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, c => c.setA(c.a * 0.3));\n    variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, c => c.darken(2));\n  }\n  // ================ Success Color ================\n  if (theme.successColor) {\n    fillColor(theme.successColor, 'success');\n  }\n  // ================ Warning Color ================\n  if (theme.warningColor) {\n    fillColor(theme.warningColor, 'warning');\n  }\n  // ================= Error Color =================\n  if (theme.errorColor) {\n    fillColor(theme.errorColor, 'error');\n  }\n  // ================= Info Color ==================\n  if (theme.infoColor) {\n    fillColor(theme.infoColor, 'info');\n  }\n  // Convert to css variables\n  const cssList = Object.keys(variables).map(key => `--${globalPrefixCls}-${key}: ${variables[key]};`);\n  return `\n  :root {\n    ${cssList.join('\\n')}\n  }\n  `.trim();\n}\nexport function registerTheme(globalPrefixCls, theme) {\n  const style = getStyle(globalPrefixCls, theme);\n  if (canUseDom()) {\n    updateCSS(style, `${dynamicStyleMark}-dynamic-theme`);\n  } else {\n    process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'SSR do not support dynamic theme with css variables.') : void 0;\n  }\n}","import { useContext } from 'react';\nimport DisabledContext from '../DisabledContext';\nimport SizeContext from '../SizeContext';\nfunction useConfig() {\n  const componentDisabled = useContext(DisabledContext);\n  const componentSize = useContext(SizeContext);\n  return {\n    componentDisabled,\n    componentSize\n  };\n}\nexport default useConfig;","import * as React from 'react';\nconst fullClone = Object.assign({}, React);\nconst {\n  useId\n} = fullClone;\nconst useEmptyId = () => '';\nconst useThemeKey = typeof useId === 'undefined' ? useEmptyId : useId;\nexport default useThemeKey;","\"use client\";\n\nimport * as React from 'react';\nimport { Provider as MotionProvider } from 'rc-motion';\nimport { useToken } from '../theme/internal';\nexport default function MotionWrapper(props) {\n  const {\n    children\n  } = props;\n  const [, token] = useToken();\n  const {\n    motion\n  } = token;\n  const needWrapMotionProviderRef = React.useRef(false);\n  needWrapMotionProviderRef.current = needWrapMotionProviderRef.current || motion === false;\n  if (needWrapMotionProviderRef.current) {\n    return /*#__PURE__*/React.createElement(MotionProvider, {\n      motion: motion\n    }, children);\n  }\n  return children;\n}","\"use client\";\n\nimport * as React from 'react';\nimport { devUseWarning } from '../_util/warning';\n/**\n * Warning for ConfigProviderProps.\n * This will be empty function in production.\n */\nconst PropWarning = /*#__PURE__*/React.memo(_ref => {\n  let {\n    dropdownMatchSelectWidth\n  } = _ref;\n  const warning = devUseWarning('ConfigProvider');\n  warning.deprecated(dropdownMatchSelectWidth === undefined, 'dropdownMatchSelectWidth', 'popupMatchSelectWidth');\n  return null;\n});\nif (process.env.NODE_ENV !== 'production') {\n  PropWarning.displayName = 'PropWarning';\n}\nexport default process.env.NODE_ENV !== 'production' ? PropWarning : () => null;","import { useStyleRegister } from '@ant-design/cssinjs';\nimport { genIconStyle } from '../../style';\nimport useToken from '../useToken';\nconst useResetIconStyle = (iconPrefixCls, csp) => {\n  const [theme, token] = useToken();\n  // Generate style for icons\n  return useStyleRegister({\n    theme,\n    token,\n    hashId: '',\n    path: ['ant-design-icons', iconPrefixCls],\n    nonce: () => csp === null || csp === void 0 ? void 0 : csp.nonce,\n    layer: {\n      name: 'antd'\n    }\n  }, () => [genIconStyle(iconPrefixCls)]);\n};\nexport default useResetIconStyle;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { createTheme, StyleContext as CssInJsStyleContext } from '@ant-design/cssinjs';\nimport IconContext from \"@ant-design/icons/es/components/Context\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport { merge } from \"rc-util/es/utils/set\";\nimport warning, { devUseWarning, WarningContext } from '../_util/warning';\nimport ValidateMessagesContext from '../form/validateMessagesContext';\nimport LocaleProvider, { ANT_MARK } from '../locale';\nimport LocaleContext from '../locale/context';\nimport defaultLocale from '../locale/en_US';\nimport { defaultTheme, DesignTokenContext } from '../theme/context';\nimport defaultSeedToken from '../theme/themes/seed';\nimport { ConfigConsumer, ConfigContext, defaultIconPrefixCls, defaultPrefixCls, Variants } from './context';\nimport { registerTheme } from './cssVariables';\nimport { DisabledContextProvider } from './DisabledContext';\nimport useConfig from './hooks/useConfig';\nimport useTheme from './hooks/useTheme';\nimport MotionWrapper from './MotionWrapper';\nimport PropWarning from './PropWarning';\nimport SizeContext, { SizeContextProvider } from './SizeContext';\nimport useStyle from './style';\nexport { Variants };\n/**\n * Since too many feedback using static method like `Modal.confirm` not getting theme, we record the\n * theme register info here to help developer get warning info.\n */\nlet existThemeConfig = false;\nexport const warnContext = process.env.NODE_ENV !== 'production' ? componentName => {\n  process.env.NODE_ENV !== \"production\" ? warning(!existThemeConfig, componentName, `Static function can not consume context like dynamic theme. Please use 'App' component instead.`) : void 0;\n} : /* istanbul ignore next */\nnull;\nexport { ConfigConsumer, ConfigContext, defaultPrefixCls, defaultIconPrefixCls };\nexport const configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale'];\n// These props is used by `useContext` directly in sub component\nconst PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'input', 'pagination', 'form', 'select', 'button'];\nlet globalPrefixCls;\nlet globalIconPrefixCls;\nlet globalTheme;\nlet globalHolderRender;\nfunction getGlobalPrefixCls() {\n  return globalPrefixCls || defaultPrefixCls;\n}\nfunction getGlobalIconPrefixCls() {\n  return globalIconPrefixCls || defaultIconPrefixCls;\n}\nfunction isLegacyTheme(theme) {\n  return Object.keys(theme).some(key => key.endsWith('Color'));\n}\nconst setGlobalConfig = props => {\n  const {\n    prefixCls,\n    iconPrefixCls,\n    theme,\n    holderRender\n  } = props;\n  if (prefixCls !== undefined) {\n    globalPrefixCls = prefixCls;\n  }\n  if (iconPrefixCls !== undefined) {\n    globalIconPrefixCls = iconPrefixCls;\n  }\n  if ('holderRender' in props) {\n    globalHolderRender = holderRender;\n  }\n  if (theme) {\n    if (isLegacyTheme(theme)) {\n      process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', '`config` of css variable theme is not work in v5. Please use new `theme` config instead.') : void 0;\n      registerTheme(getGlobalPrefixCls(), theme);\n    } else {\n      globalTheme = theme;\n    }\n  }\n};\nexport const globalConfig = () => ({\n  getPrefixCls: (suffixCls, customizePrefixCls) => {\n    if (customizePrefixCls) {\n      return customizePrefixCls;\n    }\n    return suffixCls ? `${getGlobalPrefixCls()}-${suffixCls}` : getGlobalPrefixCls();\n  },\n  getIconPrefixCls: getGlobalIconPrefixCls,\n  getRootPrefixCls: () => {\n    // If Global prefixCls provided, use this\n    if (globalPrefixCls) {\n      return globalPrefixCls;\n    }\n    // Fallback to default prefixCls\n    return getGlobalPrefixCls();\n  },\n  getTheme: () => globalTheme,\n  holderRender: globalHolderRender\n});\nconst ProviderChildren = props => {\n  const {\n    children,\n    csp: customCsp,\n    autoInsertSpaceInButton,\n    alert,\n    anchor,\n    form,\n    locale,\n    componentSize,\n    direction,\n    space,\n    splitter,\n    virtual,\n    dropdownMatchSelectWidth,\n    popupMatchSelectWidth,\n    popupOverflow,\n    legacyLocale,\n    parentContext,\n    iconPrefixCls: customIconPrefixCls,\n    theme,\n    componentDisabled,\n    segmented,\n    statistic,\n    spin,\n    calendar,\n    carousel,\n    cascader,\n    collapse,\n    typography,\n    checkbox,\n    descriptions,\n    divider,\n    drawer,\n    skeleton,\n    steps,\n    image,\n    layout,\n    list,\n    mentions,\n    modal,\n    progress,\n    result,\n    slider,\n    breadcrumb,\n    menu,\n    pagination,\n    input,\n    textArea,\n    empty,\n    badge,\n    radio,\n    rate,\n    switch: SWITCH,\n    transfer,\n    avatar,\n    message,\n    tag,\n    table,\n    card,\n    tabs,\n    timeline,\n    timePicker,\n    upload,\n    notification,\n    tree,\n    colorPicker,\n    datePicker,\n    rangePicker,\n    flex,\n    wave,\n    dropdown,\n    warning: warningConfig,\n    tour,\n    tooltip,\n    popover,\n    popconfirm,\n    floatButtonGroup,\n    variant,\n    inputNumber,\n    treeSelect\n  } = props;\n  // =================================== Context ===================================\n  const getPrefixCls = React.useCallback((suffixCls, customizePrefixCls) => {\n    const {\n      prefixCls\n    } = props;\n    if (customizePrefixCls) {\n      return customizePrefixCls;\n    }\n    const mergedPrefixCls = prefixCls || parentContext.getPrefixCls('');\n    return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls;\n  }, [parentContext.getPrefixCls, props.prefixCls]);\n  const iconPrefixCls = customIconPrefixCls || parentContext.iconPrefixCls || defaultIconPrefixCls;\n  const csp = customCsp || parentContext.csp;\n  useStyle(iconPrefixCls, csp);\n  const mergedTheme = useTheme(theme, parentContext.theme, {\n    prefixCls: getPrefixCls('')\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    existThemeConfig = existThemeConfig || !!mergedTheme;\n  }\n  const baseConfig = {\n    csp,\n    autoInsertSpaceInButton,\n    alert,\n    anchor,\n    locale: locale || legacyLocale,\n    direction,\n    space,\n    splitter,\n    virtual,\n    popupMatchSelectWidth: popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth,\n    popupOverflow,\n    getPrefixCls,\n    iconPrefixCls,\n    theme: mergedTheme,\n    segmented,\n    statistic,\n    spin,\n    calendar,\n    carousel,\n    cascader,\n    collapse,\n    typography,\n    checkbox,\n    descriptions,\n    divider,\n    drawer,\n    skeleton,\n    steps,\n    image,\n    input,\n    textArea,\n    layout,\n    list,\n    mentions,\n    modal,\n    progress,\n    result,\n    slider,\n    breadcrumb,\n    menu,\n    pagination,\n    empty,\n    badge,\n    radio,\n    rate,\n    switch: SWITCH,\n    transfer,\n    avatar,\n    message,\n    tag,\n    table,\n    card,\n    tabs,\n    timeline,\n    timePicker,\n    upload,\n    notification,\n    tree,\n    colorPicker,\n    datePicker,\n    rangePicker,\n    flex,\n    wave,\n    dropdown,\n    warning: warningConfig,\n    tour,\n    tooltip,\n    popover,\n    popconfirm,\n    floatButtonGroup,\n    variant,\n    inputNumber,\n    treeSelect\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    const warningFn = devUseWarning('ConfigProvider');\n    warningFn(!('autoInsertSpaceInButton' in props), 'deprecated', '`autoInsertSpaceInButton` is deprecated. Please use `{ button: { autoInsertSpace: boolean }}` instead.');\n  }\n  const config = Object.assign({}, parentContext);\n  Object.keys(baseConfig).forEach(key => {\n    if (baseConfig[key] !== undefined) {\n      config[key] = baseConfig[key];\n    }\n  });\n  // Pass the props used by `useContext` directly with child component.\n  // These props should merged into `config`.\n  PASSED_PROPS.forEach(propName => {\n    const propValue = props[propName];\n    if (propValue) {\n      config[propName] = propValue;\n    }\n  });\n  if (typeof autoInsertSpaceInButton !== 'undefined') {\n    // merge deprecated api\n    config.button = Object.assign({\n      autoInsertSpace: autoInsertSpaceInButton\n    }, config.button);\n  }\n  // https://github.com/ant-design/ant-design/issues/27617\n  const memoedConfig = useMemo(() => config, config, (prevConfig, currentConfig) => {\n    const prevKeys = Object.keys(prevConfig);\n    const currentKeys = Object.keys(currentConfig);\n    return prevKeys.length !== currentKeys.length || prevKeys.some(key => prevConfig[key] !== currentConfig[key]);\n  });\n  const {\n    layer\n  } = React.useContext(CssInJsStyleContext);\n  const memoIconContextValue = React.useMemo(() => ({\n    prefixCls: iconPrefixCls,\n    csp,\n    layer: layer ? 'antd' : undefined\n  }), [iconPrefixCls, csp, layer]);\n  let childNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PropWarning, {\n    dropdownMatchSelectWidth: dropdownMatchSelectWidth\n  }), children);\n  const validateMessages = React.useMemo(() => {\n    var _a, _b, _c, _d;\n    return merge(((_a = defaultLocale.Form) === null || _a === void 0 ? void 0 : _a.defaultValidateMessages) || {}, ((_c = (_b = memoedConfig.locale) === null || _b === void 0 ? void 0 : _b.Form) === null || _c === void 0 ? void 0 : _c.defaultValidateMessages) || {}, ((_d = memoedConfig.form) === null || _d === void 0 ? void 0 : _d.validateMessages) || {}, (form === null || form === void 0 ? void 0 : form.validateMessages) || {});\n  }, [memoedConfig, form === null || form === void 0 ? void 0 : form.validateMessages]);\n  if (Object.keys(validateMessages).length > 0) {\n    childNode = /*#__PURE__*/React.createElement(ValidateMessagesContext.Provider, {\n      value: validateMessages\n    }, childNode);\n  }\n  if (locale) {\n    childNode = /*#__PURE__*/React.createElement(LocaleProvider, {\n      locale: locale,\n      _ANT_MARK__: ANT_MARK\n    }, childNode);\n  }\n  if (iconPrefixCls || csp) {\n    childNode = /*#__PURE__*/React.createElement(IconContext.Provider, {\n      value: memoIconContextValue\n    }, childNode);\n  }\n  if (componentSize) {\n    childNode = /*#__PURE__*/React.createElement(SizeContextProvider, {\n      size: componentSize\n    }, childNode);\n  }\n  // =================================== Motion ===================================\n  childNode = /*#__PURE__*/React.createElement(MotionWrapper, null, childNode);\n  // ================================ Dynamic theme ================================\n  const memoTheme = React.useMemo(() => {\n    const _a = mergedTheme || {},\n      {\n        algorithm,\n        token,\n        components,\n        cssVar\n      } = _a,\n      rest = __rest(_a, [\"algorithm\", \"token\", \"components\", \"cssVar\"]);\n    const themeObj = algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) ? createTheme(algorithm) : defaultTheme;\n    const parsedComponents = {};\n    Object.entries(components || {}).forEach(_ref => {\n      let [componentName, componentToken] = _ref;\n      const parsedToken = Object.assign({}, componentToken);\n      if ('algorithm' in parsedToken) {\n        if (parsedToken.algorithm === true) {\n          parsedToken.theme = themeObj;\n        } else if (Array.isArray(parsedToken.algorithm) || typeof parsedToken.algorithm === 'function') {\n          parsedToken.theme = createTheme(parsedToken.algorithm);\n        }\n        delete parsedToken.algorithm;\n      }\n      parsedComponents[componentName] = parsedToken;\n    });\n    const mergedToken = Object.assign(Object.assign({}, defaultSeedToken), token);\n    return Object.assign(Object.assign({}, rest), {\n      theme: themeObj,\n      token: mergedToken,\n      components: parsedComponents,\n      override: Object.assign({\n        override: mergedToken\n      }, parsedComponents),\n      cssVar: cssVar\n    });\n  }, [mergedTheme]);\n  if (theme) {\n    childNode = /*#__PURE__*/React.createElement(DesignTokenContext.Provider, {\n      value: memoTheme\n    }, childNode);\n  }\n  // ================================== Warning ===================================\n  if (memoedConfig.warning) {\n    childNode = /*#__PURE__*/React.createElement(WarningContext.Provider, {\n      value: memoedConfig.warning\n    }, childNode);\n  }\n  // =================================== Render ===================================\n  if (componentDisabled !== undefined) {\n    childNode = /*#__PURE__*/React.createElement(DisabledContextProvider, {\n      disabled: componentDisabled\n    }, childNode);\n  }\n  return /*#__PURE__*/React.createElement(ConfigContext.Provider, {\n    value: memoedConfig\n  }, childNode);\n};\nconst ConfigProvider = props => {\n  const context = React.useContext(ConfigContext);\n  const antLocale = React.useContext(LocaleContext);\n  return /*#__PURE__*/React.createElement(ProviderChildren, Object.assign({\n    parentContext: context,\n    legacyLocale: antLocale\n  }, props));\n};\nConfigProvider.ConfigContext = ConfigContext;\nConfigProvider.SizeContext = SizeContext;\nConfigProvider.config = setGlobalConfig;\nConfigProvider.useConfig = useConfig;\nObject.defineProperty(ConfigProvider, 'SizeContext', {\n  get: () => {\n    process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'ConfigProvider.SizeContext is deprecated. Please use `ConfigProvider.useConfig().componentSize` instead.') : void 0;\n    return SizeContext;\n  }\n});\nif (process.env.NODE_ENV !== 'production') {\n  ConfigProvider.displayName = 'ConfigProvider';\n}\nexport default ConfigProvider;","import useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport { devUseWarning } from '../../_util/warning';\nimport { defaultConfig } from '../../theme/internal';\nimport useThemeKey from './useThemeKey';\nexport default function useTheme(theme, parentTheme, config) {\n  var _a, _b;\n  const warning = devUseWarning('ConfigProvider');\n  const themeConfig = theme || {};\n  const parentThemeConfig = themeConfig.inherit === false || !parentTheme ? Object.assign(Object.assign({}, defaultConfig), {\n    hashed: (_a = parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.hashed) !== null && _a !== void 0 ? _a : defaultConfig.hashed,\n    cssVar: parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.cssVar\n  }) : parentTheme;\n  const themeKey = useThemeKey();\n  if (process.env.NODE_ENV !== 'production') {\n    const cssVarEnabled = themeConfig.cssVar || parentThemeConfig.cssVar;\n    const validKey = !!(typeof themeConfig.cssVar === 'object' && ((_b = themeConfig.cssVar) === null || _b === void 0 ? void 0 : _b.key) || themeKey);\n    process.env.NODE_ENV !== \"production\" ? warning(!cssVarEnabled || validKey, 'breaking', 'Missing key in `cssVar` config. Please upgrade to React 18 or set `cssVar.key` manually in each ConfigProvider inside `cssVar` enabled ConfigProvider.') : void 0;\n  }\n  return useMemo(() => {\n    var _a, _b;\n    if (!theme) {\n      return parentTheme;\n    }\n    // Override\n    const mergedComponents = Object.assign({}, parentThemeConfig.components);\n    Object.keys(theme.components || {}).forEach(componentName => {\n      mergedComponents[componentName] = Object.assign(Object.assign({}, mergedComponents[componentName]), theme.components[componentName]);\n    });\n    const cssVarKey = `css-var-${themeKey.replace(/:/g, '')}`;\n    const mergedCssVar = ((_a = themeConfig.cssVar) !== null && _a !== void 0 ? _a : parentThemeConfig.cssVar) && Object.assign(Object.assign(Object.assign({\n      prefix: config === null || config === void 0 ? void 0 : config.prefixCls\n    }, typeof parentThemeConfig.cssVar === 'object' ? parentThemeConfig.cssVar : {}), typeof themeConfig.cssVar === 'object' ? themeConfig.cssVar : {}), {\n      key: typeof themeConfig.cssVar === 'object' && ((_b = themeConfig.cssVar) === null || _b === void 0 ? void 0 : _b.key) || cssVarKey\n    });\n    // Base token\n    return Object.assign(Object.assign(Object.assign({}, parentThemeConfig), themeConfig), {\n      token: Object.assign(Object.assign({}, parentThemeConfig.token), themeConfig.token),\n      components: mergedComponents,\n      cssVar: mergedCssVar\n    });\n  }, [themeConfig, parentThemeConfig], (prev, next) => prev.some((prevTheme, index) => {\n    const nextTheme = next[index];\n    return !isEqual(prevTheme, nextTheme, true);\n  }));\n}","// This icon file is generated automatically.\nvar CheckCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\" } }] }, \"name\": \"check-circle\", \"theme\": \"filled\" };\nexport default CheckCircleFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CheckCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckCircleFilled = function CheckCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CheckCircleFilledSvg\n  }));\n};\n\n/**![check-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xOTMuNSAzMDEuN2wtMjEwLjYgMjkyYTMxLjggMzEuOCAwIDAxLTUxLjcgMEwzMTguNSA0ODQuOWMtMy44LTUuMyAwLTEyLjcgNi41LTEyLjdoNDYuOWMxMC4yIDAgMTkuOSA0LjkgMjUuOSAxMy4zbDcxLjIgOTguOCAxNTcuMi0yMThjNi04LjMgMTUuNi0xMy4zIDI1LjktMTMuM0g2OTljNi41IDAgMTAuMyA3LjQgNi41IDEyLjd6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CheckCircleFilled);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CheckCircleFilled';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar ExclamationCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" } }] }, \"name\": \"exclamation-circle\", \"theme\": \"filled\" };\nexport default ExclamationCircleFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ExclamationCircleFilledSvg from \"@ant-design/icons-svg/es/asn/ExclamationCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ExclamationCircleFilled = function ExclamationCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: ExclamationCircleFilledSvg\n  }));\n};\n\n/**![exclamation-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0tMzIgMjMyYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjcyYzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFYyOTZ6bTMyIDQ0MGE0OC4wMSA0OC4wMSAwIDAxMC05NiA0OC4wMSA0OC4wMSAwIDAxMCA5NnoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(ExclamationCircleFilled);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'ExclamationCircleFilled';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar InfoCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z\" } }] }, \"name\": \"info-circle\", \"theme\": \"filled\" };\nexport default InfoCircleFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport InfoCircleFilledSvg from \"@ant-design/icons-svg/es/asn/InfoCircleFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar InfoCircleFilled = function InfoCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: InfoCircleFilledSvg\n  }));\n};\n\n/**![info-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0zMiA2NjRjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04VjQ1NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djI3MnptLTMyLTM0NGE0OC4wMSA0OC4wMSAwIDAxMC05NiA0OC4wMSA0OC4wMSAwIDAxMCA5NnoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(InfoCircleFilled);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'InfoCircleFilled';\n}\nexport default RefIcon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nvar Notify = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    className = props.className,\n    _props$duration = props.duration,\n    duration = _props$duration === void 0 ? 4.5 : _props$duration,\n    showProgress = props.showProgress,\n    _props$pauseOnHover = props.pauseOnHover,\n    pauseOnHover = _props$pauseOnHover === void 0 ? true : _props$pauseOnHover,\n    eventKey = props.eventKey,\n    content = props.content,\n    closable = props.closable,\n    _props$closeIcon = props.closeIcon,\n    closeIcon = _props$closeIcon === void 0 ? 'x' : _props$closeIcon,\n    divProps = props.props,\n    onClick = props.onClick,\n    onNoticeClose = props.onNoticeClose,\n    times = props.times,\n    forcedHovering = props.hovering;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    hovering = _React$useState2[0],\n    setHovering = _React$useState2[1];\n  var _React$useState3 = React.useState(0),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    percent = _React$useState4[0],\n    setPercent = _React$useState4[1];\n  var _React$useState5 = React.useState(0),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    spentTime = _React$useState6[0],\n    setSpentTime = _React$useState6[1];\n  var mergedHovering = forcedHovering || hovering;\n  var mergedShowProgress = duration > 0 && showProgress;\n\n  // ======================== Close =========================\n  var onInternalClose = function onInternalClose() {\n    onNoticeClose(eventKey);\n  };\n  var onCloseKeyDown = function onCloseKeyDown(e) {\n    if (e.key === 'Enter' || e.code === 'Enter' || e.keyCode === KeyCode.ENTER) {\n      onInternalClose();\n    }\n  };\n\n  // ======================== Effect ========================\n  React.useEffect(function () {\n    if (!mergedHovering && duration > 0) {\n      var start = Date.now() - spentTime;\n      var timeout = setTimeout(function () {\n        onInternalClose();\n      }, duration * 1000 - spentTime);\n      return function () {\n        if (pauseOnHover) {\n          clearTimeout(timeout);\n        }\n        setSpentTime(Date.now() - start);\n      };\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [duration, mergedHovering, times]);\n  React.useEffect(function () {\n    if (!mergedHovering && mergedShowProgress && (pauseOnHover || spentTime === 0)) {\n      var start = performance.now();\n      var animationFrame;\n      var calculate = function calculate() {\n        cancelAnimationFrame(animationFrame);\n        animationFrame = requestAnimationFrame(function (timestamp) {\n          var runtime = timestamp + spentTime - start;\n          var progress = Math.min(runtime / (duration * 1000), 1);\n          setPercent(progress * 100);\n          if (progress < 1) {\n            calculate();\n          }\n        });\n      };\n      calculate();\n      return function () {\n        if (pauseOnHover) {\n          cancelAnimationFrame(animationFrame);\n        }\n      };\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [duration, spentTime, mergedHovering, mergedShowProgress, times]);\n\n  // ======================== Closable ========================\n  var closableObj = React.useMemo(function () {\n    if (_typeof(closable) === 'object' && closable !== null) {\n      return closable;\n    }\n    if (closable) {\n      return {\n        closeIcon: closeIcon\n      };\n    }\n    return {};\n  }, [closable, closeIcon]);\n  var ariaProps = pickAttrs(closableObj, true);\n\n  // ======================== Progress ========================\n  var validPercent = 100 - (!percent || percent < 0 ? 0 : percent > 100 ? 100 : percent);\n\n  // ======================== Render ========================\n  var noticePrefixCls = \"\".concat(prefixCls, \"-notice\");\n  return /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n    ref: ref,\n    className: classNames(noticePrefixCls, className, _defineProperty({}, \"\".concat(noticePrefixCls, \"-closable\"), closable)),\n    style: style,\n    onMouseEnter: function onMouseEnter(e) {\n      var _divProps$onMouseEnte;\n      setHovering(true);\n      divProps === null || divProps === void 0 || (_divProps$onMouseEnte = divProps.onMouseEnter) === null || _divProps$onMouseEnte === void 0 || _divProps$onMouseEnte.call(divProps, e);\n    },\n    onMouseLeave: function onMouseLeave(e) {\n      var _divProps$onMouseLeav;\n      setHovering(false);\n      divProps === null || divProps === void 0 || (_divProps$onMouseLeav = divProps.onMouseLeave) === null || _divProps$onMouseLeav === void 0 || _divProps$onMouseLeav.call(divProps, e);\n    },\n    onClick: onClick\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(noticePrefixCls, \"-content\")\n  }, content), closable && /*#__PURE__*/React.createElement(\"a\", _extends({\n    tabIndex: 0,\n    className: \"\".concat(noticePrefixCls, \"-close\"),\n    onKeyDown: onCloseKeyDown,\n    \"aria-label\": \"Close\"\n  }, ariaProps, {\n    onClick: function onClick(e) {\n      e.preventDefault();\n      e.stopPropagation();\n      onInternalClose();\n    }\n  }), closableObj.closeIcon), mergedShowProgress && /*#__PURE__*/React.createElement(\"progress\", {\n    className: \"\".concat(noticePrefixCls, \"-progress\"),\n    max: \"100\",\n    value: validPercent\n  }, validPercent + '%'));\n});\nexport default Notify;","import React from 'react';\nexport var NotificationContext = /*#__PURE__*/React.createContext({});\nvar NotificationProvider = function NotificationProvider(_ref) {\n  var children = _ref.children,\n    classNames = _ref.classNames;\n  return /*#__PURE__*/React.createElement(NotificationContext.Provider, {\n    value: {\n      classNames: classNames\n    }\n  }, children);\n};\nexport default NotificationProvider;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar DEFAULT_OFFSET = 8;\nvar DEFAULT_THRESHOLD = 3;\nvar DEFAULT_GAP = 16;\nvar useStack = function useStack(config) {\n  var result = {\n    offset: DEFAULT_OFFSET,\n    threshold: DEFAULT_THRESHOLD,\n    gap: DEFAULT_GAP\n  };\n  if (config && _typeof(config) === 'object') {\n    var _config$offset, _config$threshold, _config$gap;\n    result.offset = (_config$offset = config.offset) !== null && _config$offset !== void 0 ? _config$offset : DEFAULT_OFFSET;\n    result.threshold = (_config$threshold = config.threshold) !== null && _config$threshold !== void 0 ? _config$threshold : DEFAULT_THRESHOLD;\n    result.gap = (_config$gap = config.gap) !== null && _config$gap !== void 0 ? _config$gap : DEFAULT_GAP;\n  }\n  return [!!config, result];\n};\nexport default useStack;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar _excluded = [\"className\", \"style\", \"classNames\", \"styles\"];\nimport React, { useContext, useEffect, useRef, useState } from 'react';\nimport clsx from 'classnames';\nimport { CSSMotionList } from 'rc-motion';\nimport Notice from \"./Notice\";\nimport { NotificationContext } from \"./NotificationProvider\";\nimport useStack from \"./hooks/useStack\";\nvar NoticeList = function NoticeList(props) {\n  var configList = props.configList,\n    placement = props.placement,\n    prefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    motion = props.motion,\n    onAllNoticeRemoved = props.onAllNoticeRemoved,\n    onNoticeClose = props.onNoticeClose,\n    stackConfig = props.stack;\n  var _useContext = useContext(NotificationContext),\n    ctxCls = _useContext.classNames;\n  var dictRef = useRef({});\n  var _useState = useState(null),\n    _useState2 = _slicedToArray(_useState, 2),\n    latestNotice = _useState2[0],\n    setLatestNotice = _useState2[1];\n  var _useState3 = useState([]),\n    _useState4 = _slicedToArray(_useState3, 2),\n    hoverKeys = _useState4[0],\n    setHoverKeys = _useState4[1];\n  var keys = configList.map(function (config) {\n    return {\n      config: config,\n      key: String(config.key)\n    };\n  });\n  var _useStack = useStack(stackConfig),\n    _useStack2 = _slicedToArray(_useStack, 2),\n    stack = _useStack2[0],\n    _useStack2$ = _useStack2[1],\n    offset = _useStack2$.offset,\n    threshold = _useStack2$.threshold,\n    gap = _useStack2$.gap;\n  var expanded = stack && (hoverKeys.length > 0 || keys.length <= threshold);\n  var placementMotion = typeof motion === 'function' ? motion(placement) : motion;\n\n  // Clean hover key\n  useEffect(function () {\n    if (stack && hoverKeys.length > 1) {\n      setHoverKeys(function (prev) {\n        return prev.filter(function (key) {\n          return keys.some(function (_ref) {\n            var dataKey = _ref.key;\n            return key === dataKey;\n          });\n        });\n      });\n    }\n  }, [hoverKeys, keys, stack]);\n\n  // Force update latest notice\n  useEffect(function () {\n    var _keys;\n    if (stack && dictRef.current[(_keys = keys[keys.length - 1]) === null || _keys === void 0 ? void 0 : _keys.key]) {\n      var _keys2;\n      setLatestNotice(dictRef.current[(_keys2 = keys[keys.length - 1]) === null || _keys2 === void 0 ? void 0 : _keys2.key]);\n    }\n  }, [keys, stack]);\n  return /*#__PURE__*/React.createElement(CSSMotionList, _extends({\n    key: placement,\n    className: clsx(prefixCls, \"\".concat(prefixCls, \"-\").concat(placement), ctxCls === null || ctxCls === void 0 ? void 0 : ctxCls.list, className, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-stack\"), !!stack), \"\".concat(prefixCls, \"-stack-expanded\"), expanded)),\n    style: style,\n    keys: keys,\n    motionAppear: true\n  }, placementMotion, {\n    onAllRemoved: function onAllRemoved() {\n      onAllNoticeRemoved(placement);\n    }\n  }), function (_ref2, nodeRef) {\n    var config = _ref2.config,\n      motionClassName = _ref2.className,\n      motionStyle = _ref2.style,\n      motionIndex = _ref2.index;\n    var _ref3 = config,\n      key = _ref3.key,\n      times = _ref3.times;\n    var strKey = String(key);\n    var _ref4 = config,\n      configClassName = _ref4.className,\n      configStyle = _ref4.style,\n      configClassNames = _ref4.classNames,\n      configStyles = _ref4.styles,\n      restConfig = _objectWithoutProperties(_ref4, _excluded);\n    var dataIndex = keys.findIndex(function (item) {\n      return item.key === strKey;\n    });\n\n    // If dataIndex is -1, that means this notice has been removed in data, but still in dom\n    // Should minus (motionIndex - 1) to get the correct index because keys.length is not the same as dom length\n    var stackStyle = {};\n    if (stack) {\n      var index = keys.length - 1 - (dataIndex > -1 ? dataIndex : motionIndex - 1);\n      var transformX = placement === 'top' || placement === 'bottom' ? '-50%' : '0';\n      if (index > 0) {\n        var _dictRef$current$strK, _dictRef$current$strK2, _dictRef$current$strK3;\n        stackStyle.height = expanded ? (_dictRef$current$strK = dictRef.current[strKey]) === null || _dictRef$current$strK === void 0 ? void 0 : _dictRef$current$strK.offsetHeight : latestNotice === null || latestNotice === void 0 ? void 0 : latestNotice.offsetHeight;\n\n        // Transform\n        var verticalOffset = 0;\n        for (var i = 0; i < index; i++) {\n          var _dictRef$current$keys;\n          verticalOffset += ((_dictRef$current$keys = dictRef.current[keys[keys.length - 1 - i].key]) === null || _dictRef$current$keys === void 0 ? void 0 : _dictRef$current$keys.offsetHeight) + gap;\n        }\n        var transformY = (expanded ? verticalOffset : index * offset) * (placement.startsWith('top') ? 1 : -1);\n        var scaleX = !expanded && latestNotice !== null && latestNotice !== void 0 && latestNotice.offsetWidth && (_dictRef$current$strK2 = dictRef.current[strKey]) !== null && _dictRef$current$strK2 !== void 0 && _dictRef$current$strK2.offsetWidth ? ((latestNotice === null || latestNotice === void 0 ? void 0 : latestNotice.offsetWidth) - offset * 2 * (index < 3 ? index : 3)) / ((_dictRef$current$strK3 = dictRef.current[strKey]) === null || _dictRef$current$strK3 === void 0 ? void 0 : _dictRef$current$strK3.offsetWidth) : 1;\n        stackStyle.transform = \"translate3d(\".concat(transformX, \", \").concat(transformY, \"px, 0) scaleX(\").concat(scaleX, \")\");\n      } else {\n        stackStyle.transform = \"translate3d(\".concat(transformX, \", 0, 0)\");\n      }\n    }\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: nodeRef,\n      className: clsx(\"\".concat(prefixCls, \"-notice-wrapper\"), motionClassName, configClassNames === null || configClassNames === void 0 ? void 0 : configClassNames.wrapper),\n      style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), stackStyle), configStyles === null || configStyles === void 0 ? void 0 : configStyles.wrapper),\n      onMouseEnter: function onMouseEnter() {\n        return setHoverKeys(function (prev) {\n          return prev.includes(strKey) ? prev : [].concat(_toConsumableArray(prev), [strKey]);\n        });\n      },\n      onMouseLeave: function onMouseLeave() {\n        return setHoverKeys(function (prev) {\n          return prev.filter(function (k) {\n            return k !== strKey;\n          });\n        });\n      }\n    }, /*#__PURE__*/React.createElement(Notice, _extends({}, restConfig, {\n      ref: function ref(node) {\n        if (dataIndex > -1) {\n          dictRef.current[strKey] = node;\n        } else {\n          delete dictRef.current[strKey];\n        }\n      },\n      prefixCls: prefixCls,\n      classNames: configClassNames,\n      styles: configStyles,\n      className: clsx(configClassName, ctxCls === null || ctxCls === void 0 ? void 0 : ctxCls.notice),\n      style: configStyle,\n      times: times,\n      key: key,\n      eventKey: key,\n      onNoticeClose: onNoticeClose,\n      hovering: stack && hoverKeys.length > 0\n    })));\n  });\n};\nif (process.env.NODE_ENV !== 'production') {\n  NoticeList.displayName = 'NoticeList';\n}\nexport default NoticeList;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport NoticeList from \"./NoticeList\";\n// ant-notification ant-notification-topRight\nvar Notifications = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-notification' : _props$prefixCls,\n    container = props.container,\n    motion = props.motion,\n    maxCount = props.maxCount,\n    className = props.className,\n    style = props.style,\n    onAllRemoved = props.onAllRemoved,\n    stack = props.stack,\n    renderNotifications = props.renderNotifications;\n  var _React$useState = React.useState([]),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    configList = _React$useState2[0],\n    setConfigList = _React$useState2[1];\n\n  // ======================== Close =========================\n  var onNoticeClose = function onNoticeClose(key) {\n    var _config$onClose;\n    // Trigger close event\n    var config = configList.find(function (item) {\n      return item.key === key;\n    });\n    config === null || config === void 0 || (_config$onClose = config.onClose) === null || _config$onClose === void 0 || _config$onClose.call(config);\n    setConfigList(function (list) {\n      return list.filter(function (item) {\n        return item.key !== key;\n      });\n    });\n  };\n\n  // ========================= Refs =========================\n  React.useImperativeHandle(ref, function () {\n    return {\n      open: function open(config) {\n        setConfigList(function (list) {\n          var clone = _toConsumableArray(list);\n\n          // Replace if exist\n          var index = clone.findIndex(function (item) {\n            return item.key === config.key;\n          });\n          var innerConfig = _objectSpread({}, config);\n          if (index >= 0) {\n            var _list$index;\n            innerConfig.times = (((_list$index = list[index]) === null || _list$index === void 0 ? void 0 : _list$index.times) || 0) + 1;\n            clone[index] = innerConfig;\n          } else {\n            innerConfig.times = 0;\n            clone.push(innerConfig);\n          }\n          if (maxCount > 0 && clone.length > maxCount) {\n            clone = clone.slice(-maxCount);\n          }\n          return clone;\n        });\n      },\n      close: function close(key) {\n        onNoticeClose(key);\n      },\n      destroy: function destroy() {\n        setConfigList([]);\n      }\n    };\n  });\n\n  // ====================== Placements ======================\n  var _React$useState3 = React.useState({}),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    placements = _React$useState4[0],\n    setPlacements = _React$useState4[1];\n  React.useEffect(function () {\n    var nextPlacements = {};\n    configList.forEach(function (config) {\n      var _config$placement = config.placement,\n        placement = _config$placement === void 0 ? 'topRight' : _config$placement;\n      if (placement) {\n        nextPlacements[placement] = nextPlacements[placement] || [];\n        nextPlacements[placement].push(config);\n      }\n    });\n\n    // Fill exist placements to avoid empty list causing remove without motion\n    Object.keys(placements).forEach(function (placement) {\n      nextPlacements[placement] = nextPlacements[placement] || [];\n    });\n    setPlacements(nextPlacements);\n  }, [configList]);\n\n  // Clean up container if all notices fade out\n  var onAllNoticeRemoved = function onAllNoticeRemoved(placement) {\n    setPlacements(function (originPlacements) {\n      var clone = _objectSpread({}, originPlacements);\n      var list = clone[placement] || [];\n      if (!list.length) {\n        delete clone[placement];\n      }\n      return clone;\n    });\n  };\n\n  // Effect tell that placements is empty now\n  var emptyRef = React.useRef(false);\n  React.useEffect(function () {\n    if (Object.keys(placements).length > 0) {\n      emptyRef.current = true;\n    } else if (emptyRef.current) {\n      // Trigger only when from exist to empty\n      onAllRemoved === null || onAllRemoved === void 0 || onAllRemoved();\n      emptyRef.current = false;\n    }\n  }, [placements]);\n  // ======================== Render ========================\n  if (!container) {\n    return null;\n  }\n  var placementList = Object.keys(placements);\n  return /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, placementList.map(function (placement) {\n    var placementConfigList = placements[placement];\n    var list = /*#__PURE__*/React.createElement(NoticeList, {\n      key: placement,\n      configList: placementConfigList,\n      placement: placement,\n      prefixCls: prefixCls,\n      className: className === null || className === void 0 ? void 0 : className(placement),\n      style: style === null || style === void 0 ? void 0 : style(placement),\n      motion: motion,\n      onNoticeClose: onNoticeClose,\n      onAllNoticeRemoved: onAllNoticeRemoved,\n      stack: stack\n    });\n    return renderNotifications ? renderNotifications(list, {\n      prefixCls: prefixCls,\n      key: placement\n    }) : list;\n  })), container);\n});\nif (process.env.NODE_ENV !== 'production') {\n  Notifications.displayName = 'Notifications';\n}\nexport default Notifications;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"getContainer\", \"motion\", \"prefixCls\", \"maxCount\", \"className\", \"style\", \"onAllRemoved\", \"stack\", \"renderNotifications\"];\nimport * as React from 'react';\nimport Notifications from \"../Notifications\";\nvar defaultGetContainer = function defaultGetContainer() {\n  return document.body;\n};\nvar uniqueKey = 0;\nfunction mergeConfig() {\n  var clone = {};\n  for (var _len = arguments.length, objList = new Array(_len), _key = 0; _key < _len; _key++) {\n    objList[_key] = arguments[_key];\n  }\n  objList.forEach(function (obj) {\n    if (obj) {\n      Object.keys(obj).forEach(function (key) {\n        var val = obj[key];\n        if (val !== undefined) {\n          clone[key] = val;\n        }\n      });\n    }\n  });\n  return clone;\n}\nexport default function useNotification() {\n  var rootConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _rootConfig$getContai = rootConfig.getContainer,\n    getContainer = _rootConfig$getContai === void 0 ? defaultGetContainer : _rootConfig$getContai,\n    motion = rootConfig.motion,\n    prefixCls = rootConfig.prefixCls,\n    maxCount = rootConfig.maxCount,\n    className = rootConfig.className,\n    style = rootConfig.style,\n    onAllRemoved = rootConfig.onAllRemoved,\n    stack = rootConfig.stack,\n    renderNotifications = rootConfig.renderNotifications,\n    shareConfig = _objectWithoutProperties(rootConfig, _excluded);\n  var _React$useState = React.useState(),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    container = _React$useState2[0],\n    setContainer = _React$useState2[1];\n  var notificationsRef = React.useRef();\n  var contextHolder = /*#__PURE__*/React.createElement(Notifications, {\n    container: container,\n    ref: notificationsRef,\n    prefixCls: prefixCls,\n    motion: motion,\n    maxCount: maxCount,\n    className: className,\n    style: style,\n    onAllRemoved: onAllRemoved,\n    stack: stack,\n    renderNotifications: renderNotifications\n  });\n  var _React$useState3 = React.useState([]),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    taskQueue = _React$useState4[0],\n    setTaskQueue = _React$useState4[1];\n\n  // ========================= Refs =========================\n  var api = React.useMemo(function () {\n    return {\n      open: function open(config) {\n        var mergedConfig = mergeConfig(shareConfig, config);\n        if (mergedConfig.key === null || mergedConfig.key === undefined) {\n          mergedConfig.key = \"rc-notification-\".concat(uniqueKey);\n          uniqueKey += 1;\n        }\n        setTaskQueue(function (queue) {\n          return [].concat(_toConsumableArray(queue), [{\n            type: 'open',\n            config: mergedConfig\n          }]);\n        });\n      },\n      close: function close(key) {\n        setTaskQueue(function (queue) {\n          return [].concat(_toConsumableArray(queue), [{\n            type: 'close',\n            key: key\n          }]);\n        });\n      },\n      destroy: function destroy() {\n        setTaskQueue(function (queue) {\n          return [].concat(_toConsumableArray(queue), [{\n            type: 'destroy'\n          }]);\n        });\n      }\n    };\n  }, []);\n\n  // ======================= Container ======================\n  // React 18 should all in effect that we will check container in each render\n  // Which means getContainer should be stable.\n  React.useEffect(function () {\n    setContainer(getContainer());\n  });\n\n  // ======================== Effect ========================\n  React.useEffect(function () {\n    // Flush task when node ready\n    if (notificationsRef.current && taskQueue.length) {\n      taskQueue.forEach(function (task) {\n        switch (task.type) {\n          case 'open':\n            notificationsRef.current.open(task.config);\n            break;\n          case 'close':\n            notificationsRef.current.close(task.key);\n            break;\n          case 'destroy':\n            notificationsRef.current.destroy();\n            break;\n        }\n      });\n\n      // https://github.com/ant-design/ant-design/issues/52590\n      // React `startTransition` will run once `useEffect` but many times `setState`,\n      // So `setTaskQueue` with filtered array will cause infinite loop.\n      // We cache the first match queue instead.\n      var oriTaskQueue;\n      var tgtTaskQueue;\n\n      // React 17 will mix order of effect & setState in async\n      // - open: setState[0]\n      // - effect[0]\n      // - open: setState[1]\n      // - effect setState([]) * here will clean up [0, 1] in React 17\n      setTaskQueue(function (oriQueue) {\n        if (oriTaskQueue !== oriQueue || !tgtTaskQueue) {\n          oriTaskQueue = oriQueue;\n          tgtTaskQueue = oriQueue.filter(function (task) {\n            return !taskQueue.includes(task);\n          });\n        }\n        return tgtTaskQueue;\n      });\n    }\n  }, [taskQueue]);\n\n  // ======================== Return ========================\n  return [api, contextHolder];\n}","import { Keyframes } from '@ant-design/cssinjs';\nimport { CONTAINER_MAX_OFFSET } from '../../_util/hooks/useZIndex';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst genMessageStyle = token => {\n  const {\n    componentCls,\n    iconCls,\n    boxShadow,\n    colorText,\n    colorSuccess,\n    colorError,\n    colorWarning,\n    colorInfo,\n    fontSizeLG,\n    motionEaseInOutCirc,\n    motionDurationSlow,\n    marginXS,\n    paddingXS,\n    borderRadiusLG,\n    zIndexPopup,\n    // Custom token\n    contentPadding,\n    contentBg\n  } = token;\n  const noticeCls = `${componentCls}-notice`;\n  const messageMoveIn = new Keyframes('MessageMoveIn', {\n    '0%': {\n      padding: 0,\n      transform: 'translateY(-100%)',\n      opacity: 0\n    },\n    '100%': {\n      padding: paddingXS,\n      transform: 'translateY(0)',\n      opacity: 1\n    }\n  });\n  const messageMoveOut = new Keyframes('MessageMoveOut', {\n    '0%': {\n      maxHeight: token.height,\n      padding: paddingXS,\n      opacity: 1\n    },\n    '100%': {\n      maxHeight: 0,\n      padding: 0,\n      opacity: 0\n    }\n  });\n  const noticeStyle = {\n    padding: paddingXS,\n    textAlign: 'center',\n    [`${componentCls}-custom-content`]: {\n      display: 'flex',\n      alignItems: 'center'\n    },\n    [`${componentCls}-custom-content > ${iconCls}`]: {\n      marginInlineEnd: marginXS,\n      // affected by ltr or rtl\n      fontSize: fontSizeLG\n    },\n    [`${noticeCls}-content`]: {\n      display: 'inline-block',\n      padding: contentPadding,\n      background: contentBg,\n      borderRadius: borderRadiusLG,\n      boxShadow,\n      pointerEvents: 'all'\n    },\n    [`${componentCls}-success > ${iconCls}`]: {\n      color: colorSuccess\n    },\n    [`${componentCls}-error > ${iconCls}`]: {\n      color: colorError\n    },\n    [`${componentCls}-warning > ${iconCls}`]: {\n      color: colorWarning\n    },\n    [`${componentCls}-info > ${iconCls},\n      ${componentCls}-loading > ${iconCls}`]: {\n      color: colorInfo\n    }\n  };\n  return [\n  // ============================ Holder ============================\n  {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      color: colorText,\n      position: 'fixed',\n      top: marginXS,\n      width: '100%',\n      pointerEvents: 'none',\n      zIndex: zIndexPopup,\n      [`${componentCls}-move-up`]: {\n        animationFillMode: 'forwards'\n      },\n      [`\n        ${componentCls}-move-up-appear,\n        ${componentCls}-move-up-enter\n      `]: {\n        animationName: messageMoveIn,\n        animationDuration: motionDurationSlow,\n        animationPlayState: 'paused',\n        animationTimingFunction: motionEaseInOutCirc\n      },\n      [`\n        ${componentCls}-move-up-appear${componentCls}-move-up-appear-active,\n        ${componentCls}-move-up-enter${componentCls}-move-up-enter-active\n      `]: {\n        animationPlayState: 'running'\n      },\n      [`${componentCls}-move-up-leave`]: {\n        animationName: messageMoveOut,\n        animationDuration: motionDurationSlow,\n        animationPlayState: 'paused',\n        animationTimingFunction: motionEaseInOutCirc\n      },\n      [`${componentCls}-move-up-leave${componentCls}-move-up-leave-active`]: {\n        animationPlayState: 'running'\n      },\n      '&-rtl': {\n        direction: 'rtl',\n        span: {\n          direction: 'rtl'\n        }\n      }\n    })\n  },\n  // ============================ Notice ============================\n  {\n    [componentCls]: {\n      [`${noticeCls}-wrapper`]: Object.assign({}, noticeStyle)\n    }\n  },\n  // ============================= Pure =============================\n  {\n    [`${componentCls}-notice-pure-panel`]: Object.assign(Object.assign({}, noticeStyle), {\n      padding: 0,\n      textAlign: 'start'\n    })\n  }];\n};\nexport const prepareComponentToken = token => ({\n  zIndexPopup: token.zIndexPopupBase + CONTAINER_MAX_OFFSET + 10,\n  contentBg: token.colorBgElevated,\n  contentPadding: `${(token.controlHeightLG - token.fontSize * token.lineHeight) / 2}px ${token.paddingSM}px`\n});\n// ============================== Export ==============================\nexport default genStyleHooks('Message', token => {\n  // Gen-style functions here\n  const combinedToken = mergeToken(token, {\n    height: 150\n  });\n  return [genMessageStyle(combinedToken)];\n}, prepareComponentToken);","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport { Notice } from 'rc-notification';\nimport { ConfigContext } from '../config-provider';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useStyle from './style';\nexport const TypeIcon = {\n  info: /*#__PURE__*/React.createElement(InfoCircleFilled, null),\n  success: /*#__PURE__*/React.createElement(CheckCircleFilled, null),\n  error: /*#__PURE__*/React.createElement(CloseCircleFilled, null),\n  warning: /*#__PURE__*/React.createElement(ExclamationCircleFilled, null),\n  loading: /*#__PURE__*/React.createElement(LoadingOutlined, null)\n};\nexport const PureContent = _ref => {\n  let {\n    prefixCls,\n    type,\n    icon,\n    children\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-custom-content`, `${prefixCls}-${type}`)\n  }, icon || TypeIcon[type], /*#__PURE__*/React.createElement(\"span\", null, children));\n};\n/** @private Internal Component. Do not use in your production. */\nconst PurePanel = props => {\n  const {\n      prefixCls: staticPrefixCls,\n      className,\n      type,\n      icon,\n      content\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"type\", \"icon\", \"content\"]);\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = staticPrefixCls || getPrefixCls('message');\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(Notice, Object.assign({}, restProps, {\n    prefixCls: prefixCls,\n    className: classNames(className, hashId, `${prefixCls}-notice-pure-panel`, cssVarCls, rootCls),\n    eventKey: \"pure\",\n    duration: null,\n    content: /*#__PURE__*/React.createElement(PureContent, {\n      prefixCls: prefixCls,\n      type: type,\n      icon: icon\n    }, content)\n  })));\n};\nexport default PurePanel;","// This icon file is generated automatically.\nvar CloseOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\" } }] }, \"name\": \"close\", \"theme\": \"outlined\" };\nexport default CloseOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CloseOutlined = function CloseOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: CloseOutlinedSvg\n  }));\n};\n\n/**![close](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNzk5Ljg2IDE2Ni4zMWMuMDIgMCAuMDQuMDIuMDguMDZsNTcuNjkgNTcuN2MuMDQuMDMuMDUuMDUuMDYuMDhhLjEyLjEyIDAgMDEwIC4wNmMwIC4wMy0uMDIuMDUtLjA2LjA5TDU2OS45MyA1MTJsMjg3LjcgMjg3LjdjLjA0LjA0LjA1LjA2LjA2LjA5YS4xMi4xMiAwIDAxMCAuMDdjMCAuMDItLjAyLjA0LS4wNi4wOGwtNTcuNyA1Ny42OWMtLjAzLjA0LS4wNS4wNS0uMDcuMDZhLjEyLjEyIDAgMDEtLjA3IDBjLS4wMyAwLS4wNS0uMDItLjA5LS4wNkw1MTIgNTY5LjkzbC0yODcuNyAyODcuN2MtLjA0LjA0LS4wNi4wNS0uMDkuMDZhLjEyLjEyIDAgMDEtLjA3IDBjLS4wMiAwLS4wNC0uMDItLjA4LS4wNmwtNTcuNjktNTcuN2MtLjA0LS4wMy0uMDUtLjA1LS4wNi0uMDdhLjEyLjEyIDAgMDEwLS4wN2MwLS4wMy4wMi0uMDUuMDYtLjA5TDQ1NC4wNyA1MTJsLTI4Ny43LTI4Ny43Yy0uMDQtLjA0LS4wNS0uMDYtLjA2LS4wOWEuMTIuMTIgMCAwMTAtLjA3YzAtLjAyLjAyLS4wNC4wNi0uMDhsNTcuNy01Ny42OWMuMDMtLjA0LjA1LS4wNS4wNy0uMDZhLjEyLjEyIDAgMDEuMDcgMGMuMDMgMCAuMDUuMDIuMDkuMDZMNTEyIDQ1NC4wN2wyODcuNy0yODcuN2MuMDQtLjA0LjA2LS4wNS4wOS0uMDZhLjEyLjEyIDAgMDEuMDcgMHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CloseOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'CloseOutlined';\n}\nexport default RefIcon;","export function getMotion(prefixCls, transitionName) {\n  return {\n    motionName: transitionName !== null && transitionName !== void 0 ? transitionName : `${prefixCls}-move-up`\n  };\n}\n/** Wrap message open with promise like function */\nexport function wrapPromiseFn(openFn) {\n  let closeFn;\n  const closePromise = new Promise(resolve => {\n    closeFn = openFn(() => {\n      resolve(true);\n    });\n  });\n  const result = () => {\n    closeFn === null || closeFn === void 0 ? void 0 : closeFn();\n  };\n  result.then = (filled, rejected) => closePromise.then(filled, rejected);\n  result.promise = closePromise;\n  return result;\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport { NotificationProvider, useNotification as useRcNotification } from 'rc-notification';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport { PureContent } from './PurePanel';\nimport useStyle from './style';\nimport { getMotion, wrapPromiseFn } from './util';\nconst DEFAULT_OFFSET = 8;\nconst DEFAULT_DURATION = 3;\nconst Wrapper = _ref => {\n  let {\n    children,\n    prefixCls\n  } = _ref;\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(NotificationProvider, {\n    classNames: {\n      list: classNames(hashId, cssVarCls, rootCls)\n    }\n  }, children));\n};\nconst renderNotifications = (node, _ref2) => {\n  let {\n    prefixCls,\n    key\n  } = _ref2;\n  return /*#__PURE__*/React.createElement(Wrapper, {\n    prefixCls: prefixCls,\n    key: key\n  }, node);\n};\nconst Holder = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n    top,\n    prefixCls: staticPrefixCls,\n    getContainer: staticGetContainer,\n    maxCount,\n    duration = DEFAULT_DURATION,\n    rtl,\n    transitionName,\n    onAllRemoved\n  } = props;\n  const {\n    getPrefixCls,\n    getPopupContainer,\n    message,\n    direction\n  } = React.useContext(ConfigContext);\n  const prefixCls = staticPrefixCls || getPrefixCls('message');\n  // =============================== Style ===============================\n  const getStyle = () => ({\n    left: '50%',\n    transform: 'translateX(-50%)',\n    top: top !== null && top !== void 0 ? top : DEFAULT_OFFSET\n  });\n  const getClassName = () => classNames({\n    [`${prefixCls}-rtl`]: rtl !== null && rtl !== void 0 ? rtl : direction === 'rtl'\n  });\n  // ============================== Motion ===============================\n  const getNotificationMotion = () => getMotion(prefixCls, transitionName);\n  // ============================ Close Icon =============================\n  const mergedCloseIcon = /*#__PURE__*/React.createElement(\"span\", {\n    className: `${prefixCls}-close-x`\n  }, /*#__PURE__*/React.createElement(CloseOutlined, {\n    className: `${prefixCls}-close-icon`\n  }));\n  // ============================== Origin ===============================\n  const [api, holder] = useRcNotification({\n    prefixCls,\n    style: getStyle,\n    className: getClassName,\n    motion: getNotificationMotion,\n    closable: false,\n    closeIcon: mergedCloseIcon,\n    duration,\n    getContainer: () => (staticGetContainer === null || staticGetContainer === void 0 ? void 0 : staticGetContainer()) || (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer()) || document.body,\n    maxCount,\n    onAllRemoved,\n    renderNotifications\n  });\n  // ================================ Ref ================================\n  React.useImperativeHandle(ref, () => Object.assign(Object.assign({}, api), {\n    prefixCls,\n    message\n  }));\n  return holder;\n});\n// ==============================================================================\n// ==                                   Hook                                   ==\n// ==============================================================================\nlet keyIndex = 0;\nexport function useInternalMessage(messageConfig) {\n  const holderRef = React.useRef(null);\n  const warning = devUseWarning('Message');\n  // ================================ API ================================\n  const wrapAPI = React.useMemo(() => {\n    // Wrap with notification content\n    // >>> close\n    const close = key => {\n      var _a;\n      (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.close(key);\n    };\n    // >>> Open\n    const open = config => {\n      if (!holderRef.current) {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'usage', 'You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead.') : void 0;\n        const fakeResult = () => {};\n        fakeResult.then = () => {};\n        return fakeResult;\n      }\n      const {\n        open: originOpen,\n        prefixCls,\n        message\n      } = holderRef.current;\n      const noticePrefixCls = `${prefixCls}-notice`;\n      const {\n          content,\n          icon,\n          type,\n          key,\n          className,\n          style,\n          onClose\n        } = config,\n        restConfig = __rest(config, [\"content\", \"icon\", \"type\", \"key\", \"className\", \"style\", \"onClose\"]);\n      let mergedKey = key;\n      if (mergedKey === undefined || mergedKey === null) {\n        keyIndex += 1;\n        mergedKey = `antd-message-${keyIndex}`;\n      }\n      return wrapPromiseFn(resolve => {\n        originOpen(Object.assign(Object.assign({}, restConfig), {\n          key: mergedKey,\n          content: (/*#__PURE__*/React.createElement(PureContent, {\n            prefixCls: prefixCls,\n            type: type,\n            icon: icon\n          }, content)),\n          placement: 'top',\n          className: classNames(type && `${noticePrefixCls}-${type}`, className, message === null || message === void 0 ? void 0 : message.className),\n          style: Object.assign(Object.assign({}, message === null || message === void 0 ? void 0 : message.style), style),\n          onClose: () => {\n            onClose === null || onClose === void 0 ? void 0 : onClose();\n            resolve();\n          }\n        }));\n        // Return close function\n        return () => {\n          close(mergedKey);\n        };\n      });\n    };\n    // >>> destroy\n    const destroy = key => {\n      var _a;\n      if (key !== undefined) {\n        close(key);\n      } else {\n        (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n      }\n    };\n    const clone = {\n      open,\n      destroy\n    };\n    const keys = ['info', 'success', 'warning', 'error', 'loading'];\n    keys.forEach(type => {\n      const typeOpen = (jointContent, duration, onClose) => {\n        let config;\n        if (jointContent && typeof jointContent === 'object' && 'content' in jointContent) {\n          config = jointContent;\n        } else {\n          config = {\n            content: jointContent\n          };\n        }\n        // Params\n        let mergedDuration;\n        let mergedOnClose;\n        if (typeof duration === 'function') {\n          mergedOnClose = duration;\n        } else {\n          mergedDuration = duration;\n          mergedOnClose = onClose;\n        }\n        const mergedConfig = Object.assign(Object.assign({\n          onClose: mergedOnClose,\n          duration: mergedDuration\n        }, config), {\n          type\n        });\n        return open(mergedConfig);\n      };\n      clone[type] = typeOpen;\n    });\n    return clone;\n  }, []);\n  // ============================== Return ===============================\n  return [wrapAPI, /*#__PURE__*/React.createElement(Holder, Object.assign({\n    key: \"message-holder\"\n  }, messageConfig, {\n    ref: holderRef\n  }))];\n}\nexport default function useMessage(messageConfig) {\n  return useInternalMessage(messageConfig);\n}","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport React, { useContext } from 'react';\nimport { AppConfigContext } from '../app/context';\nimport ConfigProvider, { ConfigContext, globalConfig, warnContext } from '../config-provider';\nimport { getReactRender } from '../config-provider/UnstableContext';\nimport PurePanel from './PurePanel';\nimport useMessage, { useInternalMessage } from './useMessage';\nimport { wrapPromiseFn } from './util';\nlet message = null;\nlet act = callback => callback();\nlet taskQueue = [];\nlet defaultGlobalConfig = {};\nfunction getGlobalContext() {\n  const {\n    getContainer,\n    duration,\n    rtl,\n    maxCount,\n    top\n  } = defaultGlobalConfig;\n  const mergedContainer = (getContainer === null || getContainer === void 0 ? void 0 : getContainer()) || document.body;\n  return {\n    getContainer: () => mergedContainer,\n    duration,\n    rtl,\n    maxCount,\n    top\n  };\n}\nconst GlobalHolder = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n    messageConfig,\n    sync\n  } = props;\n  const {\n    getPrefixCls\n  } = useContext(ConfigContext);\n  const prefixCls = defaultGlobalConfig.prefixCls || getPrefixCls('message');\n  const appConfig = useContext(AppConfigContext);\n  const [api, holder] = useInternalMessage(Object.assign(Object.assign(Object.assign({}, messageConfig), {\n    prefixCls\n  }), appConfig.message));\n  React.useImperativeHandle(ref, () => {\n    const instance = Object.assign({}, api);\n    Object.keys(instance).forEach(method => {\n      instance[method] = function () {\n        sync();\n        return api[method].apply(api, arguments);\n      };\n    });\n    return {\n      instance,\n      sync\n    };\n  });\n  return holder;\n});\nconst GlobalHolderWrapper = /*#__PURE__*/React.forwardRef((_, ref) => {\n  const [messageConfig, setMessageConfig] = React.useState(getGlobalContext);\n  const sync = () => {\n    setMessageConfig(getGlobalContext);\n  };\n  React.useEffect(sync, []);\n  const global = globalConfig();\n  const rootPrefixCls = global.getRootPrefixCls();\n  const rootIconPrefixCls = global.getIconPrefixCls();\n  const theme = global.getTheme();\n  const dom = /*#__PURE__*/React.createElement(GlobalHolder, {\n    ref: ref,\n    sync: sync,\n    messageConfig: messageConfig\n  });\n  return /*#__PURE__*/React.createElement(ConfigProvider, {\n    prefixCls: rootPrefixCls,\n    iconPrefixCls: rootIconPrefixCls,\n    theme: theme\n  }, global.holderRender ? global.holderRender(dom) : dom);\n});\nfunction flushNotice() {\n  if (!message) {\n    const holderFragment = document.createDocumentFragment();\n    const newMessage = {\n      fragment: holderFragment\n    };\n    message = newMessage;\n    // Delay render to avoid sync issue\n    act(() => {\n      const reactRender = getReactRender();\n      reactRender(/*#__PURE__*/React.createElement(GlobalHolderWrapper, {\n        ref: node => {\n          const {\n            instance,\n            sync\n          } = node || {};\n          // React 18 test env will throw if call immediately in ref\n          Promise.resolve().then(() => {\n            if (!newMessage.instance && instance) {\n              newMessage.instance = instance;\n              newMessage.sync = sync;\n              flushNotice();\n            }\n          });\n        }\n      }), holderFragment);\n    });\n    return;\n  }\n  // Notification not ready\n  if (!message.instance) {\n    return;\n  }\n  // >>> Execute task\n  taskQueue.forEach(task => {\n    const {\n      type,\n      skipped\n    } = task;\n    // Only `skipped` when user call notice but cancel it immediately\n    // and instance not ready\n    if (!skipped) {\n      switch (type) {\n        case 'open':\n          {\n            act(() => {\n              const closeFn = message.instance.open(Object.assign(Object.assign({}, defaultGlobalConfig), task.config));\n              closeFn === null || closeFn === void 0 ? void 0 : closeFn.then(task.resolve);\n              task.setCloseFn(closeFn);\n            });\n            break;\n          }\n        case 'destroy':\n          act(() => {\n            message === null || message === void 0 ? void 0 : message.instance.destroy(task.key);\n          });\n          break;\n        // Other type open\n        default:\n          {\n            act(() => {\n              var _message$instance;\n              const closeFn = (_message$instance = message.instance)[type].apply(_message$instance, _toConsumableArray(task.args));\n              closeFn === null || closeFn === void 0 ? void 0 : closeFn.then(task.resolve);\n              task.setCloseFn(closeFn);\n            });\n          }\n      }\n    }\n  });\n  // Clean up\n  taskQueue = [];\n}\n// ==============================================================================\n// ==                                  Export                                  ==\n// ==============================================================================\nfunction setMessageGlobalConfig(config) {\n  defaultGlobalConfig = Object.assign(Object.assign({}, defaultGlobalConfig), config);\n  // Trigger sync for it\n  act(() => {\n    var _a;\n    (_a = message === null || message === void 0 ? void 0 : message.sync) === null || _a === void 0 ? void 0 : _a.call(message);\n  });\n}\nfunction open(config) {\n  const result = wrapPromiseFn(resolve => {\n    let closeFn;\n    const task = {\n      type: 'open',\n      config,\n      resolve,\n      setCloseFn: fn => {\n        closeFn = fn;\n      }\n    };\n    taskQueue.push(task);\n    return () => {\n      if (closeFn) {\n        act(() => {\n          closeFn();\n        });\n      } else {\n        task.skipped = true;\n      }\n    };\n  });\n  flushNotice();\n  return result;\n}\nfunction typeOpen(type, args) {\n  const global = globalConfig();\n  if (process.env.NODE_ENV !== 'production' && !global.holderRender) {\n    warnContext('message');\n  }\n  const result = wrapPromiseFn(resolve => {\n    let closeFn;\n    const task = {\n      type,\n      args,\n      resolve,\n      setCloseFn: fn => {\n        closeFn = fn;\n      }\n    };\n    taskQueue.push(task);\n    return () => {\n      if (closeFn) {\n        act(() => {\n          closeFn();\n        });\n      } else {\n        task.skipped = true;\n      }\n    };\n  });\n  flushNotice();\n  return result;\n}\nconst destroy = key => {\n  taskQueue.push({\n    type: 'destroy',\n    key\n  });\n  flushNotice();\n};\nconst methods = ['success', 'info', 'warning', 'error', 'loading'];\nconst baseStaticMethods = {\n  open,\n  destroy,\n  config: setMessageGlobalConfig,\n  useMessage,\n  _InternalPanelDoNotUseOrYouWillBeFired: PurePanel\n};\nconst staticMethods = baseStaticMethods;\nmethods.forEach(type => {\n  staticMethods[type] = function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return typeOpen(type, args);\n  };\n});\n// ==============================================================================\n// ==                                   Test                                   ==\n// ==============================================================================\nconst noop = () => {};\n/** @internal Only Work in test env */\n// eslint-disable-next-line import/no-mutable-exports\nexport let actWrapper = noop;\nif (process.env.NODE_ENV === 'test') {\n  actWrapper = wrapper => {\n    act = wrapper;\n  };\n}\n/** @internal Only Work in test env */\n// eslint-disable-next-line import/no-mutable-exports\nexport let actDestroy = noop;\nif (process.env.NODE_ENV === 'test') {\n  actDestroy = () => {\n    message = null;\n  };\n}\nexport default staticMethods;","\"use client\";\n\nimport * as React from 'react';\nimport useState from \"rc-util/es/hooks/useState\";\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/buttonHelpers';\nfunction isThenable(thing) {\n  return !!(thing === null || thing === void 0 ? void 0 : thing.then);\n}\nconst ActionButton = props => {\n  const {\n    type,\n    children,\n    prefixCls,\n    buttonProps,\n    close,\n    autoFocus,\n    emitEvent,\n    isSilent,\n    quitOnNullishReturnValue,\n    actionFn\n  } = props;\n  const clickedRef = React.useRef(false);\n  const buttonRef = React.useRef(null);\n  const [loading, setLoading] = useState(false);\n  const onInternalClose = function () {\n    close === null || close === void 0 ? void 0 : close.apply(void 0, arguments);\n  };\n  React.useEffect(() => {\n    let timeoutId = null;\n    if (autoFocus) {\n      timeoutId = setTimeout(() => {\n        var _a;\n        (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus({\n          preventScroll: true\n        });\n      });\n    }\n    return () => {\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n    };\n  }, []);\n  const handlePromiseOnOk = returnValueOfOnOk => {\n    if (!isThenable(returnValueOfOnOk)) {\n      return;\n    }\n    setLoading(true);\n    returnValueOfOnOk.then(function () {\n      setLoading(false, true);\n      onInternalClose.apply(void 0, arguments);\n      clickedRef.current = false;\n    }, e => {\n      // See: https://github.com/ant-design/ant-design/issues/6183\n      setLoading(false, true);\n      clickedRef.current = false;\n      // Do not throw if is `await` mode\n      if (isSilent === null || isSilent === void 0 ? void 0 : isSilent()) {\n        return;\n      }\n      return Promise.reject(e);\n    });\n  };\n  const onClick = e => {\n    if (clickedRef.current) {\n      return;\n    }\n    clickedRef.current = true;\n    if (!actionFn) {\n      onInternalClose();\n      return;\n    }\n    let returnValueOfOnOk;\n    if (emitEvent) {\n      returnValueOfOnOk = actionFn(e);\n      if (quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) {\n        clickedRef.current = false;\n        onInternalClose(e);\n        return;\n      }\n    } else if (actionFn.length) {\n      returnValueOfOnOk = actionFn(close);\n      // https://github.com/ant-design/ant-design/issues/23358\n      clickedRef.current = false;\n    } else {\n      returnValueOfOnOk = actionFn();\n      if (!isThenable(returnValueOfOnOk)) {\n        onInternalClose();\n        return;\n      }\n    }\n    handlePromiseOnOk(returnValueOfOnOk);\n  };\n  return /*#__PURE__*/React.createElement(Button, Object.assign({}, convertLegacyProps(type), {\n    onClick: onClick,\n    loading: loading,\n    prefixCls: prefixCls\n  }, buttonProps, {\n    ref: buttonRef\n  }), children);\n};\nexport default ActionButton;","import React from 'react';\nexport const ModalContext = /*#__PURE__*/React.createContext({});\nexport const {\n  Provider: ModalContextProvider\n} = ModalContext;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport ActionButton from '../../_util/ActionButton';\nimport { ModalContext } from '../context';\nconst ConfirmCancelBtn = () => {\n  const {\n    autoFocusButton,\n    cancelButtonProps,\n    cancelTextLocale,\n    isSilent,\n    mergedOkCancel,\n    rootPrefixCls,\n    close,\n    onCancel,\n    onConfirm\n  } = useContext(ModalContext);\n  return mergedOkCancel ? (/*#__PURE__*/React.createElement(ActionButton, {\n    isSilent: isSilent,\n    actionFn: onCancel,\n    close: function () {\n      close === null || close === void 0 ? void 0 : close.apply(void 0, arguments);\n      onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(false);\n    },\n    autoFocus: autoFocusButton === 'cancel',\n    buttonProps: cancelButtonProps,\n    prefixCls: `${rootPrefixCls}-btn`\n  }, cancelTextLocale)) : null;\n};\nexport default ConfirmCancelBtn;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport ActionButton from '../../_util/ActionButton';\nimport { ModalContext } from '../context';\nconst ConfirmOkBtn = () => {\n  const {\n    autoFocusButton,\n    close,\n    isSilent,\n    okButtonProps,\n    rootPrefixCls,\n    okTextLocale,\n    okType,\n    onConfirm,\n    onOk\n  } = useContext(ModalContext);\n  return /*#__PURE__*/React.createElement(ActionButton, {\n    isSilent: isSilent,\n    type: okType || 'primary',\n    actionFn: onOk,\n    close: function () {\n      close === null || close === void 0 ? void 0 : close.apply(void 0, arguments);\n      onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(true);\n    },\n    autoFocus: autoFocusButton === 'ok',\n    buttonProps: okButtonProps,\n    prefixCls: `${rootPrefixCls}-btn`\n  }, okTextLocale);\n};\nexport default ConfirmOkBtn;","import * as React from 'react';\nexport var RefContext = /*#__PURE__*/React.createContext({});","// =============================== Motion ===============================\nexport function getMotionName(prefixCls, transitionName, animationName) {\n  var motionName = transitionName;\n  if (!motionName && animationName) {\n    motionName = \"\".concat(prefixCls, \"-\").concat(animationName);\n  }\n  return motionName;\n}\n\n// =============================== Offset ===============================\nfunction getScroll(w, top) {\n  var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n  var method = \"scroll\".concat(top ? 'Top' : 'Left');\n  if (typeof ret !== 'number') {\n    var d = w.document;\n    ret = d.documentElement[method];\n    if (typeof ret !== 'number') {\n      ret = d.body[method];\n    }\n  }\n  return ret;\n}\nexport function offset(el) {\n  var rect = el.getBoundingClientRect();\n  var pos = {\n    left: rect.left,\n    top: rect.top\n  };\n  var doc = el.ownerDocument;\n  var w = doc.defaultView || doc.parentWindow;\n  pos.left += getScroll(w);\n  pos.top += getScroll(w, true);\n  return pos;\n}","import * as React from 'react';\nexport default /*#__PURE__*/React.memo(function (_ref) {\n  var children = _ref.children;\n  return children;\n}, function (_, _ref2) {\n  var shouldUpdate = _ref2.shouldUpdate;\n  return !shouldUpdate;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport React, { useMemo, useRef } from 'react';\nimport { RefContext } from \"../../context\";\nimport MemoChildren from \"./MemoChildren\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nvar sentinelStyle = {\n  width: 0,\n  height: 0,\n  overflow: 'hidden',\n  outline: 'none'\n};\nvar entityStyle = {\n  outline: 'none'\n};\nvar Panel = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    title = props.title,\n    ariaId = props.ariaId,\n    footer = props.footer,\n    closable = props.closable,\n    closeIcon = props.closeIcon,\n    onClose = props.onClose,\n    children = props.children,\n    bodyStyle = props.bodyStyle,\n    bodyProps = props.bodyProps,\n    modalRender = props.modalRender,\n    onMouseDown = props.onMouseDown,\n    onMouseUp = props.onMouseUp,\n    holderRef = props.holderRef,\n    visible = props.visible,\n    forceRender = props.forceRender,\n    width = props.width,\n    height = props.height,\n    modalClassNames = props.classNames,\n    modalStyles = props.styles;\n\n  // ================================= Refs =================================\n  var _React$useContext = React.useContext(RefContext),\n    panelRef = _React$useContext.panel;\n  var mergedRef = useComposeRef(holderRef, panelRef);\n  var sentinelStartRef = useRef();\n  var sentinelEndRef = useRef();\n  React.useImperativeHandle(ref, function () {\n    return {\n      focus: function focus() {\n        var _sentinelStartRef$cur;\n        (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 || _sentinelStartRef$cur.focus({\n          preventScroll: true\n        });\n      },\n      changeActive: function changeActive(next) {\n        var _document = document,\n          activeElement = _document.activeElement;\n        if (next && activeElement === sentinelEndRef.current) {\n          sentinelStartRef.current.focus({\n            preventScroll: true\n          });\n        } else if (!next && activeElement === sentinelStartRef.current) {\n          sentinelEndRef.current.focus({\n            preventScroll: true\n          });\n        }\n      }\n    };\n  });\n\n  // ================================ Style =================================\n  var contentStyle = {};\n  if (width !== undefined) {\n    contentStyle.width = width;\n  }\n  if (height !== undefined) {\n    contentStyle.height = height;\n  }\n  // ================================ Render ================================\n  var footerNode = footer ? /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-footer\"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.footer),\n    style: _objectSpread({}, modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.footer)\n  }, footer) : null;\n  var headerNode = title ? /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-header\"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.header),\n    style: _objectSpread({}, modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.header)\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-title\"),\n    id: ariaId\n  }, title)) : null;\n  var closableObj = useMemo(function () {\n    if (_typeof(closable) === 'object' && closable !== null) {\n      return closable;\n    }\n    if (closable) {\n      return {\n        closeIcon: closeIcon !== null && closeIcon !== void 0 ? closeIcon : /*#__PURE__*/React.createElement(\"span\", {\n          className: \"\".concat(prefixCls, \"-close-x\")\n        })\n      };\n    }\n    return {};\n  }, [closable, closeIcon, prefixCls]);\n  var ariaProps = pickAttrs(closableObj, true);\n  var closeBtnIsDisabled = _typeof(closable) === 'object' && closable.disabled;\n  var closerNode = closable ? /*#__PURE__*/React.createElement(\"button\", _extends({\n    type: \"button\",\n    onClick: onClose,\n    \"aria-label\": \"Close\"\n  }, ariaProps, {\n    className: \"\".concat(prefixCls, \"-close\"),\n    disabled: closeBtnIsDisabled\n  }), closableObj.closeIcon) : null;\n  var content = /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-content\"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.content),\n    style: modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.content\n  }, closerNode, headerNode, /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: classNames(\"\".concat(prefixCls, \"-body\"), modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.body),\n    style: _objectSpread(_objectSpread({}, bodyStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.body)\n  }, bodyProps), children), footerNode);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    key: \"dialog-element\",\n    role: \"dialog\",\n    \"aria-labelledby\": title ? ariaId : null,\n    \"aria-modal\": \"true\",\n    ref: mergedRef,\n    style: _objectSpread(_objectSpread({}, style), contentStyle),\n    className: classNames(prefixCls, className),\n    onMouseDown: onMouseDown,\n    onMouseUp: onMouseUp\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: sentinelStartRef,\n    tabIndex: 0,\n    style: entityStyle\n  }, /*#__PURE__*/React.createElement(MemoChildren, {\n    shouldUpdate: visible || forceRender\n  }, modalRender ? modalRender(content) : content)), /*#__PURE__*/React.createElement(\"div\", {\n    tabIndex: 0,\n    ref: sentinelEndRef,\n    style: sentinelStyle\n  }));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Panel.displayName = 'Panel';\n}\nexport default Panel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { offset } from \"../../util\";\nimport Panel from \"./Panel\";\nvar Content = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    title = props.title,\n    style = props.style,\n    className = props.className,\n    visible = props.visible,\n    forceRender = props.forceRender,\n    destroyOnClose = props.destroyOnClose,\n    motionName = props.motionName,\n    ariaId = props.ariaId,\n    onVisibleChanged = props.onVisibleChanged,\n    mousePosition = props.mousePosition;\n  var dialogRef = useRef();\n\n  // ============================= Style ==============================\n  var _React$useState = React.useState(),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    transformOrigin = _React$useState2[0],\n    setTransformOrigin = _React$useState2[1];\n  var contentStyle = {};\n  if (transformOrigin) {\n    contentStyle.transformOrigin = transformOrigin;\n  }\n  function onPrepare() {\n    var elementOffset = offset(dialogRef.current);\n    setTransformOrigin(mousePosition && (mousePosition.x || mousePosition.y) ? \"\".concat(mousePosition.x - elementOffset.left, \"px \").concat(mousePosition.y - elementOffset.top, \"px\") : '');\n  }\n\n  // ============================= Render =============================\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: visible,\n    onVisibleChanged: onVisibleChanged,\n    onAppearPrepare: onPrepare,\n    onEnterPrepare: onPrepare,\n    forceRender: forceRender,\n    motionName: motionName,\n    removeOnLeave: destroyOnClose,\n    ref: dialogRef\n  }, function (_ref, motionRef) {\n    var motionClassName = _ref.className,\n      motionStyle = _ref.style;\n    return /*#__PURE__*/React.createElement(Panel, _extends({}, props, {\n      ref: ref,\n      title: title,\n      ariaId: ariaId,\n      prefixCls: prefixCls,\n      holderRef: motionRef,\n      style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), style), contentStyle),\n      className: classNames(className, motionClassName)\n    }));\n  });\n});\nContent.displayName = 'Content';\nexport default Content;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nvar Mask = function Mask(props) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    visible = props.visible,\n    maskProps = props.maskProps,\n    motionName = props.motionName,\n    className = props.className;\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    key: \"mask\",\n    visible: visible,\n    motionName: motionName,\n    leavedClassName: \"\".concat(prefixCls, \"-mask-hidden\")\n  }, function (_ref, ref) {\n    var motionClassName = _ref.className,\n      motionStyle = _ref.style;\n    return /*#__PURE__*/React.createElement(\"div\", _extends({\n      ref: ref,\n      style: _objectSpread(_objectSpread({}, motionStyle), style),\n      className: classNames(\"\".concat(prefixCls, \"-mask\"), motionClassName, className)\n    }, maskProps));\n  });\n};\nexport default Mask;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport contains from \"rc-util/es/Dom/contains\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { getMotionName } from \"../util\";\nimport Content from \"./Content\";\nimport Mask from \"./Mask\";\nimport { warning } from \"rc-util/es/warning\";\nvar Dialog = function Dialog(props) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-dialog' : _props$prefixCls,\n    zIndex = props.zIndex,\n    _props$visible = props.visible,\n    visible = _props$visible === void 0 ? false : _props$visible,\n    _props$keyboard = props.keyboard,\n    keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n    _props$focusTriggerAf = props.focusTriggerAfterClose,\n    focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n    wrapStyle = props.wrapStyle,\n    wrapClassName = props.wrapClassName,\n    wrapProps = props.wrapProps,\n    onClose = props.onClose,\n    afterOpenChange = props.afterOpenChange,\n    afterClose = props.afterClose,\n    transitionName = props.transitionName,\n    animation = props.animation,\n    _props$closable = props.closable,\n    closable = _props$closable === void 0 ? true : _props$closable,\n    _props$mask = props.mask,\n    mask = _props$mask === void 0 ? true : _props$mask,\n    maskTransitionName = props.maskTransitionName,\n    maskAnimation = props.maskAnimation,\n    _props$maskClosable = props.maskClosable,\n    maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n    maskStyle = props.maskStyle,\n    maskProps = props.maskProps,\n    rootClassName = props.rootClassName,\n    modalClassNames = props.classNames,\n    modalStyles = props.styles;\n  if (process.env.NODE_ENV !== 'production') {\n    ['wrapStyle', 'bodyStyle', 'maskStyle'].forEach(function (prop) {\n      // (prop in props) && console.error(`Warning: ${prop} is deprecated, please use styles instead.`)\n      warning(!(prop in props), \"\".concat(prop, \" is deprecated, please use styles instead.\"));\n    });\n    if ('wrapClassName' in props) {\n      warning(false, \"wrapClassName is deprecated, please use classNames instead.\");\n    }\n  }\n  var lastOutSideActiveElementRef = useRef();\n  var wrapperRef = useRef();\n  var contentRef = useRef();\n  var _React$useState = React.useState(visible),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    animatedVisible = _React$useState2[0],\n    setAnimatedVisible = _React$useState2[1];\n\n  // ========================== Init ==========================\n  var ariaId = useId();\n  function saveLastOutSideActiveElementRef() {\n    if (!contains(wrapperRef.current, document.activeElement)) {\n      lastOutSideActiveElementRef.current = document.activeElement;\n    }\n  }\n  function focusDialogContent() {\n    if (!contains(wrapperRef.current, document.activeElement)) {\n      var _contentRef$current;\n      (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 || _contentRef$current.focus();\n    }\n  }\n\n  // ========================= Events =========================\n  function onDialogVisibleChanged(newVisible) {\n    // Try to focus\n    if (newVisible) {\n      focusDialogContent();\n    } else {\n      // Clean up scroll bar & focus back\n      setAnimatedVisible(false);\n      if (mask && lastOutSideActiveElementRef.current && focusTriggerAfterClose) {\n        try {\n          lastOutSideActiveElementRef.current.focus({\n            preventScroll: true\n          });\n        } catch (e) {\n          // Do nothing\n        }\n        lastOutSideActiveElementRef.current = null;\n      }\n\n      // Trigger afterClose only when change visible from true to false\n      if (animatedVisible) {\n        afterClose === null || afterClose === void 0 || afterClose();\n      }\n    }\n    afterOpenChange === null || afterOpenChange === void 0 || afterOpenChange(newVisible);\n  }\n  function onInternalClose(e) {\n    onClose === null || onClose === void 0 || onClose(e);\n  }\n\n  // >>> Content\n  var contentClickRef = useRef(false);\n  var contentTimeoutRef = useRef();\n\n  // We need record content click incase content popup out of dialog\n  var onContentMouseDown = function onContentMouseDown() {\n    clearTimeout(contentTimeoutRef.current);\n    contentClickRef.current = true;\n  };\n  var onContentMouseUp = function onContentMouseUp() {\n    contentTimeoutRef.current = setTimeout(function () {\n      contentClickRef.current = false;\n    });\n  };\n\n  // >>> Wrapper\n  // Close only when element not on dialog\n  var onWrapperClick = null;\n  if (maskClosable) {\n    onWrapperClick = function onWrapperClick(e) {\n      if (contentClickRef.current) {\n        contentClickRef.current = false;\n      } else if (wrapperRef.current === e.target) {\n        onInternalClose(e);\n      }\n    };\n  }\n  function onWrapperKeyDown(e) {\n    if (keyboard && e.keyCode === KeyCode.ESC) {\n      e.stopPropagation();\n      onInternalClose(e);\n      return;\n    }\n\n    // keep focus inside dialog\n    if (visible && e.keyCode === KeyCode.TAB) {\n      contentRef.current.changeActive(!e.shiftKey);\n    }\n  }\n\n  // ========================= Effect =========================\n  useEffect(function () {\n    if (visible) {\n      setAnimatedVisible(true);\n      saveLastOutSideActiveElementRef();\n    }\n  }, [visible]);\n\n  // Remove direct should also check the scroll bar update\n  useEffect(function () {\n    return function () {\n      clearTimeout(contentTimeoutRef.current);\n    };\n  }, []);\n  var mergedStyle = _objectSpread(_objectSpread(_objectSpread({\n    zIndex: zIndex\n  }, wrapStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.wrapper), {}, {\n    display: !animatedVisible ? 'none' : null\n  });\n\n  // ========================= Render =========================\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: classNames(\"\".concat(prefixCls, \"-root\"), rootClassName)\n  }, pickAttrs(props, {\n    data: true\n  })), /*#__PURE__*/React.createElement(Mask, {\n    prefixCls: prefixCls,\n    visible: mask && visible,\n    motionName: getMotionName(prefixCls, maskTransitionName, maskAnimation),\n    style: _objectSpread(_objectSpread({\n      zIndex: zIndex\n    }, maskStyle), modalStyles === null || modalStyles === void 0 ? void 0 : modalStyles.mask),\n    maskProps: maskProps,\n    className: modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.mask\n  }), /*#__PURE__*/React.createElement(\"div\", _extends({\n    tabIndex: -1,\n    onKeyDown: onWrapperKeyDown,\n    className: classNames(\"\".concat(prefixCls, \"-wrap\"), wrapClassName, modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.wrapper),\n    ref: wrapperRef,\n    onClick: onWrapperClick,\n    style: mergedStyle\n  }, wrapProps), /*#__PURE__*/React.createElement(Content, _extends({}, props, {\n    onMouseDown: onContentMouseDown,\n    onMouseUp: onContentMouseUp,\n    ref: contentRef,\n    closable: closable,\n    ariaId: ariaId,\n    prefixCls: prefixCls,\n    visible: visible && animatedVisible,\n    onClose: onInternalClose,\n    onVisibleChanged: onDialogVisibleChanged,\n    motionName: getMotionName(prefixCls, transitionName, animation)\n  }))));\n};\nexport default Dialog;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport Portal from '@rc-component/portal';\nimport * as React from 'react';\nimport { RefContext } from \"./context\";\nimport Dialog from \"./Dialog\";\n// fix issue #10656\n/*\n * getContainer remarks\n * Custom container should not be return, because in the Portal component, it will remove the\n * return container element here, if the custom container is the only child of it's component,\n * like issue #10656, It will has a conflict with removeChild method in react-dom.\n * So here should add a child (div element) to custom container.\n * */\n\nvar DialogWrap = function DialogWrap(props) {\n  var visible = props.visible,\n    getContainer = props.getContainer,\n    forceRender = props.forceRender,\n    _props$destroyOnClose = props.destroyOnClose,\n    destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,\n    _afterClose = props.afterClose,\n    panelRef = props.panelRef;\n  var _React$useState = React.useState(visible),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    animatedVisible = _React$useState2[0],\n    setAnimatedVisible = _React$useState2[1];\n  var refContext = React.useMemo(function () {\n    return {\n      panel: panelRef\n    };\n  }, [panelRef]);\n  React.useEffect(function () {\n    if (visible) {\n      setAnimatedVisible(true);\n    }\n  }, [visible]);\n\n  // Destroy on close will remove wrapped div\n  if (!forceRender && destroyOnClose && !animatedVisible) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(RefContext.Provider, {\n    value: refContext\n  }, /*#__PURE__*/React.createElement(Portal, {\n    open: visible || forceRender || animatedVisible,\n    autoDestroy: false,\n    getContainer: getContainer,\n    autoLock: visible || animatedVisible\n  }, /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n    destroyOnClose: destroyOnClose,\n    afterClose: function afterClose() {\n      _afterClose === null || _afterClose === void 0 || _afterClose();\n      setAnimatedVisible(false);\n    }\n  }))));\n};\nDialogWrap.displayName = 'Dialog';\nexport default DialogWrap;","import DialogWrap from \"./DialogWrap\";\nimport Panel from \"./Dialog/Content/Panel\";\nexport { Panel };\nexport default DialogWrap;","\"use client\";\n\nimport React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nexport function pickClosable(context) {\n  if (!context) {\n    return undefined;\n  }\n  return {\n    closable: context.closable,\n    closeIcon: context.closeIcon\n  };\n}\n/** Convert `closable` and `closeIcon` to config object */\nfunction useClosableConfig(closableCollection) {\n  const {\n    closable,\n    closeIcon\n  } = closableCollection || {};\n  return React.useMemo(() => {\n    if (\n    // If `closable`, whatever rest be should be true\n    !closable && (closable === false || closeIcon === false || closeIcon === null)) {\n      return false;\n    }\n    if (closable === undefined && closeIcon === undefined) {\n      return null;\n    }\n    let closableConfig = {\n      closeIcon: typeof closeIcon !== 'boolean' && closeIcon !== null ? closeIcon : undefined\n    };\n    if (closable && typeof closable === 'object') {\n      closableConfig = Object.assign(Object.assign({}, closableConfig), closable);\n    }\n    return closableConfig;\n  }, [closable, closeIcon]);\n}\n/**\n * Assign object without `undefined` field. Will skip if is `false`.\n * This helps to handle both closableConfig or false\n */\nfunction assignWithoutUndefined() {\n  const target = {};\n  for (var _len = arguments.length, objList = new Array(_len), _key = 0; _key < _len; _key++) {\n    objList[_key] = arguments[_key];\n  }\n  objList.forEach(obj => {\n    if (obj) {\n      Object.keys(obj).forEach(key => {\n        if (obj[key] !== undefined) {\n          target[key] = obj[key];\n        }\n      });\n    }\n  });\n  return target;\n}\n/** Use same object to support `useMemo` optimization */\nconst EmptyFallbackCloseCollection = {};\nexport default function useClosable(propCloseCollection, contextCloseCollection) {\n  let fallbackCloseCollection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EmptyFallbackCloseCollection;\n  // Align the `props`, `context` `fallback` to config object first\n  const propCloseConfig = useClosableConfig(propCloseCollection);\n  const contextCloseConfig = useClosableConfig(contextCloseCollection);\n  const closeBtnIsDisabled = typeof propCloseConfig !== 'boolean' ? !!(propCloseConfig === null || propCloseConfig === void 0 ? void 0 : propCloseConfig.disabled) : false;\n  const mergedFallbackCloseCollection = React.useMemo(() => Object.assign({\n    closeIcon: /*#__PURE__*/React.createElement(CloseOutlined, null)\n  }, fallbackCloseCollection), [fallbackCloseCollection]);\n  // Use fallback logic to fill the config\n  const mergedClosableConfig = React.useMemo(() => {\n    // ================ Props First ================\n    // Skip if prop is disabled\n    if (propCloseConfig === false) {\n      return false;\n    }\n    if (propCloseConfig) {\n      return assignWithoutUndefined(mergedFallbackCloseCollection, contextCloseConfig, propCloseConfig);\n    }\n    // =============== Context Second ==============\n    // Skip if context is disabled\n    if (contextCloseConfig === false) {\n      return false;\n    }\n    if (contextCloseConfig) {\n      return assignWithoutUndefined(mergedFallbackCloseCollection, contextCloseConfig);\n    }\n    // ============= Fallback Default ==============\n    return !mergedFallbackCloseCollection.closable ? false : mergedFallbackCloseCollection;\n  }, [propCloseConfig, contextCloseConfig, mergedFallbackCloseCollection]);\n  // Calculate the final closeIcon\n  return React.useMemo(() => {\n    if (mergedClosableConfig === false) {\n      return [false, null, closeBtnIsDisabled];\n    }\n    const {\n      closeIconRender\n    } = mergedFallbackCloseCollection;\n    const {\n      closeIcon\n    } = mergedClosableConfig;\n    let mergedCloseIcon = closeIcon;\n    if (mergedCloseIcon !== null && mergedCloseIcon !== undefined) {\n      // Wrap the closeIcon if needed\n      if (closeIconRender) {\n        mergedCloseIcon = closeIconRender(closeIcon);\n      }\n      // Wrap the closeIcon with aria props\n      const ariaProps = pickAttrs(mergedClosableConfig, true);\n      if (Object.keys(ariaProps).length) {\n        mergedCloseIcon = /*#__PURE__*/React.isValidElement(mergedCloseIcon) ? (/*#__PURE__*/React.cloneElement(mergedCloseIcon, ariaProps)) : (/*#__PURE__*/React.createElement(\"span\", Object.assign({}, ariaProps), mergedCloseIcon));\n      }\n    }\n    return [true, mergedCloseIcon, closeBtnIsDisabled];\n  }, [mergedClosableConfig, mergedFallbackCloseCollection]);\n}","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { isStyleSupport } from \"rc-util/es/Dom/styleChecker\";\nexport const canUseDocElement = () => canUseDom() && window.document.documentElement;\nexport { isStyleSupport };","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nconst Element = props => {\n  const {\n    prefixCls,\n    className,\n    style,\n    size,\n    shape\n  } = props;\n  const sizeCls = classNames({\n    [`${prefixCls}-lg`]: size === 'large',\n    [`${prefixCls}-sm`]: size === 'small'\n  });\n  const shapeCls = classNames({\n    [`${prefixCls}-circle`]: shape === 'circle',\n    [`${prefixCls}-square`]: shape === 'square',\n    [`${prefixCls}-round`]: shape === 'round'\n  });\n  const sizeStyle = React.useMemo(() => typeof size === 'number' ? {\n    width: size,\n    height: size,\n    lineHeight: `${size}px`\n  } : {}, [size]);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(prefixCls, sizeCls, shapeCls, className),\n    style: Object.assign(Object.assign({}, sizeStyle), style)\n  });\n};\nexport default Element;","import { Keyframes, unit } from '@ant-design/cssinjs';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst skeletonClsLoading = new Keyframes(`ant-skeleton-loading`, {\n  '0%': {\n    backgroundPosition: '100% 50%'\n  },\n  '100%': {\n    backgroundPosition: '0 50%'\n  }\n});\nconst genSkeletonElementCommonSize = size => ({\n  height: size,\n  lineHeight: unit(size)\n});\nconst genSkeletonElementAvatarSize = size => Object.assign({\n  width: size\n}, genSkeletonElementCommonSize(size));\nconst genSkeletonColor = token => ({\n  background: token.skeletonLoadingBackground,\n  backgroundSize: '400% 100%',\n  animationName: skeletonClsLoading,\n  animationDuration: token.skeletonLoadingMotionDuration,\n  animationTimingFunction: 'ease',\n  animationIterationCount: 'infinite'\n});\nconst genSkeletonElementInputSize = (size, calc) => Object.assign({\n  width: calc(size).mul(5).equal(),\n  minWidth: calc(size).mul(5).equal()\n}, genSkeletonElementCommonSize(size));\nconst genSkeletonElementAvatar = token => {\n  const {\n    skeletonAvatarCls,\n    gradientFromColor,\n    controlHeight,\n    controlHeightLG,\n    controlHeightSM\n  } = token;\n  return {\n    [skeletonAvatarCls]: Object.assign({\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: gradientFromColor\n    }, genSkeletonElementAvatarSize(controlHeight)),\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-circle`]: {\n      borderRadius: '50%'\n    },\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-lg`]: Object.assign({}, genSkeletonElementAvatarSize(controlHeightLG)),\n    [`${skeletonAvatarCls}${skeletonAvatarCls}-sm`]: Object.assign({}, genSkeletonElementAvatarSize(controlHeightSM))\n  };\n};\nconst genSkeletonElementInput = token => {\n  const {\n    controlHeight,\n    borderRadiusSM,\n    skeletonInputCls,\n    controlHeightLG,\n    controlHeightSM,\n    gradientFromColor,\n    calc\n  } = token;\n  return {\n    [skeletonInputCls]: Object.assign({\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: gradientFromColor,\n      borderRadius: borderRadiusSM\n    }, genSkeletonElementInputSize(controlHeight, calc)),\n    [`${skeletonInputCls}-lg`]: Object.assign({}, genSkeletonElementInputSize(controlHeightLG, calc)),\n    [`${skeletonInputCls}-sm`]: Object.assign({}, genSkeletonElementInputSize(controlHeightSM, calc))\n  };\n};\nconst genSkeletonElementImageSize = size => Object.assign({\n  width: size\n}, genSkeletonElementCommonSize(size));\nconst genSkeletonElementImage = token => {\n  const {\n    skeletonImageCls,\n    imageSizeBase,\n    gradientFromColor,\n    borderRadiusSM,\n    calc\n  } = token;\n  return {\n    [skeletonImageCls]: Object.assign(Object.assign({\n      display: 'inline-flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      verticalAlign: 'middle',\n      background: gradientFromColor,\n      borderRadius: borderRadiusSM\n    }, genSkeletonElementImageSize(calc(imageSizeBase).mul(2).equal())), {\n      [`${skeletonImageCls}-path`]: {\n        fill: '#bfbfbf'\n      },\n      [`${skeletonImageCls}-svg`]: Object.assign(Object.assign({}, genSkeletonElementImageSize(imageSizeBase)), {\n        maxWidth: calc(imageSizeBase).mul(4).equal(),\n        maxHeight: calc(imageSizeBase).mul(4).equal()\n      }),\n      [`${skeletonImageCls}-svg${skeletonImageCls}-svg-circle`]: {\n        borderRadius: '50%'\n      }\n    }),\n    [`${skeletonImageCls}${skeletonImageCls}-circle`]: {\n      borderRadius: '50%'\n    }\n  };\n};\nconst genSkeletonElementButtonShape = (token, size, buttonCls) => {\n  const {\n    skeletonButtonCls\n  } = token;\n  return {\n    [`${buttonCls}${skeletonButtonCls}-circle`]: {\n      width: size,\n      minWidth: size,\n      borderRadius: '50%'\n    },\n    [`${buttonCls}${skeletonButtonCls}-round`]: {\n      borderRadius: size\n    }\n  };\n};\nconst genSkeletonElementButtonSize = (size, calc) => Object.assign({\n  width: calc(size).mul(2).equal(),\n  minWidth: calc(size).mul(2).equal()\n}, genSkeletonElementCommonSize(size));\nconst genSkeletonElementButton = token => {\n  const {\n    borderRadiusSM,\n    skeletonButtonCls,\n    controlHeight,\n    controlHeightLG,\n    controlHeightSM,\n    gradientFromColor,\n    calc\n  } = token;\n  return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({\n    [skeletonButtonCls]: Object.assign({\n      display: 'inline-block',\n      verticalAlign: 'top',\n      background: gradientFromColor,\n      borderRadius: borderRadiusSM,\n      width: calc(controlHeight).mul(2).equal(),\n      minWidth: calc(controlHeight).mul(2).equal()\n    }, genSkeletonElementButtonSize(controlHeight, calc))\n  }, genSkeletonElementButtonShape(token, controlHeight, skeletonButtonCls)), {\n    [`${skeletonButtonCls}-lg`]: Object.assign({}, genSkeletonElementButtonSize(controlHeightLG, calc))\n  }), genSkeletonElementButtonShape(token, controlHeightLG, `${skeletonButtonCls}-lg`)), {\n    [`${skeletonButtonCls}-sm`]: Object.assign({}, genSkeletonElementButtonSize(controlHeightSM, calc))\n  }), genSkeletonElementButtonShape(token, controlHeightSM, `${skeletonButtonCls}-sm`));\n};\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n  const {\n    componentCls,\n    skeletonAvatarCls,\n    skeletonTitleCls,\n    skeletonParagraphCls,\n    skeletonButtonCls,\n    skeletonInputCls,\n    skeletonImageCls,\n    controlHeight,\n    controlHeightLG,\n    controlHeightSM,\n    gradientFromColor,\n    padding,\n    marginSM,\n    borderRadius,\n    titleHeight,\n    blockRadius,\n    paragraphLiHeight,\n    controlHeightXS,\n    paragraphMarginTop\n  } = token;\n  return {\n    [componentCls]: {\n      display: 'table',\n      width: '100%',\n      [`${componentCls}-header`]: {\n        display: 'table-cell',\n        paddingInlineEnd: padding,\n        verticalAlign: 'top',\n        // Avatar\n        [skeletonAvatarCls]: Object.assign({\n          display: 'inline-block',\n          verticalAlign: 'top',\n          background: gradientFromColor\n        }, genSkeletonElementAvatarSize(controlHeight)),\n        [`${skeletonAvatarCls}-circle`]: {\n          borderRadius: '50%'\n        },\n        [`${skeletonAvatarCls}-lg`]: Object.assign({}, genSkeletonElementAvatarSize(controlHeightLG)),\n        [`${skeletonAvatarCls}-sm`]: Object.assign({}, genSkeletonElementAvatarSize(controlHeightSM))\n      },\n      [`${componentCls}-content`]: {\n        display: 'table-cell',\n        width: '100%',\n        verticalAlign: 'top',\n        // Title\n        [skeletonTitleCls]: {\n          width: '100%',\n          height: titleHeight,\n          background: gradientFromColor,\n          borderRadius: blockRadius,\n          [`+ ${skeletonParagraphCls}`]: {\n            marginBlockStart: controlHeightSM\n          }\n        },\n        // paragraph\n        [skeletonParagraphCls]: {\n          padding: 0,\n          '> li': {\n            width: '100%',\n            height: paragraphLiHeight,\n            listStyle: 'none',\n            background: gradientFromColor,\n            borderRadius: blockRadius,\n            '+ li': {\n              marginBlockStart: controlHeightXS\n            }\n          }\n        },\n        [`${skeletonParagraphCls}> li:last-child:not(:first-child):not(:nth-child(2))`]: {\n          width: '61%'\n        }\n      },\n      [`&-round ${componentCls}-content`]: {\n        [`${skeletonTitleCls}, ${skeletonParagraphCls} > li`]: {\n          borderRadius\n        }\n      }\n    },\n    [`${componentCls}-with-avatar ${componentCls}-content`]: {\n      // Title\n      [skeletonTitleCls]: {\n        marginBlockStart: marginSM,\n        [`+ ${skeletonParagraphCls}`]: {\n          marginBlockStart: paragraphMarginTop\n        }\n      }\n    },\n    // Skeleton element\n    [`${componentCls}${componentCls}-element`]: Object.assign(Object.assign(Object.assign(Object.assign({\n      display: 'inline-block',\n      width: 'auto'\n    }, genSkeletonElementButton(token)), genSkeletonElementAvatar(token)), genSkeletonElementInput(token)), genSkeletonElementImage(token)),\n    // Skeleton Block Button, Input\n    [`${componentCls}${componentCls}-block`]: {\n      width: '100%',\n      [skeletonButtonCls]: {\n        width: '100%'\n      },\n      [skeletonInputCls]: {\n        width: '100%'\n      }\n    },\n    // With active animation\n    [`${componentCls}${componentCls}-active`]: {\n      [`\n        ${skeletonTitleCls},\n        ${skeletonParagraphCls} > li,\n        ${skeletonAvatarCls},\n        ${skeletonButtonCls},\n        ${skeletonInputCls},\n        ${skeletonImageCls}\n      `]: Object.assign({}, genSkeletonColor(token))\n    }\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => {\n  const {\n    colorFillContent,\n    colorFill\n  } = token;\n  const gradientFromColor = colorFillContent;\n  const gradientToColor = colorFill;\n  return {\n    color: gradientFromColor,\n    colorGradientEnd: gradientToColor,\n    gradientFromColor,\n    gradientToColor,\n    titleHeight: token.controlHeight / 2,\n    blockRadius: token.borderRadiusSM,\n    paragraphMarginTop: token.marginLG + token.marginXXS,\n    paragraphLiHeight: token.controlHeight / 2\n  };\n};\nexport default genStyleHooks('Skeleton', token => {\n  const {\n    componentCls,\n    calc\n  } = token;\n  const skeletonToken = mergeToken(token, {\n    skeletonAvatarCls: `${componentCls}-avatar`,\n    skeletonTitleCls: `${componentCls}-title`,\n    skeletonParagraphCls: `${componentCls}-paragraph`,\n    skeletonButtonCls: `${componentCls}-button`,\n    skeletonInputCls: `${componentCls}-input`,\n    skeletonImageCls: `${componentCls}-image`,\n    imageSizeBase: calc(token.controlHeight).mul(1.5).equal(),\n    borderRadius: 100,\n    // Large number to make capsule shape\n    skeletonLoadingBackground: `linear-gradient(90deg, ${token.gradientFromColor} 25%, ${token.gradientToColor} 37%, ${token.gradientFromColor} 63%)`,\n    skeletonLoadingMotionDuration: '1.4s'\n  });\n  return [genBaseStyle(skeletonToken)];\n}, prepareComponentToken, {\n  deprecatedTokens: [['color', 'gradientFromColor'], ['colorGradientEnd', 'gradientToColor']]\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nconst SkeletonAvatar = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    active,\n    shape = 'circle',\n    size = 'default'\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const otherProps = omit(props, ['prefixCls', 'className']);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active\n  }, className, rootClassName, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, Object.assign({\n    prefixCls: `${prefixCls}-avatar`,\n    shape: shape,\n    size: size\n  }, otherProps))));\n};\nexport default SkeletonAvatar;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nconst path = 'M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z';\nconst SkeletonImage = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    style,\n    active\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active\n  }, className, rootClassName, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-image`, className),\n    style: style\n  }, /*#__PURE__*/React.createElement(\"svg\", {\n    viewBox: \"0 0 1098 1024\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    className: `${prefixCls}-image-svg`\n  }, /*#__PURE__*/React.createElement(\"title\", null, \"Image placeholder\"), /*#__PURE__*/React.createElement(\"path\", {\n    d: path,\n    className: `${prefixCls}-image-path`\n  })))));\n};\nexport default SkeletonImage;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nconst SkeletonInput = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    active,\n    block,\n    size = 'default'\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const otherProps = omit(props, ['prefixCls']);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active,\n    [`${prefixCls}-block`]: block\n  }, className, rootClassName, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, Object.assign({\n    prefixCls: `${prefixCls}-input`,\n    size: size\n  }, otherProps))));\n};\nexport default SkeletonInput;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nconst SkeletonNode = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    style,\n    active,\n    children\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active\n  }, hashId, className, rootClassName, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-image`, className),\n    style: style\n  }, children)));\n};\nexport default SkeletonNode;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nconst getWidth = (index, props) => {\n  const {\n    width,\n    rows = 2\n  } = props;\n  if (Array.isArray(width)) {\n    return width[index];\n  }\n  // last paragraph\n  if (rows - 1 === index) {\n    return width;\n  }\n  return undefined;\n};\nconst Paragraph = props => {\n  const {\n    prefixCls,\n    className,\n    style,\n    rows = 0\n  } = props;\n  const rowList = Array.from({\n    length: rows\n  }).map((_, index) => (\n  /*#__PURE__*/\n  // eslint-disable-next-line react/no-array-index-key\n  React.createElement(\"li\", {\n    key: index,\n    style: {\n      width: getWidth(index, props)\n    }\n  })));\n  return /*#__PURE__*/React.createElement(\"ul\", {\n    className: classNames(prefixCls, className),\n    style: style\n  }, rowList);\n};\nexport default Paragraph;","\"use client\";\n\n/* eslint-disable jsx-a11y/heading-has-content */\nimport * as React from 'react';\nimport classNames from 'classnames';\nconst Title = _ref => {\n  let {\n    prefixCls,\n    className,\n    width,\n    style\n  } = _ref;\n  return (\n    /*#__PURE__*/\n    // biome-ignore lint/a11y/useHeadingContent: HOC here\n    React.createElement(\"h3\", {\n      className: classNames(prefixCls, className),\n      style: Object.assign({\n        width\n      }, style)\n    })\n  );\n};\nexport default Title;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useComponentConfig } from '../config-provider/context';\nimport SkeletonAvatar from './Avatar';\nimport SkeletonButton from './Button';\nimport Element from './Element';\nimport SkeletonImage from './Image';\nimport SkeletonInput from './Input';\nimport SkeletonNode from './Node';\nimport Paragraph from './Paragraph';\nimport useStyle from './style';\nimport Title from './Title';\nfunction getComponentProps(prop) {\n  if (prop && typeof prop === 'object') {\n    return prop;\n  }\n  return {};\n}\nfunction getAvatarBasicProps(hasTitle, hasParagraph) {\n  if (hasTitle && !hasParagraph) {\n    // Square avatar\n    return {\n      size: 'large',\n      shape: 'square'\n    };\n  }\n  return {\n    size: 'large',\n    shape: 'circle'\n  };\n}\nfunction getTitleBasicProps(hasAvatar, hasParagraph) {\n  if (!hasAvatar && hasParagraph) {\n    return {\n      width: '38%'\n    };\n  }\n  if (hasAvatar && hasParagraph) {\n    return {\n      width: '50%'\n    };\n  }\n  return {};\n}\nfunction getParagraphBasicProps(hasAvatar, hasTitle) {\n  const basicProps = {};\n  // Width\n  if (!hasAvatar || !hasTitle) {\n    basicProps.width = '61%';\n  }\n  // Rows\n  if (!hasAvatar && hasTitle) {\n    basicProps.rows = 3;\n  } else {\n    basicProps.rows = 2;\n  }\n  return basicProps;\n}\nconst Skeleton = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    loading,\n    className,\n    rootClassName,\n    style,\n    children,\n    avatar = false,\n    title = true,\n    paragraph = true,\n    active,\n    round\n  } = props;\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('skeleton');\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  if (loading || !('loading' in props)) {\n    const hasAvatar = !!avatar;\n    const hasTitle = !!title;\n    const hasParagraph = !!paragraph;\n    // Avatar\n    let avatarNode;\n    if (hasAvatar) {\n      const avatarProps = Object.assign(Object.assign({\n        prefixCls: `${prefixCls}-avatar`\n      }, getAvatarBasicProps(hasTitle, hasParagraph)), getComponentProps(avatar));\n      // We direct use SkeletonElement as avatar in skeleton internal.\n      avatarNode = /*#__PURE__*/React.createElement(\"div\", {\n        className: `${prefixCls}-header`\n      }, /*#__PURE__*/React.createElement(Element, Object.assign({}, avatarProps)));\n    }\n    let contentNode;\n    if (hasTitle || hasParagraph) {\n      // Title\n      let $title;\n      if (hasTitle) {\n        const titleProps = Object.assign(Object.assign({\n          prefixCls: `${prefixCls}-title`\n        }, getTitleBasicProps(hasAvatar, hasParagraph)), getComponentProps(title));\n        $title = /*#__PURE__*/React.createElement(Title, Object.assign({}, titleProps));\n      }\n      // Paragraph\n      let paragraphNode;\n      if (hasParagraph) {\n        const paragraphProps = Object.assign(Object.assign({\n          prefixCls: `${prefixCls}-paragraph`\n        }, getParagraphBasicProps(hasAvatar, hasTitle)), getComponentProps(paragraph));\n        paragraphNode = /*#__PURE__*/React.createElement(Paragraph, Object.assign({}, paragraphProps));\n      }\n      contentNode = /*#__PURE__*/React.createElement(\"div\", {\n        className: `${prefixCls}-content`\n      }, $title, paragraphNode);\n    }\n    const cls = classNames(prefixCls, {\n      [`${prefixCls}-with-avatar`]: hasAvatar,\n      [`${prefixCls}-active`]: active,\n      [`${prefixCls}-rtl`]: direction === 'rtl',\n      [`${prefixCls}-round`]: round\n    }, contextClassName, className, rootClassName, hashId, cssVarCls);\n    return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n      className: cls,\n      style: Object.assign(Object.assign({}, contextStyle), style)\n    }, avatarNode, contentNode));\n  }\n  return children !== null && children !== void 0 ? children : null;\n};\nSkeleton.Button = SkeletonButton;\nSkeleton.Avatar = SkeletonAvatar;\nSkeleton.Input = SkeletonInput;\nSkeleton.Image = SkeletonImage;\nSkeleton.Node = SkeletonNode;\nif (process.env.NODE_ENV !== 'production') {\n  Skeleton.displayName = 'Skeleton';\n}\nexport default Skeleton;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nconst SkeletonButton = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    rootClassName,\n    active,\n    block = false,\n    size = 'default'\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const otherProps = omit(props, ['prefixCls']);\n  const cls = classNames(prefixCls, `${prefixCls}-element`, {\n    [`${prefixCls}-active`]: active,\n    [`${prefixCls}-block`]: block\n  }, className, rootClassName, hashId, cssVarCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, Object.assign({\n    prefixCls: `${prefixCls}-button`,\n    size: size\n  }, otherProps))));\n};\nexport default SkeletonButton;","\"use client\";\n\nimport Skeleton from './Skeleton';\nexport default Skeleton;","import * as React from 'react';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nfunction voidFunc() {}\nconst WatermarkContext = /*#__PURE__*/React.createContext({\n  add: voidFunc,\n  remove: voidFunc\n});\nexport function usePanelRef(panelSelector) {\n  const watermark = React.useContext(WatermarkContext);\n  const panelEleRef = React.useRef(null);\n  const panelRef = useEvent(ele => {\n    if (ele) {\n      const innerContentEle = panelSelector ? ele.querySelector(panelSelector) : ele;\n      watermark.add(innerContentEle);\n      panelEleRef.current = innerContentEle;\n    } else {\n      watermark.remove(panelEleRef.current);\n    }\n  });\n  return panelRef;\n}\nexport default WatermarkContext;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport Button from '../../button';\nimport { ModalContext } from '../context';\nconst NormalCancelBtn = () => {\n  const {\n    cancelButtonProps,\n    cancelTextLocale,\n    onCancel\n  } = useContext(ModalContext);\n  return /*#__PURE__*/React.createElement(Button, Object.assign({\n    onClick: onCancel\n  }, cancelButtonProps), cancelTextLocale);\n};\nexport default NormalCancelBtn;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport Button from '../../button';\nimport { convertLegacyProps } from '../../button/buttonHelpers';\nimport { ModalContext } from '../context';\nconst NormalOkBtn = () => {\n  const {\n    confirmLoading,\n    okButtonProps,\n    okType,\n    okTextLocale,\n    onOk\n  } = useContext(ModalContext);\n  return /*#__PURE__*/React.createElement(Button, Object.assign({}, convertLegacyProps(okType), {\n    loading: confirmLoading,\n    onClick: onOk\n  }, okButtonProps), okTextLocale);\n};\nexport default NormalOkBtn;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport { DisabledContextProvider } from '../config-provider/DisabledContext';\nimport { useLocale } from '../locale';\nimport NormalCancelBtn from './components/NormalCancelBtn';\nimport NormalOkBtn from './components/NormalOkBtn';\nimport { ModalContextProvider } from './context';\nimport { getConfirmLocale } from './locale';\nexport function renderCloseIcon(prefixCls, closeIcon) {\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: `${prefixCls}-close-x`\n  }, closeIcon || /*#__PURE__*/React.createElement(CloseOutlined, {\n    className: `${prefixCls}-close-icon`\n  }));\n}\nexport const Footer = props => {\n  const {\n    okText,\n    okType = 'primary',\n    cancelText,\n    confirmLoading,\n    onOk,\n    onCancel,\n    okButtonProps,\n    cancelButtonProps,\n    footer\n  } = props;\n  const [locale] = useLocale('Modal', getConfirmLocale());\n  // ================== Locale Text ==================\n  const okTextLocale = okText || (locale === null || locale === void 0 ? void 0 : locale.okText);\n  const cancelTextLocale = cancelText || (locale === null || locale === void 0 ? void 0 : locale.cancelText);\n  // ================= Context Value =================\n  const btnCtxValue = {\n    confirmLoading,\n    okButtonProps,\n    cancelButtonProps,\n    okTextLocale,\n    cancelTextLocale,\n    okType,\n    onOk,\n    onCancel\n  };\n  const btnCtxValueMemo = React.useMemo(() => btnCtxValue, _toConsumableArray(Object.values(btnCtxValue)));\n  let footerNode;\n  if (typeof footer === 'function' || typeof footer === 'undefined') {\n    footerNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NormalCancelBtn, null), /*#__PURE__*/React.createElement(NormalOkBtn, null));\n    if (typeof footer === 'function') {\n      footerNode = footer(footerNode, {\n        OkBtn: NormalOkBtn,\n        CancelBtn: NormalCancelBtn\n      });\n    }\n    footerNode = /*#__PURE__*/React.createElement(ModalContextProvider, {\n      value: btnCtxValueMemo\n    }, footerNode);\n  } else {\n    footerNode = footer;\n  }\n  return /*#__PURE__*/React.createElement(DisabledContextProvider, {\n    disabled: false\n  }, footerNode);\n};","import { unit } from '@ant-design/cssinjs';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Row-Shared ==============================\nconst genGridRowStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    // Grid system\n    [componentCls]: {\n      display: 'flex',\n      flexFlow: 'row wrap',\n      minWidth: 0,\n      '&::before, &::after': {\n        display: 'flex'\n      },\n      '&-no-wrap': {\n        flexWrap: 'nowrap'\n      },\n      // The origin of the X-axis\n      '&-start': {\n        justifyContent: 'flex-start'\n      },\n      // The center of the X-axis\n      '&-center': {\n        justifyContent: 'center'\n      },\n      // The opposite of the X-axis\n      '&-end': {\n        justifyContent: 'flex-end'\n      },\n      '&-space-between': {\n        justifyContent: 'space-between'\n      },\n      '&-space-around': {\n        justifyContent: 'space-around'\n      },\n      '&-space-evenly': {\n        justifyContent: 'space-evenly'\n      },\n      // Align at the top\n      '&-top': {\n        alignItems: 'flex-start'\n      },\n      // Align at the center\n      '&-middle': {\n        alignItems: 'center'\n      },\n      '&-bottom': {\n        alignItems: 'flex-end'\n      }\n    }\n  };\n};\n// ============================== Col-Shared ==============================\nconst genGridColStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    // Grid system\n    [componentCls]: {\n      position: 'relative',\n      maxWidth: '100%',\n      // Prevent columns from collapsing when empty\n      minHeight: 1\n    }\n  };\n};\nconst genLoopGridColumnsStyle = (token, sizeCls) => {\n  const {\n    prefixCls,\n    componentCls,\n    gridColumns\n  } = token;\n  const gridColumnsStyle = {};\n  for (let i = gridColumns; i >= 0; i--) {\n    if (i === 0) {\n      gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = {\n        display: 'none'\n      };\n      gridColumnsStyle[`${componentCls}-push-${i}`] = {\n        insetInlineStart: 'auto'\n      };\n      gridColumnsStyle[`${componentCls}-pull-${i}`] = {\n        insetInlineEnd: 'auto'\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {\n        insetInlineStart: 'auto'\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {\n        insetInlineEnd: 'auto'\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {\n        marginInlineStart: 0\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {\n        order: 0\n      };\n    } else {\n      gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = [\n      // https://github.com/ant-design/ant-design/issues/44456\n      // Form set `display: flex` on Col which will override `display: block`.\n      // Let's get it from css variable to support override.\n      {\n        ['--ant-display']: 'block',\n        // Fallback to display if variable not support\n        display: 'block'\n      }, {\n        display: 'var(--ant-display)',\n        flex: `0 0 ${i / gridColumns * 100}%`,\n        maxWidth: `${i / gridColumns * 100}%`\n      }];\n      gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {\n        insetInlineStart: `${i / gridColumns * 100}%`\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {\n        insetInlineEnd: `${i / gridColumns * 100}%`\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {\n        marginInlineStart: `${i / gridColumns * 100}%`\n      };\n      gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {\n        order: i\n      };\n    }\n  }\n  // Flex CSS Var\n  gridColumnsStyle[`${componentCls}${sizeCls}-flex`] = {\n    flex: `var(--${prefixCls}${sizeCls}-flex)`\n  };\n  return gridColumnsStyle;\n};\nconst genGridStyle = (token, sizeCls) => genLoopGridColumnsStyle(token, sizeCls);\nconst genGridMediaStyle = (token, screenSize, sizeCls) => ({\n  [`@media (min-width: ${unit(screenSize)})`]: Object.assign({}, genGridStyle(token, sizeCls))\n});\nexport const prepareRowComponentToken = () => ({});\nexport const prepareColComponentToken = () => ({});\n// ============================== Export ==============================\nexport const useRowStyle = genStyleHooks('Grid', genGridRowStyle, prepareRowComponentToken);\nexport const getMediaSize = token => {\n  const mediaSizesMap = {\n    xs: token.screenXSMin,\n    sm: token.screenSMMin,\n    md: token.screenMDMin,\n    lg: token.screenLGMin,\n    xl: token.screenXLMin,\n    xxl: token.screenXXLMin\n  };\n  return mediaSizesMap;\n};\nexport const useColStyle = genStyleHooks('Grid', token => {\n  const gridToken = mergeToken(token, {\n    gridColumns: 24 // Row is divided into 24 parts in Grid\n  });\n  const gridMediaSizesMap = getMediaSize(gridToken);\n  delete gridMediaSizesMap.xs;\n  return [genGridColStyle(gridToken), genGridStyle(gridToken, ''), genGridStyle(gridToken, '-xs'), Object.keys(gridMediaSizesMap).map(key => genGridMediaStyle(gridToken, gridMediaSizesMap[key], `-${key}`)).reduce((pre, cur) => Object.assign(Object.assign({}, pre), cur), {})];\n}, prepareColComponentToken);","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const fadeIn = new Keyframes('antFadeIn', {\n  '0%': {\n    opacity: 0\n  },\n  '100%': {\n    opacity: 1\n  }\n});\nexport const fadeOut = new Keyframes('antFadeOut', {\n  '0%': {\n    opacity: 1\n  },\n  '100%': {\n    opacity: 0\n  }\n});\nexport const initFadeMotion = function (token) {\n  let sameLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  const {\n    antCls\n  } = token;\n  const motionCls = `${antCls}-fade`;\n  const sameLevelPrefix = sameLevel ? '&' : '';\n  return [initMotion(motionCls, fadeIn, fadeOut, token.motionDurationMid, sameLevel), {\n    [`\n        ${sameLevelPrefix}${motionCls}-enter,\n        ${sameLevelPrefix}${motionCls}-appear\n      `]: {\n      opacity: 0,\n      animationTimingFunction: 'linear'\n    },\n    [`${sameLevelPrefix}${motionCls}-leave`]: {\n      animationTimingFunction: 'linear'\n    }\n  }];\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { unit } from '@ant-design/cssinjs';\nimport { getMediaSize } from '../../grid/style';\nimport { genFocusStyle, resetComponent } from '../../style';\nimport { initFadeMotion, initZoomMotion } from '../../style/motion';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nfunction box(position) {\n  return {\n    position,\n    inset: 0\n  };\n}\nexport const genModalMaskStyle = token => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return [{\n    [`${componentCls}-root`]: {\n      [`${componentCls}${antCls}-zoom-enter, ${componentCls}${antCls}-zoom-appear`]: {\n        // reset scale avoid mousePosition bug\n        transform: 'none',\n        opacity: 0,\n        animationDuration: token.motionDurationSlow,\n        // https://github.com/ant-design/ant-design/issues/11777\n        userSelect: 'none'\n      },\n      // https://github.com/ant-design/ant-design/issues/37329\n      // https://github.com/ant-design/ant-design/issues/40272\n      [`${componentCls}${antCls}-zoom-leave ${componentCls}-content`]: {\n        pointerEvents: 'none'\n      },\n      [`${componentCls}-mask`]: Object.assign(Object.assign({}, box('fixed')), {\n        zIndex: token.zIndexPopupBase,\n        height: '100%',\n        backgroundColor: token.colorBgMask,\n        pointerEvents: 'none',\n        [`${componentCls}-hidden`]: {\n          display: 'none'\n        }\n      }),\n      [`${componentCls}-wrap`]: Object.assign(Object.assign({}, box('fixed')), {\n        zIndex: token.zIndexPopupBase,\n        overflow: 'auto',\n        outline: 0,\n        WebkitOverflowScrolling: 'touch'\n      })\n    }\n  }, {\n    [`${componentCls}-root`]: initFadeMotion(token)\n  }];\n};\nconst genModalStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return [\n  // ======================== Root =========================\n  {\n    [`${componentCls}-root`]: {\n      [`${componentCls}-wrap-rtl`]: {\n        direction: 'rtl'\n      },\n      [`${componentCls}-centered`]: {\n        textAlign: 'center',\n        '&::before': {\n          display: 'inline-block',\n          width: 0,\n          height: '100%',\n          verticalAlign: 'middle',\n          content: '\"\"'\n        },\n        [componentCls]: {\n          top: 0,\n          display: 'inline-block',\n          paddingBottom: 0,\n          textAlign: 'start',\n          verticalAlign: 'middle'\n        }\n      },\n      [`@media (max-width: ${token.screenSMMax}px)`]: {\n        [componentCls]: {\n          maxWidth: 'calc(100vw - 16px)',\n          margin: `${unit(token.marginXS)} auto`\n        },\n        [`${componentCls}-centered`]: {\n          [componentCls]: {\n            flex: 1\n          }\n        }\n      }\n    }\n  },\n  // ======================== Modal ========================\n  {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      pointerEvents: 'none',\n      position: 'relative',\n      top: 100,\n      width: 'auto',\n      maxWidth: `calc(100vw - ${unit(token.calc(token.margin).mul(2).equal())})`,\n      margin: '0 auto',\n      paddingBottom: token.paddingLG,\n      [`${componentCls}-title`]: {\n        margin: 0,\n        color: token.titleColor,\n        fontWeight: token.fontWeightStrong,\n        fontSize: token.titleFontSize,\n        lineHeight: token.titleLineHeight,\n        wordWrap: 'break-word'\n      },\n      [`${componentCls}-content`]: {\n        position: 'relative',\n        backgroundColor: token.contentBg,\n        backgroundClip: 'padding-box',\n        border: 0,\n        borderRadius: token.borderRadiusLG,\n        boxShadow: token.boxShadow,\n        pointerEvents: 'auto',\n        padding: token.contentPadding\n      },\n      [`${componentCls}-close`]: Object.assign({\n        position: 'absolute',\n        top: token.calc(token.modalHeaderHeight).sub(token.modalCloseBtnSize).div(2).equal(),\n        insetInlineEnd: token.calc(token.modalHeaderHeight).sub(token.modalCloseBtnSize).div(2).equal(),\n        zIndex: token.calc(token.zIndexPopupBase).add(10).equal(),\n        padding: 0,\n        color: token.modalCloseIconColor,\n        fontWeight: token.fontWeightStrong,\n        lineHeight: 1,\n        textDecoration: 'none',\n        background: 'transparent',\n        borderRadius: token.borderRadiusSM,\n        width: token.modalCloseBtnSize,\n        height: token.modalCloseBtnSize,\n        border: 0,\n        outline: 0,\n        cursor: 'pointer',\n        transition: `color ${token.motionDurationMid}, background-color ${token.motionDurationMid}`,\n        '&-x': {\n          display: 'flex',\n          fontSize: token.fontSizeLG,\n          fontStyle: 'normal',\n          lineHeight: unit(token.modalCloseBtnSize),\n          justifyContent: 'center',\n          textTransform: 'none',\n          textRendering: 'auto'\n        },\n        '&:disabled': {\n          pointerEvents: 'none'\n        },\n        '&:hover': {\n          color: token.modalCloseIconHoverColor,\n          backgroundColor: token.colorBgTextHover,\n          textDecoration: 'none'\n        },\n        '&:active': {\n          backgroundColor: token.colorBgTextActive\n        }\n      }, genFocusStyle(token)),\n      [`${componentCls}-header`]: {\n        color: token.colorText,\n        background: token.headerBg,\n        borderRadius: `${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)} 0 0`,\n        marginBottom: token.headerMarginBottom,\n        padding: token.headerPadding,\n        borderBottom: token.headerBorderBottom\n      },\n      [`${componentCls}-body`]: {\n        fontSize: token.fontSize,\n        lineHeight: token.lineHeight,\n        wordWrap: 'break-word',\n        padding: token.bodyPadding,\n        [`${componentCls}-body-skeleton`]: {\n          width: '100%',\n          height: '100%',\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center',\n          margin: `${unit(token.margin)} auto`\n        }\n      },\n      [`${componentCls}-footer`]: {\n        textAlign: 'end',\n        background: token.footerBg,\n        marginTop: token.footerMarginTop,\n        padding: token.footerPadding,\n        borderTop: token.footerBorderTop,\n        borderRadius: token.footerBorderRadius,\n        [`> ${token.antCls}-btn + ${token.antCls}-btn`]: {\n          marginInlineStart: token.marginXS\n        }\n      },\n      [`${componentCls}-open`]: {\n        overflow: 'hidden'\n      }\n    })\n  },\n  // ======================== Pure =========================\n  {\n    [`${componentCls}-pure-panel`]: {\n      top: 'auto',\n      padding: 0,\n      display: 'flex',\n      flexDirection: 'column',\n      [`${componentCls}-content,\n          ${componentCls}-body,\n          ${componentCls}-confirm-body-wrapper`]: {\n        display: 'flex',\n        flexDirection: 'column',\n        flex: 'auto'\n      },\n      [`${componentCls}-confirm-body`]: {\n        marginBottom: 'auto'\n      }\n    }\n  }];\n};\nconst genRTLStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-root`]: {\n      [`${componentCls}-wrap-rtl`]: {\n        direction: 'rtl',\n        [`${componentCls}-confirm-body`]: {\n          direction: 'rtl'\n        }\n      }\n    }\n  };\n};\nconst genResponsiveWidthStyle = token => {\n  const {\n    componentCls\n  } = token;\n  const gridMediaSizesMap = getMediaSize(token);\n  delete gridMediaSizesMap.xs;\n  const responsiveStyles = Object.keys(gridMediaSizesMap).map(key => ({\n    [`@media (min-width: ${unit(gridMediaSizesMap[key])})`]: {\n      width: `var(--${componentCls.replace('.', '')}-${key}-width)`\n    }\n  }));\n  return {\n    [`${componentCls}-root`]: {\n      [componentCls]: [{\n        width: `var(--${componentCls.replace('.', '')}-xs-width)`\n      }].concat(_toConsumableArray(responsiveStyles))\n    }\n  };\n};\n// ============================== Export ==============================\nexport const prepareToken = token => {\n  const headerPaddingVertical = token.padding;\n  const headerFontSize = token.fontSizeHeading5;\n  const headerLineHeight = token.lineHeightHeading5;\n  const modalToken = mergeToken(token, {\n    modalHeaderHeight: token.calc(token.calc(headerLineHeight).mul(headerFontSize).equal()).add(token.calc(headerPaddingVertical).mul(2).equal()).equal(),\n    modalFooterBorderColorSplit: token.colorSplit,\n    modalFooterBorderStyle: token.lineType,\n    modalFooterBorderWidth: token.lineWidth,\n    modalCloseIconColor: token.colorIcon,\n    modalCloseIconHoverColor: token.colorIconHover,\n    modalCloseBtnSize: token.controlHeight,\n    modalConfirmIconSize: token.fontHeight,\n    modalTitleHeight: token.calc(token.titleFontSize).mul(token.titleLineHeight).equal()\n  });\n  return modalToken;\n};\nexport const prepareComponentToken = token => ({\n  footerBg: 'transparent',\n  headerBg: token.colorBgElevated,\n  titleLineHeight: token.lineHeightHeading5,\n  titleFontSize: token.fontSizeHeading5,\n  contentBg: token.colorBgElevated,\n  titleColor: token.colorTextHeading,\n  // internal\n  contentPadding: token.wireframe ? 0 : `${unit(token.paddingMD)} ${unit(token.paddingContentHorizontalLG)}`,\n  headerPadding: token.wireframe ? `${unit(token.padding)} ${unit(token.paddingLG)}` : 0,\n  headerBorderBottom: token.wireframe ? `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}` : 'none',\n  headerMarginBottom: token.wireframe ? 0 : token.marginXS,\n  bodyPadding: token.wireframe ? token.paddingLG : 0,\n  footerPadding: token.wireframe ? `${unit(token.paddingXS)} ${unit(token.padding)}` : 0,\n  footerBorderTop: token.wireframe ? `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}` : 'none',\n  footerBorderRadius: token.wireframe ? `0 0 ${unit(token.borderRadiusLG)} ${unit(token.borderRadiusLG)}` : 0,\n  footerMarginTop: token.wireframe ? 0 : token.marginSM,\n  confirmBodyPadding: token.wireframe ? `${unit(token.padding * 2)} ${unit(token.padding * 2)} ${unit(token.paddingLG)}` : 0,\n  confirmIconMarginInlineEnd: token.wireframe ? token.margin : token.marginSM,\n  confirmBtnsMarginTop: token.wireframe ? token.marginLG : token.marginSM\n});\nexport default genStyleHooks('Modal', token => {\n  const modalToken = prepareToken(token);\n  return [genModalStyle(modalToken), genRTLStyle(modalToken), genModalMaskStyle(modalToken), initZoomMotion(modalToken, 'zoom'), genResponsiveWidthStyle(modalToken)];\n}, prepareComponentToken, {\n  unitless: {\n    titleLineHeight: true\n  }\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport Dialog from 'rc-dialog';\nimport ContextIsolator from '../_util/ContextIsolator';\nimport useClosable, { pickClosable } from '../_util/hooks/useClosable';\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport { canUseDocElement } from '../_util/styleChecker';\nimport { devUseWarning } from '../_util/warning';\nimport zIndexContext from '../_util/zindexContext';\nimport { ConfigContext } from '../config-provider';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport Skeleton from '../skeleton';\nimport { usePanelRef } from '../watermark/context';\nimport { Footer, renderCloseIcon } from './shared';\nimport useStyle from './style';\nlet mousePosition;\n// ref: https://github.com/ant-design/ant-design/issues/15795\nconst getClickPosition = e => {\n  mousePosition = {\n    x: e.pageX,\n    y: e.pageY\n  };\n  // 100ms 内发生过点击事件,则从点击位置动画展示\n  // 否则直接 zoom 展示\n  // 这样可以兼容非点击方式展开\n  setTimeout(() => {\n    mousePosition = null;\n  }, 100);\n};\n// 只有点击事件支持从鼠标位置动画展开\nif (canUseDocElement()) {\n  document.documentElement.addEventListener('click', getClickPosition, true);\n}\nconst Modal = props => {\n  var _a;\n  const {\n    getPopupContainer: getContextPopupContainer,\n    getPrefixCls,\n    direction,\n    modal: modalContext\n  } = React.useContext(ConfigContext);\n  const handleCancel = e => {\n    const {\n      onCancel\n    } = props;\n    onCancel === null || onCancel === void 0 ? void 0 : onCancel(e);\n  };\n  const handleOk = e => {\n    const {\n      onOk\n    } = props;\n    onOk === null || onOk === void 0 ? void 0 : onOk(e);\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Modal');\n    [['visible', 'open'], ['bodyStyle', 'styles.body'], ['maskStyle', 'styles.mask']].forEach(_ref => {\n      let [deprecatedName, newName] = _ref;\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n  }\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      rootClassName,\n      open,\n      wrapClassName,\n      centered,\n      getContainer,\n      focusTriggerAfterClose = true,\n      style,\n      // Deprecated\n      visible,\n      width = 520,\n      footer,\n      classNames: modalClassNames,\n      styles: modalStyles,\n      children,\n      loading\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"rootClassName\", \"open\", \"wrapClassName\", \"centered\", \"getContainer\", \"focusTriggerAfterClose\", \"style\", \"visible\", \"width\", \"footer\", \"classNames\", \"styles\", \"children\", \"loading\"]);\n  const prefixCls = getPrefixCls('modal', customizePrefixCls);\n  const rootPrefixCls = getPrefixCls();\n  // Style\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  const wrapClassNameExtended = classNames(wrapClassName, {\n    [`${prefixCls}-centered`]: centered !== null && centered !== void 0 ? centered : modalContext === null || modalContext === void 0 ? void 0 : modalContext.centered,\n    [`${prefixCls}-wrap-rtl`]: direction === 'rtl'\n  });\n  const dialogFooter = footer !== null && !loading ? (/*#__PURE__*/React.createElement(Footer, Object.assign({}, props, {\n    onOk: handleOk,\n    onCancel: handleCancel\n  }))) : null;\n  const [mergedClosable, mergedCloseIcon, closeBtnIsDisabled] = useClosable(pickClosable(props), pickClosable(modalContext), {\n    closable: true,\n    closeIcon: /*#__PURE__*/React.createElement(CloseOutlined, {\n      className: `${prefixCls}-close-icon`\n    }),\n    closeIconRender: icon => renderCloseIcon(prefixCls, icon)\n  });\n  // ============================ Refs ============================\n  // Select `ant-modal-content` by `panelRef`\n  const panelRef = usePanelRef(`.${prefixCls}-content`);\n  // ============================ zIndex ============================\n  const [zIndex, contextZIndex] = useZIndex('Modal', restProps.zIndex);\n  // =========================== Width ============================\n  const [numWidth, responsiveWidth] = React.useMemo(() => {\n    if (width && typeof width === 'object') {\n      return [undefined, width];\n    }\n    return [width, undefined];\n  }, [width]);\n  const responsiveWidthVars = React.useMemo(() => {\n    const vars = {};\n    if (responsiveWidth) {\n      Object.keys(responsiveWidth).forEach(breakpoint => {\n        const breakpointWidth = responsiveWidth[breakpoint];\n        if (breakpointWidth !== undefined) {\n          vars[`--${prefixCls}-${breakpoint}-width`] = typeof breakpointWidth === 'number' ? `${breakpointWidth}px` : breakpointWidth;\n        }\n      });\n    }\n    return vars;\n  }, [responsiveWidth]);\n  // =========================== Render ===========================\n  return wrapCSSVar(/*#__PURE__*/React.createElement(ContextIsolator, {\n    form: true,\n    space: true\n  }, /*#__PURE__*/React.createElement(zIndexContext.Provider, {\n    value: contextZIndex\n  }, /*#__PURE__*/React.createElement(Dialog, Object.assign({\n    width: numWidth\n  }, restProps, {\n    zIndex: zIndex,\n    getContainer: getContainer === undefined ? getContextPopupContainer : getContainer,\n    prefixCls: prefixCls,\n    rootClassName: classNames(hashId, rootClassName, cssVarCls, rootCls),\n    footer: dialogFooter,\n    visible: open !== null && open !== void 0 ? open : visible,\n    mousePosition: (_a = restProps.mousePosition) !== null && _a !== void 0 ? _a : mousePosition,\n    onClose: handleCancel,\n    closable: mergedClosable ? {\n      disabled: closeBtnIsDisabled,\n      closeIcon: mergedCloseIcon\n    } : mergedClosable,\n    closeIcon: mergedCloseIcon,\n    focusTriggerAfterClose: focusTriggerAfterClose,\n    transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n    maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n    className: classNames(hashId, className, modalContext === null || modalContext === void 0 ? void 0 : modalContext.className),\n    style: Object.assign(Object.assign(Object.assign({}, modalContext === null || modalContext === void 0 ? void 0 : modalContext.style), style), responsiveWidthVars),\n    classNames: Object.assign(Object.assign(Object.assign({}, modalContext === null || modalContext === void 0 ? void 0 : modalContext.classNames), modalClassNames), {\n      wrapper: classNames(wrapClassNameExtended, modalClassNames === null || modalClassNames === void 0 ? void 0 : modalClassNames.wrapper)\n    }),\n    styles: Object.assign(Object.assign({}, modalContext === null || modalContext === void 0 ? void 0 : modalContext.styles), modalStyles),\n    panelRef: panelRef\n  }), loading ? (/*#__PURE__*/React.createElement(Skeleton, {\n    active: true,\n    title: false,\n    paragraph: {\n      rows: 4\n    },\n    className: `${prefixCls}-body-skeleton`\n  })) : children))));\n};\nexport default Modal;","// Style as confirm component\nimport { unit } from '@ant-design/cssinjs';\nimport { prepareComponentToken, prepareToken } from '.';\nimport { clearFix } from '../../style';\nimport { genSubStyleComponent } from '../../theme/internal';\n// ============================= Confirm ==============================\nconst genModalConfirmStyle = token => {\n  const {\n    componentCls,\n    titleFontSize,\n    titleLineHeight,\n    modalConfirmIconSize,\n    fontSize,\n    lineHeight,\n    modalTitleHeight,\n    fontHeight,\n    confirmBodyPadding\n  } = token;\n  const confirmComponentCls = `${componentCls}-confirm`;\n  return {\n    [confirmComponentCls]: {\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      [`${token.antCls}-modal-header`]: {\n        display: 'none'\n      },\n      [`${confirmComponentCls}-body-wrapper`]: Object.assign({}, clearFix()),\n      [`&${componentCls} ${componentCls}-body`]: {\n        padding: confirmBodyPadding\n      },\n      // ====================== Body ======================\n      [`${confirmComponentCls}-body`]: {\n        display: 'flex',\n        flexWrap: 'nowrap',\n        alignItems: 'start',\n        [`> ${token.iconCls}`]: {\n          flex: 'none',\n          fontSize: modalConfirmIconSize,\n          marginInlineEnd: token.confirmIconMarginInlineEnd,\n          marginTop: token.calc(token.calc(fontHeight).sub(modalConfirmIconSize).equal()).div(2).equal()\n        },\n        [`&-has-title > ${token.iconCls}`]: {\n          marginTop: token.calc(token.calc(modalTitleHeight).sub(modalConfirmIconSize).equal()).div(2).equal()\n        }\n      },\n      [`${confirmComponentCls}-paragraph`]: {\n        display: 'flex',\n        flexDirection: 'column',\n        flex: 'auto',\n        rowGap: token.marginXS,\n        // https://github.com/ant-design/ant-design/issues/51912\n        maxWidth: `calc(100% - ${unit(token.marginSM)})`\n      },\n      // https://github.com/ant-design/ant-design/issues/48159\n      [`${token.iconCls} + ${confirmComponentCls}-paragraph`]: {\n        maxWidth: `calc(100% - ${unit(token.calc(token.modalConfirmIconSize).add(token.marginSM).equal())})`\n      },\n      [`${confirmComponentCls}-title`]: {\n        color: token.colorTextHeading,\n        fontWeight: token.fontWeightStrong,\n        fontSize: titleFontSize,\n        lineHeight: titleLineHeight\n      },\n      [`${confirmComponentCls}-content`]: {\n        color: token.colorText,\n        fontSize,\n        lineHeight\n      },\n      // ===================== Footer =====================\n      [`${confirmComponentCls}-btns`]: {\n        textAlign: 'end',\n        marginTop: token.confirmBtnsMarginTop,\n        [`${token.antCls}-btn + ${token.antCls}-btn`]: {\n          marginBottom: 0,\n          marginInlineStart: token.marginXS\n        }\n      }\n    },\n    [`${confirmComponentCls}-error ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorError\n    },\n    [`${confirmComponentCls}-warning ${confirmComponentCls}-body > ${token.iconCls},\n        ${confirmComponentCls}-confirm ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorWarning\n    },\n    [`${confirmComponentCls}-info ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorInfo\n    },\n    [`${confirmComponentCls}-success ${confirmComponentCls}-body > ${token.iconCls}`]: {\n      color: token.colorSuccess\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genSubStyleComponent(['Modal', 'confirm'], token => {\n  const modalToken = prepareToken(token);\n  return [genModalConfirmStyle(modalToken)];\n}, prepareComponentToken, {\n  // confirm is weak than modal since no conflict here\n  order: -1000\n});","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport classNames from 'classnames';\nimport { CONTAINER_MAX_OFFSET } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport { devUseWarning } from '../_util/warning';\nimport ConfigProvider from '../config-provider';\nimport { useLocale } from '../locale';\nimport useToken from '../theme/useToken';\nimport CancelBtn from './components/ConfirmCancelBtn';\nimport OkBtn from './components/ConfirmOkBtn';\nimport { ModalContextProvider } from './context';\nimport Modal from './Modal';\nimport Confirm from './style/confirm';\nexport function ConfirmContent(props) {\n  const {\n      prefixCls,\n      icon,\n      okText,\n      cancelText,\n      confirmPrefixCls,\n      type,\n      okCancel,\n      footer,\n      // Legacy for static function usage\n      locale: staticLocale\n    } = props,\n    resetProps = __rest(props, [\"prefixCls\", \"icon\", \"okText\", \"cancelText\", \"confirmPrefixCls\", \"type\", \"okCancel\", \"footer\", \"locale\"]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Modal');\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'breaking', `\\`icon\\` is using ReactNode instead of string naming in v4. Please check \\`${icon}\\` at https://ant.design/components/icon`) : void 0;\n  }\n  // Icon\n  let mergedIcon = icon;\n  // 支持传入{ icon: null }来隐藏`Modal.confirm`默认的Icon\n  if (!icon && icon !== null) {\n    switch (type) {\n      case 'info':\n        mergedIcon = /*#__PURE__*/React.createElement(InfoCircleFilled, null);\n        break;\n      case 'success':\n        mergedIcon = /*#__PURE__*/React.createElement(CheckCircleFilled, null);\n        break;\n      case 'error':\n        mergedIcon = /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n        break;\n      default:\n        mergedIcon = /*#__PURE__*/React.createElement(ExclamationCircleFilled, null);\n    }\n  }\n  // 默认为 true,保持向下兼容\n  const mergedOkCancel = okCancel !== null && okCancel !== void 0 ? okCancel : type === 'confirm';\n  const autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n  const [locale] = useLocale('Modal');\n  const mergedLocale = staticLocale || locale;\n  // ================== Locale Text ==================\n  const okTextLocale = okText || (mergedOkCancel ? mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.okText : mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.justOkText);\n  const cancelTextLocale = cancelText || (mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.cancelText);\n  // ================= Context Value =================\n  const btnCtxValue = Object.assign({\n    autoFocusButton,\n    cancelTextLocale,\n    okTextLocale,\n    mergedOkCancel\n  }, resetProps);\n  const btnCtxValueMemo = React.useMemo(() => btnCtxValue, _toConsumableArray(Object.values(btnCtxValue)));\n  // ====================== Footer Origin Node ======================\n  const footerOriginNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CancelBtn, null), /*#__PURE__*/React.createElement(OkBtn, null));\n  const hasTitle = props.title !== undefined && props.title !== null;\n  const bodyCls = `${confirmPrefixCls}-body`;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: `${confirmPrefixCls}-body-wrapper`\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(bodyCls, {\n      [`${bodyCls}-has-title`]: hasTitle\n    })\n  }, mergedIcon, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${confirmPrefixCls}-paragraph`\n  }, hasTitle && /*#__PURE__*/React.createElement(\"span\", {\n    className: `${confirmPrefixCls}-title`\n  }, props.title), /*#__PURE__*/React.createElement(\"div\", {\n    className: `${confirmPrefixCls}-content`\n  }, props.content))), footer === undefined || typeof footer === 'function' ? (/*#__PURE__*/React.createElement(ModalContextProvider, {\n    value: btnCtxValueMemo\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${confirmPrefixCls}-btns`\n  }, typeof footer === 'function' ? footer(footerOriginNode, {\n    OkBtn,\n    CancelBtn\n  }) : footerOriginNode))) : footer, /*#__PURE__*/React.createElement(Confirm, {\n    prefixCls: prefixCls\n  }));\n}\nconst ConfirmDialog = props => {\n  const {\n    close,\n    zIndex,\n    maskStyle,\n    direction,\n    prefixCls,\n    wrapClassName,\n    rootPrefixCls,\n    bodyStyle,\n    closable = false,\n    onConfirm,\n    styles\n  } = props;\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Modal');\n    [['visible', 'open'], ['bodyStyle', 'styles.body'], ['maskStyle', 'styles.mask']].forEach(_ref => {\n      let [deprecatedName, newName] = _ref;\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n  }\n  const confirmPrefixCls = `${prefixCls}-confirm`;\n  const width = props.width || 416;\n  const style = props.style || {};\n  const mask = props.mask === undefined ? true : props.mask;\n  // 默认为 false,保持旧版默认行为\n  const maskClosable = props.maskClosable === undefined ? false : props.maskClosable;\n  const classString = classNames(confirmPrefixCls, `${confirmPrefixCls}-${props.type}`, {\n    [`${confirmPrefixCls}-rtl`]: direction === 'rtl'\n  }, props.className);\n  // ========================= zIndex =========================\n  const [, token] = useToken();\n  const mergedZIndex = React.useMemo(() => {\n    if (zIndex !== undefined) {\n      return zIndex;\n    }\n    // Static always use max zIndex\n    return token.zIndexPopupBase + CONTAINER_MAX_OFFSET;\n  }, [zIndex, token]);\n  // ========================= Render =========================\n  return /*#__PURE__*/React.createElement(Modal, Object.assign({}, props, {\n    className: classString,\n    wrapClassName: classNames({\n      [`${confirmPrefixCls}-centered`]: !!props.centered\n    }, wrapClassName),\n    onCancel: () => {\n      close === null || close === void 0 ? void 0 : close({\n        triggerCancel: true\n      });\n      onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(false);\n    },\n    title: \"\",\n    footer: null,\n    transitionName: getTransitionName(rootPrefixCls || '', 'zoom', props.transitionName),\n    maskTransitionName: getTransitionName(rootPrefixCls || '', 'fade', props.maskTransitionName),\n    mask: mask,\n    maskClosable: maskClosable,\n    style: style,\n    styles: Object.assign({\n      body: bodyStyle,\n      mask: maskStyle\n    }, styles),\n    width: width,\n    zIndex: mergedZIndex,\n    closable: closable\n  }), /*#__PURE__*/React.createElement(ConfirmContent, Object.assign({}, props, {\n    confirmPrefixCls: confirmPrefixCls\n  })));\n};\nconst ConfirmDialogWrapper = props => {\n  const {\n    rootPrefixCls,\n    iconPrefixCls,\n    direction,\n    theme\n  } = props;\n  return /*#__PURE__*/React.createElement(ConfigProvider, {\n    prefixCls: rootPrefixCls,\n    iconPrefixCls: iconPrefixCls,\n    direction: direction,\n    theme: theme\n  }, /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({}, props)));\n};\nif (process.env.NODE_ENV !== 'production') {\n  ConfirmDialog.displayName = 'ConfirmDialog';\n  ConfirmDialogWrapper.displayName = 'ConfirmDialogWrapper';\n}\nexport default ConfirmDialogWrapper;","const destroyFns = [];\nexport default destroyFns;","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport React, { useContext } from 'react';\nimport warning from '../_util/warning';\nimport ConfigProvider, { ConfigContext, globalConfig, warnContext } from '../config-provider';\nimport { getReactRender } from '../config-provider/UnstableContext';\nimport ConfirmDialog from './ConfirmDialog';\nimport destroyFns from './destroyFns';\nimport { getConfirmLocale } from './locale';\nlet defaultRootPrefixCls = '';\nfunction getRootPrefixCls() {\n  return defaultRootPrefixCls;\n}\nconst ConfirmDialogWrapper = props => {\n  var _a, _b;\n  const {\n    prefixCls: customizePrefixCls,\n    getContainer,\n    direction\n  } = props;\n  const runtimeLocale = getConfirmLocale();\n  const config = useContext(ConfigContext);\n  const rootPrefixCls = getRootPrefixCls() || config.getPrefixCls();\n  // because Modal.config set rootPrefixCls, which is different from other components\n  const prefixCls = customizePrefixCls || `${rootPrefixCls}-modal`;\n  let mergedGetContainer = getContainer;\n  if (mergedGetContainer === false) {\n    mergedGetContainer = undefined;\n    if (process.env.NODE_ENV !== 'production') {\n      process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Static method not support `getContainer` to be `false` since it do not have context env.') : void 0;\n    }\n  }\n  return /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({}, props, {\n    rootPrefixCls: rootPrefixCls,\n    prefixCls: prefixCls,\n    iconPrefixCls: config.iconPrefixCls,\n    theme: config.theme,\n    direction: direction !== null && direction !== void 0 ? direction : config.direction,\n    locale: (_b = (_a = config.locale) === null || _a === void 0 ? void 0 : _a.Modal) !== null && _b !== void 0 ? _b : runtimeLocale,\n    getContainer: mergedGetContainer\n  }));\n};\nexport default function confirm(config) {\n  const global = globalConfig();\n  if (process.env.NODE_ENV !== 'production' && !global.holderRender) {\n    warnContext('Modal');\n  }\n  const container = document.createDocumentFragment();\n  let currentConfig = Object.assign(Object.assign({}, config), {\n    close,\n    open: true\n  });\n  let timeoutId;\n  let reactUnmount;\n  function destroy() {\n    var _a;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    const triggerCancel = args.some(param => param === null || param === void 0 ? void 0 : param.triggerCancel);\n    if (triggerCancel) {\n      var _a2;\n      (_a = config.onCancel) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [config, () => {}].concat(_toConsumableArray(args.slice(1))));\n    }\n    for (let i = 0; i < destroyFns.length; i++) {\n      const fn = destroyFns[i];\n      if (fn === close) {\n        destroyFns.splice(i, 1);\n        break;\n      }\n    }\n    reactUnmount();\n  }\n  function render(props) {\n    clearTimeout(timeoutId);\n    /**\n     * https://github.com/ant-design/ant-design/issues/23623\n     *\n     * Sync render blocks React event. Let's make this async.\n     */\n    timeoutId = setTimeout(() => {\n      const rootPrefixCls = global.getPrefixCls(undefined, getRootPrefixCls());\n      const iconPrefixCls = global.getIconPrefixCls();\n      const theme = global.getTheme();\n      const dom = /*#__PURE__*/React.createElement(ConfirmDialogWrapper, Object.assign({}, props));\n      const reactRender = getReactRender();\n      reactUnmount = reactRender(/*#__PURE__*/React.createElement(ConfigProvider, {\n        prefixCls: rootPrefixCls,\n        iconPrefixCls: iconPrefixCls,\n        theme: theme\n      }, global.holderRender ? global.holderRender(dom) : dom), container);\n    });\n  }\n  function close() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    currentConfig = Object.assign(Object.assign({}, currentConfig), {\n      open: false,\n      afterClose: () => {\n        if (typeof config.afterClose === 'function') {\n          config.afterClose();\n        }\n        // @ts-ignore\n        destroy.apply(this, args);\n      }\n    });\n    // Legacy support\n    if (currentConfig.visible) {\n      delete currentConfig.visible;\n    }\n    render(currentConfig);\n  }\n  function update(configUpdate) {\n    if (typeof configUpdate === 'function') {\n      currentConfig = configUpdate(currentConfig);\n    } else {\n      currentConfig = Object.assign(Object.assign({}, currentConfig), configUpdate);\n    }\n    render(currentConfig);\n  }\n  render(currentConfig);\n  destroyFns.push(close);\n  return {\n    destroy: close,\n    update\n  };\n}\nexport function withWarn(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'warning'\n  });\n}\nexport function withInfo(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'info'\n  });\n}\nexport function withSuccess(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'success'\n  });\n}\nexport function withError(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'error'\n  });\n}\nexport function withConfirm(props) {\n  return Object.assign(Object.assign({}, props), {\n    type: 'confirm'\n  });\n}\nexport function modalGlobalConfig(_ref) {\n  let {\n    rootPrefixCls\n  } = _ref;\n  process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Modal.config is deprecated. Please use ConfigProvider.config instead.') : void 0;\n  defaultRootPrefixCls = rootPrefixCls;\n}","\"use client\";\n\nimport * as React from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport ConfigProvider, { ConfigContext } from '../config-provider';\nexport function withPureRenderTheme(Component) {\n  return props => (/*#__PURE__*/React.createElement(ConfigProvider, {\n    theme: {\n      token: {\n        motion: false,\n        zIndexPopupBase: 0\n      }\n    }\n  }, /*#__PURE__*/React.createElement(Component, Object.assign({}, props))));\n}\n/* istanbul ignore next */\nconst genPurePanel = (Component, alignPropName, postProps, defaultPrefixCls, getDropdownCls) => {\n  const PurePanel = props => {\n    const {\n      prefixCls: customizePrefixCls,\n      style\n    } = props;\n    const holderRef = React.useRef(null);\n    const [popupHeight, setPopupHeight] = React.useState(0);\n    const [popupWidth, setPopupWidth] = React.useState(0);\n    const [open, setOpen] = useMergedState(false, {\n      value: props.open\n    });\n    const {\n      getPrefixCls\n    } = React.useContext(ConfigContext);\n    const prefixCls = getPrefixCls(defaultPrefixCls || 'select', customizePrefixCls);\n    React.useEffect(() => {\n      // We do not care about ssr\n      setOpen(true);\n      if (typeof ResizeObserver !== 'undefined') {\n        const resizeObserver = new ResizeObserver(entries => {\n          const element = entries[0].target;\n          setPopupHeight(element.offsetHeight + 8);\n          setPopupWidth(element.offsetWidth);\n        });\n        const interval = setInterval(() => {\n          var _a;\n          const dropdownCls = getDropdownCls ? `.${getDropdownCls(prefixCls)}` : `.${prefixCls}-dropdown`;\n          const popup = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(dropdownCls);\n          if (popup) {\n            clearInterval(interval);\n            resizeObserver.observe(popup);\n          }\n        }, 10);\n        return () => {\n          clearInterval(interval);\n          resizeObserver.disconnect();\n        };\n      }\n    }, []);\n    let mergedProps = Object.assign(Object.assign({}, props), {\n      style: Object.assign(Object.assign({}, style), {\n        margin: 0\n      }),\n      open,\n      visible: open,\n      getPopupContainer: () => holderRef.current\n    });\n    if (postProps) {\n      mergedProps = postProps(mergedProps);\n    }\n    if (alignPropName) {\n      Object.assign(mergedProps, {\n        [alignPropName]: {\n          overflow: {\n            adjustX: false,\n            adjustY: false\n          }\n        }\n      });\n    }\n    const mergedStyle = {\n      paddingBottom: popupHeight,\n      position: 'relative',\n      minWidth: popupWidth\n    };\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: holderRef,\n      style: mergedStyle\n    }, /*#__PURE__*/React.createElement(Component, Object.assign({}, mergedProps)));\n  };\n  return withPureRenderTheme(PurePanel);\n};\nexport default genPurePanel;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Panel } from 'rc-dialog';\nimport { withPureRenderTheme } from '../_util/PurePanel';\nimport { ConfigContext } from '../config-provider';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport { ConfirmContent } from './ConfirmDialog';\nimport { Footer, renderCloseIcon } from './shared';\nimport useStyle from './style';\nconst PurePanel = props => {\n  const {\n      prefixCls: customizePrefixCls,\n      className,\n      closeIcon,\n      closable,\n      type,\n      title,\n      children,\n      footer\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\", \"closeIcon\", \"closable\", \"type\", \"title\", \"children\", \"footer\"]);\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const rootPrefixCls = getPrefixCls();\n  const prefixCls = customizePrefixCls || getPrefixCls('modal');\n  const rootCls = useCSSVarCls(rootPrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  const confirmPrefixCls = `${prefixCls}-confirm`;\n  // Choose target props by confirm mark\n  let additionalProps = {};\n  if (type) {\n    additionalProps = {\n      closable: closable !== null && closable !== void 0 ? closable : false,\n      title: '',\n      footer: '',\n      children: (/*#__PURE__*/React.createElement(ConfirmContent, Object.assign({}, props, {\n        prefixCls: prefixCls,\n        confirmPrefixCls: confirmPrefixCls,\n        rootPrefixCls: rootPrefixCls,\n        content: children\n      })))\n    };\n  } else {\n    additionalProps = {\n      closable: closable !== null && closable !== void 0 ? closable : true,\n      title,\n      footer: footer !== null && /*#__PURE__*/React.createElement(Footer, Object.assign({}, props)),\n      children\n    };\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(Panel, Object.assign({\n    prefixCls: prefixCls,\n    className: classNames(hashId, `${prefixCls}-pure-panel`, type && confirmPrefixCls, type && `${confirmPrefixCls}-${type}`, className, cssVarCls, rootCls)\n  }, restProps, {\n    closeIcon: renderCloseIcon(prefixCls, closeIcon),\n    closable: closable\n  }, additionalProps)));\n};\nexport default withPureRenderTheme(PurePanel);","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport defaultLocale from '../../locale/en_US';\nimport useLocale from '../../locale/useLocale';\nimport ConfirmDialog from '../ConfirmDialog';\nconst HookModal = (_a, ref) => {\n  var _b;\n  var {\n      afterClose: hookAfterClose,\n      config\n    } = _a,\n    restProps = __rest(_a, [\"afterClose\", \"config\"]);\n  const [open, setOpen] = React.useState(true);\n  const [innerConfig, setInnerConfig] = React.useState(config);\n  const {\n    direction,\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('modal');\n  const rootPrefixCls = getPrefixCls();\n  const afterClose = () => {\n    var _a;\n    hookAfterClose();\n    (_a = innerConfig.afterClose) === null || _a === void 0 ? void 0 : _a.call(innerConfig);\n  };\n  const close = function () {\n    var _a;\n    setOpen(false);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    const triggerCancel = args.some(param => param === null || param === void 0 ? void 0 : param.triggerCancel);\n    if (triggerCancel) {\n      var _a2;\n      (_a = innerConfig.onCancel) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [innerConfig, () => {}].concat(_toConsumableArray(args.slice(1))));\n    }\n  };\n  React.useImperativeHandle(ref, () => ({\n    destroy: close,\n    update: newConfig => {\n      setInnerConfig(originConfig => Object.assign(Object.assign({}, originConfig), newConfig));\n    }\n  }));\n  const mergedOkCancel = (_b = innerConfig.okCancel) !== null && _b !== void 0 ? _b : innerConfig.type === 'confirm';\n  const [contextLocale] = useLocale('Modal', defaultLocale.Modal);\n  return /*#__PURE__*/React.createElement(ConfirmDialog, Object.assign({\n    prefixCls: prefixCls,\n    rootPrefixCls: rootPrefixCls\n  }, innerConfig, {\n    close: close,\n    open: open,\n    afterClose: afterClose,\n    okText: innerConfig.okText || (mergedOkCancel ? contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.okText : contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.justOkText),\n    direction: innerConfig.direction || direction,\n    cancelText: innerConfig.cancelText || (contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.cancelText)\n  }, restProps));\n};\nexport default /*#__PURE__*/React.forwardRef(HookModal);","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport usePatchElement from '../../_util/hooks/usePatchElement';\nimport { withConfirm, withError, withInfo, withSuccess, withWarn } from '../confirm';\nimport destroyFns from '../destroyFns';\nimport HookModal from './HookModal';\nlet uuid = 0;\nconst ElementsHolder = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((_props, ref) => {\n  const [elements, patchElement] = usePatchElement();\n  React.useImperativeHandle(ref, () => ({\n    patchElement\n  }), []);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, elements);\n}));\nfunction useModal() {\n  const holderRef = React.useRef(null);\n  // ========================== Effect ==========================\n  const [actionQueue, setActionQueue] = React.useState([]);\n  React.useEffect(() => {\n    if (actionQueue.length) {\n      const cloneQueue = _toConsumableArray(actionQueue);\n      cloneQueue.forEach(action => {\n        action();\n      });\n      setActionQueue([]);\n    }\n  }, [actionQueue]);\n  // =========================== Hook ===========================\n  const getConfirmFunc = React.useCallback(withFunc => function hookConfirm(config) {\n    var _a;\n    uuid += 1;\n    const modalRef = /*#__PURE__*/React.createRef();\n    // Proxy to promise with `onClose`\n    let resolvePromise;\n    const promise = new Promise(resolve => {\n      resolvePromise = resolve;\n    });\n    let silent = false;\n    let closeFunc;\n    const modal = /*#__PURE__*/React.createElement(HookModal, {\n      key: `modal-${uuid}`,\n      config: withFunc(config),\n      ref: modalRef,\n      afterClose: () => {\n        closeFunc === null || closeFunc === void 0 ? void 0 : closeFunc();\n      },\n      isSilent: () => silent,\n      onConfirm: confirmed => {\n        resolvePromise(confirmed);\n      }\n    });\n    closeFunc = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.patchElement(modal);\n    if (closeFunc) {\n      destroyFns.push(closeFunc);\n    }\n    const instance = {\n      destroy: () => {\n        function destroyAction() {\n          var _a;\n          (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n        }\n        if (modalRef.current) {\n          destroyAction();\n        } else {\n          setActionQueue(prev => [].concat(_toConsumableArray(prev), [destroyAction]));\n        }\n      },\n      update: newConfig => {\n        function updateAction() {\n          var _a;\n          (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.update(newConfig);\n        }\n        if (modalRef.current) {\n          updateAction();\n        } else {\n          setActionQueue(prev => [].concat(_toConsumableArray(prev), [updateAction]));\n        }\n      },\n      then: resolve => {\n        silent = true;\n        return promise.then(resolve);\n      }\n    };\n    return instance;\n  }, []);\n  const fns = React.useMemo(() => ({\n    info: getConfirmFunc(withInfo),\n    success: getConfirmFunc(withSuccess),\n    error: getConfirmFunc(withError),\n    warning: getConfirmFunc(withWarn),\n    confirm: getConfirmFunc(withConfirm)\n  }), []);\n  return [fns, /*#__PURE__*/React.createElement(ElementsHolder, {\n    key: \"modal-holder\",\n    ref: holderRef\n  })];\n}\nexport default useModal;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport default function usePatchElement() {\n  const [elements, setElements] = React.useState([]);\n  const patchElement = React.useCallback(element => {\n    // append a new element to elements (and create a new ref)\n    setElements(originElements => [].concat(_toConsumableArray(originElements), [element]));\n    // return a function that removes the new element out of elements (and create a new ref)\n    // it works a little like useEffect\n    return () => {\n      setElements(originElements => originElements.filter(ele => ele !== element));\n    };\n  }, []);\n  return [elements, patchElement];\n}","\"use client\";\n\nimport confirm, { modalGlobalConfig, withConfirm, withError, withInfo, withSuccess, withWarn } from './confirm';\nimport destroyFns from './destroyFns';\nimport OriginModal from './Modal';\nimport PurePanel from './PurePanel';\nimport useModal from './useModal';\nfunction modalWarn(props) {\n  return confirm(withWarn(props));\n}\nconst Modal = OriginModal;\nModal.useModal = useModal;\nModal.info = function infoFn(props) {\n  return confirm(withInfo(props));\n};\nModal.success = function successFn(props) {\n  return confirm(withSuccess(props));\n};\nModal.error = function errorFn(props) {\n  return confirm(withError(props));\n};\nModal.warning = modalWarn;\nModal.warn = modalWarn;\nModal.confirm = function confirmFn(props) {\n  return confirm(withConfirm(props));\n};\nModal.destroyAll = function destroyAllFn() {\n  while (destroyFns.length) {\n    const close = destroyFns.pop();\n    if (close) {\n      close();\n    }\n  }\n};\nModal.config = modalGlobalConfig;\nModal._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n  Modal.displayName = 'Modal';\n}\nexport default Modal;","export function isPresetSize(size) {\n  return ['small', 'middle', 'large'].includes(size);\n}\nexport function isValidGapNumber(size) {\n  if (!size) {\n    // The case of size = 0 is deliberately excluded here, because the default value of the gap attribute in CSS is 0, so if the user passes 0 in, we can directly ignore it.\n    return false;\n  }\n  return typeof size === 'number' && !Number.isNaN(size);\n}","import React from 'react';\nexport const SpaceContext = /*#__PURE__*/React.createContext({\n  latestIndex: 0\n});\nexport const SpaceContextProvider = SpaceContext.Provider;","\"use client\";\n\nimport * as React from 'react';\nimport { SpaceContext } from './context';\nconst Item = _ref => {\n  let {\n    className,\n    index,\n    children,\n    split,\n    style\n  } = _ref;\n  const {\n    latestIndex\n  } = React.useContext(SpaceContext);\n  if (children === null || children === undefined) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n    className: className,\n    style: style\n  }, children), index < latestIndex && split && /*#__PURE__*/React.createElement(\"span\", {\n    className: `${className}-split`\n  }, split));\n};\nexport default Item;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { isPresetSize, isValidGapNumber } from '../_util/gapSize';\nimport { useComponentConfig } from '../config-provider/context';\nimport Compact from './Compact';\nimport { SpaceContextProvider } from './context';\nimport Item from './Item';\nimport useStyle from './style';\nexport { SpaceContext } from './context';\nconst InternalSpace = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a;\n  const {\n    getPrefixCls,\n    direction: directionConfig,\n    size: contextSize,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('space');\n  const {\n      size = contextSize !== null && contextSize !== void 0 ? contextSize : 'small',\n      align,\n      className,\n      rootClassName,\n      children,\n      direction = 'horizontal',\n      prefixCls: customizePrefixCls,\n      split,\n      style,\n      wrap = false,\n      classNames: customClassNames,\n      styles\n    } = props,\n    otherProps = __rest(props, [\"size\", \"align\", \"className\", \"rootClassName\", \"children\", \"direction\", \"prefixCls\", \"split\", \"style\", \"wrap\", \"classNames\", \"styles\"]);\n  const [horizontalSize, verticalSize] = Array.isArray(size) ? size : [size, size];\n  const isPresetVerticalSize = isPresetSize(verticalSize);\n  const isPresetHorizontalSize = isPresetSize(horizontalSize);\n  const isValidVerticalSize = isValidGapNumber(verticalSize);\n  const isValidHorizontalSize = isValidGapNumber(horizontalSize);\n  const childNodes = toArray(children, {\n    keepEmpty: true\n  });\n  const mergedAlign = align === undefined && direction === 'horizontal' ? 'center' : align;\n  const prefixCls = getPrefixCls('space', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const cls = classNames(prefixCls, contextClassName, hashId, `${prefixCls}-${direction}`, {\n    [`${prefixCls}-rtl`]: directionConfig === 'rtl',\n    [`${prefixCls}-align-${mergedAlign}`]: mergedAlign,\n    [`${prefixCls}-gap-row-${verticalSize}`]: isPresetVerticalSize,\n    [`${prefixCls}-gap-col-${horizontalSize}`]: isPresetHorizontalSize\n  }, className, rootClassName, cssVarCls);\n  const itemClassName = classNames(`${prefixCls}-item`, (_a = customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.item) !== null && _a !== void 0 ? _a : contextClassNames.item);\n  // Calculate latest one\n  let latestIndex = 0;\n  const nodes = childNodes.map((child, i) => {\n    var _a;\n    if (child !== null && child !== undefined) {\n      latestIndex = i;\n    }\n    const key = (child === null || child === void 0 ? void 0 : child.key) || `${itemClassName}-${i}`;\n    return /*#__PURE__*/React.createElement(Item, {\n      className: itemClassName,\n      key: key,\n      index: i,\n      split: split,\n      style: (_a = styles === null || styles === void 0 ? void 0 : styles.item) !== null && _a !== void 0 ? _a : contextStyles.item\n    }, child);\n  });\n  const spaceContext = React.useMemo(() => ({\n    latestIndex\n  }), [latestIndex]);\n  // =========================== Render ===========================\n  if (childNodes.length === 0) {\n    return null;\n  }\n  const gapStyle = {};\n  if (wrap) {\n    gapStyle.flexWrap = 'wrap';\n  }\n  if (!isPresetHorizontalSize && isValidHorizontalSize) {\n    gapStyle.columnGap = horizontalSize;\n  }\n  if (!isPresetVerticalSize && isValidVerticalSize) {\n    gapStyle.rowGap = verticalSize;\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({\n    ref: ref,\n    className: cls,\n    style: Object.assign(Object.assign(Object.assign({}, gapStyle), contextStyle), style)\n  }, otherProps), /*#__PURE__*/React.createElement(SpaceContextProvider, {\n    value: spaceContext\n  }, nodes)));\n});\nconst Space = InternalSpace;\nSpace.Compact = Compact;\nif (process.env.NODE_ENV !== 'production') {\n  Space.displayName = 'Space';\n}\nexport default Space;","import classNames from 'classnames';\nexport const flexWrapValues = ['wrap', 'nowrap', 'wrap-reverse'];\nexport const justifyContentValues = ['flex-start', 'flex-end', 'start', 'end', 'center', 'space-between', 'space-around', 'space-evenly', 'stretch', 'normal', 'left', 'right'];\nexport const alignItemsValues = ['center', 'start', 'end', 'flex-start', 'flex-end', 'self-start', 'self-end', 'baseline', 'normal', 'stretch'];\nconst genClsWrap = (prefixCls, props) => {\n  const wrap = props.wrap === true ? 'wrap' : props.wrap;\n  return {\n    [`${prefixCls}-wrap-${wrap}`]: wrap && flexWrapValues.includes(wrap)\n  };\n};\nconst genClsAlign = (prefixCls, props) => {\n  const alignCls = {};\n  alignItemsValues.forEach(cssKey => {\n    alignCls[`${prefixCls}-align-${cssKey}`] = props.align === cssKey;\n  });\n  alignCls[`${prefixCls}-align-stretch`] = !props.align && !!props.vertical;\n  return alignCls;\n};\nconst genClsJustify = (prefixCls, props) => {\n  const justifyCls = {};\n  justifyContentValues.forEach(cssKey => {\n    justifyCls[`${prefixCls}-justify-${cssKey}`] = props.justify === cssKey;\n  });\n  return justifyCls;\n};\nfunction createFlexClassNames(prefixCls, props) {\n  return classNames(Object.assign(Object.assign(Object.assign({}, genClsWrap(prefixCls, props)), genClsAlign(prefixCls, props)), genClsJustify(prefixCls, props)));\n}\nexport default createFlexClassNames;","import { genStyleHooks, mergeToken } from '../../theme/internal';\nimport { alignItemsValues, flexWrapValues, justifyContentValues } from '../utils';\nconst genFlexStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      display: 'flex',\n      margin: 0,\n      padding: 0,\n      '&-vertical': {\n        flexDirection: 'column'\n      },\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      '&:empty': {\n        display: 'none'\n      }\n    }\n  };\n};\nconst genFlexGapStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: {\n      '&-gap-small': {\n        gap: token.flexGapSM\n      },\n      '&-gap-middle': {\n        gap: token.flexGap\n      },\n      '&-gap-large': {\n        gap: token.flexGapLG\n      }\n    }\n  };\n};\nconst genFlexWrapStyle = token => {\n  const {\n    componentCls\n  } = token;\n  const wrapStyle = {};\n  flexWrapValues.forEach(value => {\n    wrapStyle[`${componentCls}-wrap-${value}`] = {\n      flexWrap: value\n    };\n  });\n  return wrapStyle;\n};\nconst genAlignItemsStyle = token => {\n  const {\n    componentCls\n  } = token;\n  const alignStyle = {};\n  alignItemsValues.forEach(value => {\n    alignStyle[`${componentCls}-align-${value}`] = {\n      alignItems: value\n    };\n  });\n  return alignStyle;\n};\nconst genJustifyContentStyle = token => {\n  const {\n    componentCls\n  } = token;\n  const justifyStyle = {};\n  justifyContentValues.forEach(value => {\n    justifyStyle[`${componentCls}-justify-${value}`] = {\n      justifyContent: value\n    };\n  });\n  return justifyStyle;\n};\nexport const prepareComponentToken = () => ({});\nexport default genStyleHooks('Flex', token => {\n  const {\n    paddingXS,\n    padding,\n    paddingLG\n  } = token;\n  const flexToken = mergeToken(token, {\n    flexGapSM: paddingXS,\n    flexGap: padding,\n    flexGapLG: paddingLG\n  });\n  return [genFlexStyle(flexToken), genFlexGapStyle(flexToken), genFlexWrapStyle(flexToken), genAlignItemsStyle(flexToken), genJustifyContentStyle(flexToken)];\n}, prepareComponentToken, {\n  // Flex component don't apply extra font style\n  // https://github.com/ant-design/ant-design/issues/46403\n  resetStyle: false\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { isPresetSize } from '../_util/gapSize';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nimport createFlexClassNames from './utils';\nconst Flex = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      rootClassName,\n      className,\n      style,\n      flex,\n      gap,\n      children,\n      vertical = false,\n      component: Component = 'div'\n    } = props,\n    othersProps = __rest(props, [\"prefixCls\", \"rootClassName\", \"className\", \"style\", \"flex\", \"gap\", \"children\", \"vertical\", \"component\"]);\n  const {\n    flex: ctxFlex,\n    direction: ctxDirection,\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('flex', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const mergedVertical = vertical !== null && vertical !== void 0 ? vertical : ctxFlex === null || ctxFlex === void 0 ? void 0 : ctxFlex.vertical;\n  const mergedCls = classNames(className, rootClassName, ctxFlex === null || ctxFlex === void 0 ? void 0 : ctxFlex.className, prefixCls, hashId, cssVarCls, createFlexClassNames(prefixCls, props), {\n    [`${prefixCls}-rtl`]: ctxDirection === 'rtl',\n    [`${prefixCls}-gap-${gap}`]: isPresetSize(gap),\n    [`${prefixCls}-vertical`]: mergedVertical\n  });\n  const mergedStyle = Object.assign(Object.assign({}, ctxFlex === null || ctxFlex === void 0 ? void 0 : ctxFlex.style), style);\n  if (flex) {\n    mergedStyle.flex = flex;\n  }\n  if (gap && !isPresetSize(gap)) {\n    mergedStyle.gap = gap;\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(Component, Object.assign({\n    ref: ref,\n    className: mergedCls,\n    style: mergedStyle\n  }, omit(othersProps, ['justify', 'wrap', 'align'])), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Flex.displayName = 'Flex';\n}\nexport default Flex;","// This icon file is generated automatically.\nvar AppstoreAddOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zm52 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"appstore-add\", \"theme\": \"outlined\" };\nexport default AppstoreAddOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport AppstoreAddOutlinedSvg from \"@ant-design/icons-svg/es/asn/AppstoreAddOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar AppstoreAddOutlined = function AppstoreAddOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: AppstoreAddOutlinedSvg\n  }));\n};\n\n/**![appstore-add](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHN0eWxlIC8+PC9kZWZzPjxwYXRoIGQ9Ik00NjQgMTQ0SDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMwNGMwIDguOCA3LjIgMTYgMTYgMTZoMzA0YzguOCAwIDE2LTcuMiAxNi0xNlYxNjBjMC04LjgtNy4yLTE2LTE2LTE2em0tNTIgMjY4SDIxMlYyMTJoMjAwdjIwMHptNDUyLTI2OEg1NjBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMDRjMCA4LjggNy4yIDE2IDE2IDE2aDMwNGM4LjggMCAxNi03LjIgMTYtMTZWMTYwYzAtOC44LTcuMi0xNi0xNi0xNnptLTUyIDI2OEg2MTJWMjEyaDIwMHYyMDB6bTUyIDEzMkg1NjBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMDRjMCA4LjggNy4yIDE2IDE2IDE2aDMwNGM4LjggMCAxNi03LjIgMTYtMTZWNTYwYzAtOC44LTcuMi0xNi0xNi0xNnptLTUyIDI2OEg2MTJWNjEyaDIwMHYyMDB6TTQyNCA3MTJIMjk2VjU4NGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTI4SDEwNGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxMjh2MTI4YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWNzc2aDEyOGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(AppstoreAddOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'AppstoreAddOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar ExportOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM770.87 199.13l-52.2-52.2a8.01 8.01 0 014.7-13.6l179.4-21c5.1-.6 9.5 3.7 8.9 8.9l-21 179.4c-.8 6.6-8.9 9.4-13.6 4.7l-52.4-52.4-256.2 256.2a8.03 8.03 0 01-11.3 0l-42.4-42.4a8.03 8.03 0 010-11.3l256.1-256.3z\" } }] }, \"name\": \"export\", \"theme\": \"outlined\" };\nexport default ExportOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ExportOutlinedSvg from \"@ant-design/icons-svg/es/asn/ExportOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ExportOutlined = function ExportOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: ExportOutlinedSvg\n  }));\n};\n\n/**![export](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNODgwIDkxMkgxNDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzNjBjNC40IDAgOCAzLjYgOCA4djU2YzAgNC40LTMuNiA4LTggOEgxODR2NjU2aDY1NlY1MjBjMC00LjQgMy42LTggOC04aDU2YzQuNCAwIDggMy42IDggOHYzNjBjMCAxNy43LTE0LjMgMzItMzIgMzJ6TTc3MC44NyAxOTkuMTNsLTUyLjItNTIuMmE4LjAxIDguMDEgMCAwMTQuNy0xMy42bDE3OS40LTIxYzUuMS0uNiA5LjUgMy43IDguOSA4LjlsLTIxIDE3OS40Yy0uOCA2LjYtOC45IDkuNC0xMy42IDQuN2wtNTIuNC01Mi40LTI1Ni4yIDI1Ni4yYTguMDMgOC4wMyAwIDAxLTExLjMgMGwtNDIuNC00Mi40YTguMDMgOC4wMyAwIDAxMC0xMS4zbDI1Ni4xLTI1Ni4zeiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(ExportOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'ExportOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar UserAddOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M678.3 642.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 00-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 505 759.6 431.7 759.6 349c0-137-110.8-248-247.5-248S264.7 212 264.7 349c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 00-80.4 119.5A373.6 373.6 0 00137 888.8a8 8 0 008 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 628.2 432.2 597 512.2 597c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 008.1.3zM512.2 521c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 01340.5 349c0-45.9 17.9-89.1 50.3-121.6S466.3 177 512.2 177s88.9 17.9 121.4 50.4A171.2 171.2 0 01683.9 349c0 45.9-17.9 89.1-50.3 121.6C601.1 503.1 558 521 512.2 521zM880 759h-84v-84c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v84h-84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h84v84c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-84h84c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"user-add\", \"theme\": \"outlined\" };\nexport default UserAddOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport UserAddOutlinedSvg from \"@ant-design/icons-svg/es/asn/UserAddOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar UserAddOutlined = function UserAddOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: UserAddOutlinedSvg\n  }));\n};\n\n/**![user-add](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTY3OC4zIDY0Mi40YzI0LjItMTMgNTEuOS0yMC40IDgxLjQtMjAuNGguMWMzIDAgNC40LTMuNiAyLjItNS42YTM3MS42NyAzNzEuNjcgMCAwMC0xMDMuNy02NS44Yy0uNC0uMi0uOC0uMy0xLjItLjVDNzE5LjIgNTA1IDc1OS42IDQzMS43IDc1OS42IDM0OWMwLTEzNy0xMTAuOC0yNDgtMjQ3LjUtMjQ4UzI2NC43IDIxMiAyNjQuNyAzNDljMCA4Mi43IDQwLjQgMTU2IDEwMi42IDIwMS4xLS40LjItLjguMy0xLjIuNS00NC43IDE4LjktODQuOCA0Ni0xMTkuMyA4MC42YTM3My40MiAzNzMuNDIgMCAwMC04MC40IDExOS41QTM3My42IDM3My42IDAgMDAxMzcgODg4LjhhOCA4IDAgMDA4IDguMmg1OS45YzQuMyAwIDcuOS0zLjUgOC03LjggMi03Ny4yIDMyLjktMTQ5LjUgODcuNi0yMDQuM0MzNTcgNjI4LjIgNDMyLjIgNTk3IDUxMi4yIDU5N2M1Ni43IDAgMTExLjEgMTUuNyAxNTggNDUuMWE4LjEgOC4xIDAgMDA4LjEuM3pNNTEyLjIgNTIxYy00NS44IDAtODguOS0xNy45LTEyMS40LTUwLjRBMTcxLjIgMTcxLjIgMCAwMTM0MC41IDM0OWMwLTQ1LjkgMTcuOS04OS4xIDUwLjMtMTIxLjZTNDY2LjMgMTc3IDUxMi4yIDE3N3M4OC45IDE3LjkgMTIxLjQgNTAuNEExNzEuMiAxNzEuMiAwIDAxNjgzLjkgMzQ5YzAgNDUuOS0xNy45IDg5LjEtNTAuMyAxMjEuNkM2MDEuMSA1MDMuMSA1NTggNTIxIDUxMi4yIDUyMXpNODgwIDc1OWgtODR2LTg0YzAtNC40LTMuNi04LTgtOGgtNTZjLTQuNCAwLTggMy42LTggOHY4NGgtODRjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoODR2ODRjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtODRoODRjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(UserAddOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'UserAddOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar SettingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" } }] }, \"name\": \"setting\", \"theme\": \"outlined\" };\nexport default SettingOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SettingOutlinedSvg from \"@ant-design/icons-svg/es/asn/SettingOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SettingOutlined = function SettingOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: SettingOutlinedSvg\n  }));\n};\n\n/**![setting](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkyNC44IDYyNS43bC02NS41LTU2YzMuMS0xOSA0LjctMzguNCA0LjctNTcuOHMtMS42LTM4LjgtNC43LTU3LjhsNjUuNS01NmEzMi4wMyAzMi4wMyAwIDAwOS4zLTM1LjJsLS45LTIuNmE0NDMuNzQgNDQzLjc0IDAgMDAtNzkuNy0xMzcuOWwtMS44LTIuMWEzMi4xMiAzMi4xMiAwIDAwLTM1LjEtOS41bC04MS4zIDI4LjljLTMwLTI0LjYtNjMuNS00NC05OS43LTU3LjZsLTE1LjctODVhMzIuMDUgMzIuMDUgMCAwMC0yNS44LTI1LjdsLTIuNy0uNWMtNTIuMS05LjQtMTA2LjktOS40LTE1OSAwbC0yLjcuNWEzMi4wNSAzMi4wNSAwIDAwLTI1LjggMjUuN2wtMTUuOCA4NS40YTM1MS44NiAzNTEuODYgMCAwMC05OSA1Ny40bC04MS45LTI5LjFhMzIgMzIgMCAwMC0zNS4xIDkuNWwtMS44IDIuMWE0NDYuMDIgNDQ2LjAyIDAgMDAtNzkuNyAxMzcuOWwtLjkgMi42Yy00LjUgMTIuNS0uOCAyNi41IDkuMyAzNS4ybDY2LjMgNTYuNmMtMy4xIDE4LjgtNC42IDM4LTQuNiA1Ny4xIDAgMTkuMiAxLjUgMzguNCA0LjYgNTcuMUw5OSA2MjUuNWEzMi4wMyAzMi4wMyAwIDAwLTkuMyAzNS4ybC45IDIuNmMxOC4xIDUwLjQgNDQuOSA5Ni45IDc5LjcgMTM3LjlsMS44IDIuMWEzMi4xMiAzMi4xMiAwIDAwMzUuMSA5LjVsODEuOS0yOS4xYzI5LjggMjQuNSA2My4xIDQzLjkgOTkgNTcuNGwxNS44IDg1LjRhMzIuMDUgMzIuMDUgMCAwMDI1LjggMjUuN2wyLjcuNWE0NDkuNCA0NDkuNCAwIDAwMTU5IDBsMi43LS41YTMyLjA1IDMyLjA1IDAgMDAyNS44LTI1LjdsMTUuNy04NWEzNTAgMzUwIDAgMDA5OS43LTU3LjZsODEuMyAyOC45YTMyIDMyIDAgMDAzNS4xLTkuNWwxLjgtMi4xYzM0LjgtNDEuMSA2MS42LTg3LjUgNzkuNy0xMzcuOWwuOS0yLjZjNC41LTEyLjMuOC0yNi4zLTkuMy0zNXpNNzg4LjMgNDY1LjljMi41IDE1LjEgMy44IDMwLjYgMy44IDQ2LjFzLTEuMyAzMS0zLjggNDYuMWwtNi42IDQwLjEgNzQuNyA2My45YTM3MC4wMyAzNzAuMDMgMCAwMS00Mi42IDczLjZMNzIxIDcwMi44bC0zMS40IDI1LjhjLTIzLjkgMTkuNi01MC41IDM1LTc5LjMgNDUuOGwtMzguMSAxNC4zLTE3LjkgOTdhMzc3LjUgMzc3LjUgMCAwMS04NSAwbC0xNy45LTk3LjItMzcuOC0xNC41Yy0yOC41LTEwLjgtNTUtMjYuMi03OC43LTQ1LjdsLTMxLjQtMjUuOS05My40IDMzLjJjLTE3LTIyLjktMzEuMi00Ny42LTQyLjYtNzMuNmw3NS41LTY0LjUtNi41LTQwYy0yLjQtMTQuOS0zLjctMzAuMy0zLjctNDUuNSAwLTE1LjMgMS4yLTMwLjYgMy43LTQ1LjVsNi41LTQwLTc1LjUtNjQuNWMxMS4zLTI2LjEgMjUuNi01MC43IDQyLjYtNzMuNmw5My40IDMzLjIgMzEuNC0yNS45YzIzLjctMTkuNSA1MC4yLTM0LjkgNzguNy00NS43bDM3LjktMTQuMyAxNy45LTk3LjJjMjguMS0zLjIgNTYuOC0zLjIgODUgMGwxNy45IDk3IDM4LjEgMTQuM2MyOC43IDEwLjggNTUuNCAyNi4yIDc5LjMgNDUuOGwzMS40IDI1LjggOTIuOC0zMi45YzE3IDIyLjkgMzEuMiA0Ny42IDQyLjYgNzMuNkw3ODEuOCA0MjZsNi41IDM5Ljl6TTUxMiAzMjZjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em03OS4yIDI1NS4yQTExMS42IDExMS42IDAgMDE1MTIgNjE0Yy0yOS45IDAtNTgtMTEuNy03OS4yLTMyLjhBMTExLjYgMTExLjYgMCAwMTQwMCA1MDJjMC0yOS45IDExLjctNTggMzIuOC03OS4yQzQ1NCA0MDEuNiA0ODIuMSAzOTAgNTEyIDM5MGMyOS45IDAgNTggMTEuNiA3OS4yIDMyLjhBMTExLjYgMTExLjYgMCAwMTYyNCA1MDJjMCAyOS45LTExLjcgNTgtMzIuOCA3OS4yeiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SettingOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'SettingOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar LogoutOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 01-112.7 75.9A352.8 352.8 0 01512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 01-112.7-75.9 353.28 353.28 0 01-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 000-12.6z\" } }] }, \"name\": \"logout\", \"theme\": \"outlined\" };\nexport default LogoutOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LogoutOutlinedSvg from \"@ant-design/icons-svg/es/asn/LogoutOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LogoutOutlined = function LogoutOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: LogoutOutlinedSvg\n  }));\n};\n\n/**![logout](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg2OCA3MzJoLTcwLjNjLTQuOCAwLTkuMyAyLjEtMTIuMyA1LjgtNyA4LjUtMTQuNSAxNi43LTIyLjQgMjQuNWEzNTMuODQgMzUzLjg0IDAgMDEtMTEyLjcgNzUuOUEzNTIuOCAzNTIuOCAwIDAxNTEyLjQgODY2Yy00Ny45IDAtOTQuMy05LjQtMTM3LjktMjcuOGEzNTMuODQgMzUzLjg0IDAgMDEtMTEyLjctNzUuOSAzNTMuMjggMzUzLjI4IDAgMDEtNzYtMTEyLjVDMTY3LjMgNjA2LjIgMTU4IDU1OS45IDE1OCA1MTJzOS40LTk0LjIgMjcuOC0xMzcuOGMxNy44LTQyLjEgNDMuNC04MCA3Ni0xMTIuNXM3MC41LTU4LjEgMTEyLjctNzUuOWM0My42LTE4LjQgOTAtMjcuOCAxMzcuOS0yNy44IDQ3LjkgMCA5NC4zIDkuMyAxMzcuOSAyNy44IDQyLjIgMTcuOCA4MC4xIDQzLjQgMTEyLjcgNzUuOSA3LjkgNy45IDE1LjMgMTYuMSAyMi40IDI0LjUgMyAzLjcgNy42IDUuOCAxMi4zIDUuOEg4NjhjNi4zIDAgMTAuMi03IDYuNy0xMi4zQzc5OCAxNjAuNSA2NjMuOCA4MS42IDUxMS4zIDgyIDI3MS43IDgyLjYgNzkuNiAyNzcuMSA4MiA1MTYuNCA4NC40IDc1MS45IDI3Ni4yIDk0MiA1MTIuNCA5NDJjMTUyLjEgMCAyODUuNy03OC44IDM2Mi4zLTE5Ny43IDMuNC01LjMtLjQtMTIuMy02LjctMTIuM3ptODguOS0yMjYuM0w4MTUgMzkzLjdjLTUuMy00LjItMTMtLjQtMTMgNi4zdjc2SDQ4OGMtNC40IDAtOCAzLjYtOCA4djU2YzAgNC40IDMuNiA4IDggOGgzMTR2NzZjMCA2LjcgNy44IDEwLjUgMTMgNi4zbDE0MS45LTExMmE4IDggMCAwMDAtMTIuNnoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(LogoutOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'LogoutOutlined';\n}\nexport default RefIcon;","/**\n * react-router v7.2.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n\n// lib/router/history.ts\nvar Action = /* @__PURE__ */ ((Action2) => {\n  Action2[\"Pop\"] = \"POP\";\n  Action2[\"Push\"] = \"PUSH\";\n  Action2[\"Replace\"] = \"REPLACE\";\n  return Action2;\n})(Action || {});\nvar PopStateEventType = \"popstate\";\nfunction createMemoryHistory(options = {}) {\n  let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n  let entries;\n  entries = initialEntries.map(\n    (entry, index2) => createMemoryLocation(\n      entry,\n      typeof entry === \"string\" ? null : entry.state,\n      index2 === 0 ? \"default\" : void 0\n    )\n  );\n  let index = clampIndex(\n    initialIndex == null ? entries.length - 1 : initialIndex\n  );\n  let action = \"POP\" /* Pop */;\n  let listener = null;\n  function clampIndex(n) {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n  function getCurrentLocation() {\n    return entries[index];\n  }\n  function createMemoryLocation(to, state = null, key) {\n    let location = createLocation(\n      entries ? getCurrentLocation().pathname : \"/\",\n      to,\n      state,\n      key\n    );\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in memory history: ${JSON.stringify(\n        to\n      )}`\n    );\n    return location;\n  }\n  function createHref2(to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  let history = {\n    get index() {\n      return index;\n    },\n    get action() {\n      return action;\n    },\n    get location() {\n      return getCurrentLocation();\n    },\n    createHref: createHref2,\n    createURL(to) {\n      return new URL(createHref2(to), \"http://localhost\");\n    },\n    encodeLocation(to) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\"\n      };\n    },\n    push(to, state) {\n      action = \"PUSH\" /* Push */;\n      let nextLocation = createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 1 });\n      }\n    },\n    replace(to, state) {\n      action = \"REPLACE\" /* Replace */;\n      let nextLocation = createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 0 });\n      }\n    },\n    go(delta) {\n      action = \"POP\" /* Pop */;\n      let nextIndex = clampIndex(index + delta);\n      let nextLocation = entries[nextIndex];\n      index = nextIndex;\n      if (listener) {\n        listener({ action, location: nextLocation, delta });\n      }\n    },\n    listen(fn) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    }\n  };\n  return history;\n}\nfunction createBrowserHistory(options = {}) {\n  function createBrowserLocation(window2, globalHistory) {\n    let { pathname, search, hash } = window2.location;\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      globalHistory.state && globalHistory.state.usr || null,\n      globalHistory.state && globalHistory.state.key || \"default\"\n    );\n  }\n  function createBrowserHref(window2, to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  return getUrlBasedHistory(\n    createBrowserLocation,\n    createBrowserHref,\n    null,\n    options\n  );\n}\nfunction createHashHistory(options = {}) {\n  function createHashLocation(window2, globalHistory) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\"\n    } = parsePath(window2.location.hash.substring(1));\n    if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n      pathname = \"/\" + pathname;\n    }\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      globalHistory.state && globalHistory.state.usr || null,\n      globalHistory.state && globalHistory.state.key || \"default\"\n    );\n  }\n  function createHashHref(window2, to) {\n    let base = window2.document.querySelector(\"base\");\n    let href2 = \"\";\n    if (base && base.getAttribute(\"href\")) {\n      let url = window2.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href2 = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n    return href2 + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n  function validateHashLocation(location, to) {\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in hash history.push(${JSON.stringify(\n        to\n      )})`\n    );\n  }\n  return getUrlBasedHistory(\n    createHashLocation,\n    createHashHref,\n    validateHashLocation,\n    options\n  );\n}\nfunction invariant(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\nfunction warning(cond, message) {\n  if (!cond) {\n    if (typeof console !== \"undefined\") console.warn(message);\n    try {\n      throw new Error(message);\n    } catch (e) {\n    }\n  }\n}\nfunction createKey() {\n  return Math.random().toString(36).substring(2, 10);\n}\nfunction getHistoryState(location, index) {\n  return {\n    usr: location.state,\n    key: location.key,\n    idx: index\n  };\n}\nfunction createLocation(current, to, state = null, key) {\n  let location = {\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\",\n    ...typeof to === \"string\" ? parsePath(to) : to,\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: to && to.key || key || createKey()\n  };\n  return location;\n}\nfunction createPath({\n  pathname = \"/\",\n  search = \"\",\n  hash = \"\"\n}) {\n  if (search && search !== \"?\")\n    pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\")\n    pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\nfunction parsePath(path) {\n  let parsedPath = {};\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substring(hashIndex);\n      path = path.substring(0, hashIndex);\n    }\n    let searchIndex = path.indexOf(\"?\");\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substring(searchIndex);\n      path = path.substring(0, searchIndex);\n    }\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n  return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref2, validateLocation, options = {}) {\n  let { window: window2 = document.defaultView, v5Compat = false } = options;\n  let globalHistory = window2.history;\n  let action = \"POP\" /* Pop */;\n  let listener = null;\n  let index = getIndex();\n  if (index == null) {\n    index = 0;\n    globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n  }\n  function getIndex() {\n    let state = globalHistory.state || { idx: null };\n    return state.idx;\n  }\n  function handlePop() {\n    action = \"POP\" /* Pop */;\n    let nextIndex = getIndex();\n    let delta = nextIndex == null ? null : nextIndex - index;\n    index = nextIndex;\n    if (listener) {\n      listener({ action, location: history.location, delta });\n    }\n  }\n  function push(to, state) {\n    action = \"PUSH\" /* Push */;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    index = getIndex() + 1;\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      if (error instanceof DOMException && error.name === \"DataCloneError\") {\n        throw error;\n      }\n      window2.location.assign(url);\n    }\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 1 });\n    }\n  }\n  function replace2(to, state) {\n    action = \"REPLACE\" /* Replace */;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    index = getIndex();\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n    globalHistory.replaceState(historyState, \"\", url);\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 0 });\n    }\n  }\n  function createURL(to) {\n    let base = window2.location.origin !== \"null\" ? window2.location.origin : window2.location.href;\n    let href2 = typeof to === \"string\" ? to : createPath(to);\n    href2 = href2.replace(/ $/, \"%20\");\n    invariant(\n      base,\n      `No window.location.(origin|href) available to create URL for href: ${href2}`\n    );\n    return new URL(href2, base);\n  }\n  let history = {\n    get action() {\n      return action;\n    },\n    get location() {\n      return getLocation(window2, globalHistory);\n    },\n    listen(fn) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n      window2.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n      return () => {\n        window2.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n    createHref(to) {\n      return createHref2(window2, to);\n    },\n    createURL,\n    encodeLocation(to) {\n      let url = createURL(to);\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash\n      };\n    },\n    push,\n    replace: replace2,\n    go(n) {\n      return globalHistory.go(n);\n    }\n  };\n  return history;\n}\n\n// lib/router/utils.ts\nvar immutableRouteKeys = /* @__PURE__ */ new Set([\n  \"lazy\",\n  \"caseSensitive\",\n  \"path\",\n  \"id\",\n  \"index\",\n  \"children\"\n]);\nfunction isIndexRoute(route) {\n  return route.index === true;\n}\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties2, parentPath = [], manifest = {}) {\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, String(index)];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(\n      route.index !== true || !route.children,\n      `Cannot specify children on an index route`\n    );\n    invariant(\n      !manifest[id],\n      `Found a route id collision on id \"${id}\".  Route id's must be globally unique within Data Router usages`\n    );\n    if (isIndexRoute(route)) {\n      let indexRoute = {\n        ...route,\n        ...mapRouteProperties2(route),\n        id\n      };\n      manifest[id] = indexRoute;\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute = {\n        ...route,\n        ...mapRouteProperties2(route),\n        id,\n        children: void 0\n      };\n      manifest[id] = pathOrLayoutRoute;\n      if (route.children) {\n        pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n          route.children,\n          mapRouteProperties2,\n          treePath,\n          manifest\n        );\n      }\n      return pathOrLayoutRoute;\n    }\n  });\n}\nfunction matchRoutes(routes, locationArg, basename = \"/\") {\n  return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\n  let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n  if (pathname == null) {\n    return null;\n  }\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n  let matches = null;\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    let decoded = decodePath(pathname);\n    matches = matchRouteBranch(\n      branches[i],\n      decoded,\n      allowPartial\n    );\n  }\n  return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n  let { route, pathname, params } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id],\n    handle: route.handle\n  };\n}\nfunction flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = \"\") {\n  let flattenRoute = (route, index, relativePath) => {\n    let meta = {\n      relativePath: relativePath === void 0 ? route.path || \"\" : relativePath,\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route\n    };\n    if (meta.relativePath.startsWith(\"/\")) {\n      invariant(\n        meta.relativePath.startsWith(parentPath),\n        `Absolute route path \"${meta.relativePath}\" nested under path \"${parentPath}\" is not valid. An absolute child route path must start with the combined path of all its parent routes.`\n      );\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta);\n    if (route.children && route.children.length > 0) {\n      invariant(\n        // Our types know better, but runtime JS may not!\n        // @ts-expect-error\n        route.index !== true,\n        `Index routes must not have child routes. Please remove all child routes from route path \"${path}\".`\n      );\n      flattenRoutes(route.children, branches, routesMeta, path);\n    }\n    if (route.path == null && !route.index) {\n      return;\n    }\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta\n    });\n  };\n  routes.forEach((route, index) => {\n    if (route.path === \"\" || !route.path?.includes(\"?\")) {\n      flattenRoute(route, index);\n    } else {\n      for (let exploded of explodeOptionalSegments(route.path)) {\n        flattenRoute(route, index, exploded);\n      }\n    }\n  });\n  return branches;\n}\nfunction explodeOptionalSegments(path) {\n  let segments = path.split(\"/\");\n  if (segments.length === 0) return [];\n  let [first, ...rest] = segments;\n  let isOptional = first.endsWith(\"?\");\n  let required = first.replace(/\\?$/, \"\");\n  if (rest.length === 0) {\n    return isOptional ? [required, \"\"] : [required];\n  }\n  let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n  let result = [];\n  result.push(\n    ...restExploded.map(\n      (subpath) => subpath === \"\" ? required : [required, subpath].join(\"/\")\n    )\n  );\n  if (isOptional) {\n    result.push(...restExploded);\n  }\n  return result.map(\n    (exploded) => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n  );\n}\nfunction rankRouteBranches(branches) {\n  branches.sort(\n    (a, b) => a.score !== b.score ? b.score - a.score : compareIndexes(\n      a.routesMeta.map((meta) => meta.childrenIndex),\n      b.routesMeta.map((meta) => meta.childrenIndex)\n    )\n  );\n}\nvar paramRe = /^:[\\w-]+$/;\nvar dynamicSegmentValue = 3;\nvar indexRouteValue = 2;\nvar emptySegmentValue = 1;\nvar staticSegmentValue = 10;\nvar splatPenalty = -2;\nvar isSplat = (s) => s === \"*\";\nfunction computeScore(path, index) {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n  return segments.filter((s) => !isSplat(s)).reduce(\n    (score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue),\n    initialScore\n  );\n}\nfunction compareIndexes(a, b) {\n  let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n  return siblings ? (\n    // If two routes are siblings, we should try to match the earlier sibling\n    // first. This allows people to have fine-grained control over the matching\n    // behavior by simply putting routes with identical paths in the order they\n    // want them tried.\n    a[a.length - 1] - b[b.length - 1]\n  ) : (\n    // Otherwise, it doesn't really make sense to rank non-siblings by index,\n    // so they sort equally.\n    0\n  );\n}\nfunction matchRouteBranch(branch, pathname, allowPartial = false) {\n  let { routesMeta } = branch;\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches = [];\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n    let match = matchPath(\n      { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n      remainingPathname\n    );\n    let route = meta.route;\n    if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n      match = matchPath(\n        {\n          path: meta.relativePath,\n          caseSensitive: meta.caseSensitive,\n          end: false\n        },\n        remainingPathname\n      );\n    }\n    if (!match) {\n      return null;\n    }\n    Object.assign(matchedParams, match.params);\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(\n        joinPaths([matchedPathname, match.pathnameBase])\n      ),\n      route\n    });\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n  return matches;\n}\nfunction generatePath(originalPath, params = {}) {\n  let path = originalPath;\n  if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n    warning(\n      false,\n      `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n    );\n    path = path.replace(/\\*$/, \"/*\");\n  }\n  const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n  const stringify = (p) => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n  const segments = path.split(/\\/+/).map((segment, index, array) => {\n    const isLastSegment = index === array.length - 1;\n    if (isLastSegment && segment === \"*\") {\n      const star = \"*\";\n      return stringify(params[star]);\n    }\n    const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n    if (keyMatch) {\n      const [, key, optional] = keyMatch;\n      let param = params[key];\n      invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n      return stringify(param);\n    }\n    return segment.replace(/\\?$/g, \"\");\n  }).filter((segment) => !!segment);\n  return prefix + segments.join(\"/\");\n}\nfunction matchPath(pattern, pathname) {\n  if (typeof pattern === \"string\") {\n    pattern = { path: pattern, caseSensitive: false, end: true };\n  }\n  let [matcher, compiledParams] = compilePath(\n    pattern.path,\n    pattern.caseSensitive,\n    pattern.end\n  );\n  let match = pathname.match(matcher);\n  if (!match) return null;\n  let matchedPathname = match[0];\n  let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n  let captureGroups = match.slice(1);\n  let params = compiledParams.reduce(\n    (memo2, { paramName, isOptional }, index) => {\n      if (paramName === \"*\") {\n        let splatValue = captureGroups[index] || \"\";\n        pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n      }\n      const value = captureGroups[index];\n      if (isOptional && !value) {\n        memo2[paramName] = void 0;\n      } else {\n        memo2[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n      }\n      return memo2;\n    },\n    {}\n  );\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern\n  };\n}\nfunction compilePath(path, caseSensitive = false, end = true) {\n  warning(\n    path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n    `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n  );\n  let params = [];\n  let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\").replace(/^\\/*/, \"/\").replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\").replace(\n    /\\/:([\\w-]+)(\\?)?/g,\n    (_, paramName, isOptional) => {\n      params.push({ paramName, isOptional: isOptional != null });\n      return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n    }\n  );\n  if (path.endsWith(\"*\")) {\n    params.push({ paramName: \"*\" });\n    regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" : \"(?:\\\\/(.+)|\\\\/*)$\";\n  } else if (end) {\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else {\n  }\n  let matcher = new RegExp(regexpSource, caseSensitive ? void 0 : \"i\");\n  return [matcher, params];\n}\nfunction decodePath(value) {\n  try {\n    return value.split(\"/\").map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n  } catch (error) {\n    warning(\n      false,\n      `The URL path \"${value}\" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${error}).`\n    );\n    return value;\n  }\n}\nfunction stripBasename(pathname, basename) {\n  if (basename === \"/\") return pathname;\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  }\n  let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n  if (nextChar && nextChar !== \"/\") {\n    return null;\n  }\n  return pathname.slice(startIndex) || \"/\";\n}\nfunction resolvePath(to, fromPathname = \"/\") {\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\"\n  } = typeof to === \"string\" ? parsePath(to) : to;\n  let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash)\n  };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n  let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n  relativeSegments.forEach((segment) => {\n    if (segment === \"..\") {\n      if (segments.length > 1) segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n  return `Cannot include a '${char}' character in a manually specified \\`to.${field}\\` field [${JSON.stringify(\n    path\n  )}].  Please separate it out to the \\`to.${dest}\\` field. Alternatively you may provide the full path as a string in <Link to=\"...\"> and the router will parse it for you.`;\n}\nfunction getPathContributingMatches(matches) {\n  return matches.filter(\n    (match, index) => index === 0 || match.route.path && match.route.path.length > 0\n  );\n}\nfunction getResolveToMatches(matches) {\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches.map(\n    (match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n  );\n}\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative = false) {\n  let to;\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = { ...toArg };\n    invariant(\n      !to.pathname || !to.pathname.includes(\"?\"),\n      getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n    );\n    invariant(\n      !to.pathname || !to.pathname.includes(\"#\"),\n      getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n    );\n    invariant(\n      !to.search || !to.search.includes(\"#\"),\n      getInvalidPathError(\"#\", \"search\", \"hash\", to)\n    );\n  }\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n  let from;\n  if (toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n    if (!isPathRelative && toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\");\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n      to.pathname = toSegments.join(\"/\");\n    }\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n  let path = resolvePath(to, from);\n  let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n  let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n  if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n    path.pathname += \"/\";\n  }\n  return path;\n}\nvar joinPaths = (paths) => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\nvar normalizePathname = (pathname) => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\nvar normalizeSearch = (search) => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\nvar normalizeHash = (hash) => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\nvar DataWithResponseInit = class {\n  constructor(data2, init) {\n    this.type = \"DataWithResponseInit\";\n    this.data = data2;\n    this.init = init || null;\n  }\n};\nfunction data(data2, init) {\n  return new DataWithResponseInit(\n    data2,\n    typeof init === \"number\" ? { status: init } : init\n  );\n}\nvar redirect = (url, init = 302) => {\n  let responseInit = init;\n  if (typeof responseInit === \"number\") {\n    responseInit = { status: responseInit };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n  return new Response(null, { ...responseInit, headers });\n};\nvar redirectDocument = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n  return response;\n};\nvar replace = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Replace\", \"true\");\n  return response;\n};\nvar ErrorResponseImpl = class {\n  constructor(status, statusText, data2, internal = false) {\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n    if (data2 instanceof Error) {\n      this.data = data2.toString();\n      this.error = data2;\n    } else {\n      this.data = data2;\n    }\n  }\n};\nfunction isRouteErrorResponse(error) {\n  return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\n// lib/router/router.ts\nvar validMutationMethodsArr = [\n  \"POST\",\n  \"PUT\",\n  \"PATCH\",\n  \"DELETE\"\n];\nvar validMutationMethods = new Set(\n  validMutationMethodsArr\n);\nvar validRequestMethodsArr = [\n  \"GET\",\n  ...validMutationMethodsArr\n];\nvar validRequestMethods = new Set(validRequestMethodsArr);\nvar redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nvar redirectPreserveMethodStatusCodes = /* @__PURE__ */ new Set([307, 308]);\nvar IDLE_NAVIGATION = {\n  state: \"idle\",\n  location: void 0,\n  formMethod: void 0,\n  formAction: void 0,\n  formEncType: void 0,\n  formData: void 0,\n  json: void 0,\n  text: void 0\n};\nvar IDLE_FETCHER = {\n  state: \"idle\",\n  data: void 0,\n  formMethod: void 0,\n  formAction: void 0,\n  formEncType: void 0,\n  formData: void 0,\n  json: void 0,\n  text: void 0\n};\nvar IDLE_BLOCKER = {\n  state: \"unblocked\",\n  proceed: void 0,\n  reset: void 0,\n  location: void 0\n};\nvar ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar defaultMapRouteProperties = (route) => ({\n  hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nvar TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\nvar ResetLoaderDataSymbol = Symbol(\"ResetLoaderData\");\nfunction createRouter(init) {\n  const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : void 0;\n  const isBrowser2 = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n  invariant(\n    init.routes.length > 0,\n    \"You must provide a non-empty routes array to createRouter\"\n  );\n  let mapRouteProperties2 = init.mapRouteProperties || defaultMapRouteProperties;\n  let manifest = {};\n  let dataRoutes = convertRoutesToDataRoutes(\n    init.routes,\n    mapRouteProperties2,\n    void 0,\n    manifest\n  );\n  let inFlightDataRoutes;\n  let basename = init.basename || \"/\";\n  let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n  let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n  let future = {\n    ...init.future\n  };\n  let unlistenHistory = null;\n  let subscribers = /* @__PURE__ */ new Set();\n  let savedScrollPositions2 = null;\n  let getScrollRestorationKey2 = null;\n  let getScrollPosition = null;\n  let initialScrollRestored = init.hydrationData != null;\n  let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n  let initialMatchesIsFOW = false;\n  let initialErrors = null;\n  if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname\n    });\n    let { matches, route } = getShortCircuitMatches(dataRoutes);\n    initialMatches = matches;\n    initialErrors = { [route.id]: error };\n  }\n  if (initialMatches && !init.hydrationData) {\n    let fogOfWar = checkFogOfWar(\n      initialMatches,\n      dataRoutes,\n      init.history.location.pathname\n    );\n    if (fogOfWar.active) {\n      initialMatches = null;\n    }\n  }\n  let initialized;\n  if (!initialMatches) {\n    initialized = false;\n    initialMatches = [];\n    let fogOfWar = checkFogOfWar(\n      null,\n      dataRoutes,\n      init.history.location.pathname\n    );\n    if (fogOfWar.active && fogOfWar.matches) {\n      initialMatchesIsFOW = true;\n      initialMatches = fogOfWar.matches;\n    }\n  } else if (initialMatches.some((m) => m.route.lazy)) {\n    initialized = false;\n  } else if (!initialMatches.some((m) => m.route.loader)) {\n    initialized = true;\n  } else {\n    let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n    let errors = init.hydrationData ? init.hydrationData.errors : null;\n    if (errors) {\n      let idx = initialMatches.findIndex(\n        (m) => errors[m.route.id] !== void 0\n      );\n      initialized = initialMatches.slice(0, idx + 1).every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n    } else {\n      initialized = initialMatches.every(\n        (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n      );\n    }\n  }\n  let router;\n  let state = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    navigation: IDLE_NAVIGATION,\n    // Don't restore on initial updateState() if we were SSR'd\n    restoreScrollPosition: init.hydrationData != null ? false : null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n    actionData: init.hydrationData && init.hydrationData.actionData || null,\n    errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n    fetchers: /* @__PURE__ */ new Map(),\n    blockers: /* @__PURE__ */ new Map()\n  };\n  let pendingAction = \"POP\" /* Pop */;\n  let pendingPreventScrollReset = false;\n  let pendingNavigationController;\n  let pendingViewTransitionEnabled = false;\n  let appliedViewTransitions = /* @__PURE__ */ new Map();\n  let removePageHideEventListener = null;\n  let isUninterruptedRevalidation = false;\n  let isRevalidationRequired = false;\n  let cancelledFetcherLoads = /* @__PURE__ */ new Set();\n  let fetchControllers = /* @__PURE__ */ new Map();\n  let incrementingLoadId = 0;\n  let pendingNavigationLoadId = -1;\n  let fetchReloadIds = /* @__PURE__ */ new Map();\n  let fetchRedirectIds = /* @__PURE__ */ new Set();\n  let fetchLoadMatches = /* @__PURE__ */ new Map();\n  let activeFetchers = /* @__PURE__ */ new Map();\n  let fetchersQueuedForDeletion = /* @__PURE__ */ new Set();\n  let blockerFunctions = /* @__PURE__ */ new Map();\n  let unblockBlockerHistoryUpdate = void 0;\n  let pendingRevalidationDfd = null;\n  function initialize() {\n    unlistenHistory = init.history.listen(\n      ({ action: historyAction, location, delta }) => {\n        if (unblockBlockerHistoryUpdate) {\n          unblockBlockerHistoryUpdate();\n          unblockBlockerHistoryUpdate = void 0;\n          return;\n        }\n        warning(\n          blockerFunctions.size === 0 || delta != null,\n          \"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs.  This can also happen if you are using createHashRouter and the user manually changes the URL.\"\n        );\n        let blockerKey = shouldBlockNavigation({\n          currentLocation: state.location,\n          nextLocation: location,\n          historyAction\n        });\n        if (blockerKey && delta != null) {\n          let nextHistoryUpdatePromise = new Promise((resolve) => {\n            unblockBlockerHistoryUpdate = resolve;\n          });\n          init.history.go(delta * -1);\n          updateBlocker(blockerKey, {\n            state: \"blocked\",\n            location,\n            proceed() {\n              updateBlocker(blockerKey, {\n                state: \"proceeding\",\n                proceed: void 0,\n                reset: void 0,\n                location\n              });\n              nextHistoryUpdatePromise.then(() => init.history.go(delta));\n            },\n            reset() {\n              let blockers = new Map(state.blockers);\n              blockers.set(blockerKey, IDLE_BLOCKER);\n              updateState({ blockers });\n            }\n          });\n          return;\n        }\n        return startNavigation(historyAction, location);\n      }\n    );\n    if (isBrowser2) {\n      restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n      let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n      routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n      removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n    }\n    if (!state.initialized) {\n      startNavigation(\"POP\" /* Pop */, state.location, {\n        initialHydration: true\n      });\n    }\n    return router;\n  }\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n    if (removePageHideEventListener) {\n      removePageHideEventListener();\n    }\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(key));\n    state.blockers.forEach((_, key) => deleteBlocker(key));\n  }\n  function subscribe(fn) {\n    subscribers.add(fn);\n    return () => subscribers.delete(fn);\n  }\n  function updateState(newState, opts = {}) {\n    state = {\n      ...state,\n      ...newState\n    };\n    let unmountedFetchers = [];\n    let mountedFetchers = [];\n    state.fetchers.forEach((fetcher, key) => {\n      if (fetcher.state === \"idle\") {\n        if (fetchersQueuedForDeletion.has(key)) {\n          unmountedFetchers.push(key);\n        } else {\n          mountedFetchers.push(key);\n        }\n      }\n    });\n    fetchersQueuedForDeletion.forEach((key) => {\n      if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n        unmountedFetchers.push(key);\n      }\n    });\n    [...subscribers].forEach(\n      (subscriber) => subscriber(state, {\n        deletedFetchers: unmountedFetchers,\n        viewTransitionOpts: opts.viewTransitionOpts,\n        flushSync: opts.flushSync === true\n      })\n    );\n    unmountedFetchers.forEach((key) => deleteFetcher(key));\n    mountedFetchers.forEach((key) => state.fetchers.delete(key));\n  }\n  function completeNavigation(location, newState, { flushSync } = {}) {\n    let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && location.state?._isRedirect !== true;\n    let actionData;\n    if (newState.actionData) {\n      if (Object.keys(newState.actionData).length > 0) {\n        actionData = newState.actionData;\n      } else {\n        actionData = null;\n      }\n    } else if (isActionReload) {\n      actionData = state.actionData;\n    } else {\n      actionData = null;\n    }\n    let loaderData = newState.loaderData ? mergeLoaderData(\n      state.loaderData,\n      newState.loaderData,\n      newState.matches || [],\n      newState.errors\n    ) : state.loaderData;\n    let blockers = state.blockers;\n    if (blockers.size > 0) {\n      blockers = new Map(blockers);\n      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n    }\n    let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && location.state?._isRedirect !== true;\n    if (inFlightDataRoutes) {\n      dataRoutes = inFlightDataRoutes;\n      inFlightDataRoutes = void 0;\n    }\n    if (isUninterruptedRevalidation) {\n    } else if (pendingAction === \"POP\" /* Pop */) {\n    } else if (pendingAction === \"PUSH\" /* Push */) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === \"REPLACE\" /* Replace */) {\n      init.history.replace(location, location.state);\n    }\n    let viewTransitionOpts;\n    if (pendingAction === \"POP\" /* Pop */) {\n      let priorPaths = appliedViewTransitions.get(state.location.pathname);\n      if (priorPaths && priorPaths.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: state.location,\n          nextLocation: location\n        };\n      } else if (appliedViewTransitions.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: location,\n          nextLocation: state.location\n        };\n      }\n    } else if (pendingViewTransitionEnabled) {\n      let toPaths = appliedViewTransitions.get(state.location.pathname);\n      if (toPaths) {\n        toPaths.add(location.pathname);\n      } else {\n        toPaths = /* @__PURE__ */ new Set([location.pathname]);\n        appliedViewTransitions.set(state.location.pathname, toPaths);\n      }\n      viewTransitionOpts = {\n        currentLocation: state.location,\n        nextLocation: location\n      };\n    }\n    updateState(\n      {\n        ...newState,\n        // matches, errors, fetchers go through as-is\n        actionData,\n        loaderData,\n        historyAction: pendingAction,\n        location,\n        initialized: true,\n        navigation: IDLE_NAVIGATION,\n        revalidation: \"idle\",\n        restoreScrollPosition: getSavedScrollPosition(\n          location,\n          newState.matches || state.matches\n        ),\n        preventScrollReset,\n        blockers\n      },\n      {\n        viewTransitionOpts,\n        flushSync: flushSync === true\n      }\n    );\n    pendingAction = \"POP\" /* Pop */;\n    pendingPreventScrollReset = false;\n    pendingViewTransitionEnabled = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    pendingRevalidationDfd?.resolve();\n    pendingRevalidationDfd = null;\n  }\n  async function navigate(to, opts) {\n    if (typeof to === \"number\") {\n      init.history.go(to);\n      return;\n    }\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      to,\n      opts?.fromRouteId,\n      opts?.relative\n    );\n    let { path, submission, error } = normalizeNavigateOptions(\n      false,\n      normalizedPath,\n      opts\n    );\n    let currentLocation = state.location;\n    let nextLocation = createLocation(state.location, path, opts && opts.state);\n    nextLocation = {\n      ...nextLocation,\n      ...init.history.encodeLocation(nextLocation)\n    };\n    let userReplace = opts && opts.replace != null ? opts.replace : void 0;\n    let historyAction = \"PUSH\" /* Push */;\n    if (userReplace === true) {\n      historyAction = \"REPLACE\" /* Replace */;\n    } else if (userReplace === false) {\n    } else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n      historyAction = \"REPLACE\" /* Replace */;\n    }\n    let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : void 0;\n    let flushSync = (opts && opts.flushSync) === true;\n    let blockerKey = shouldBlockNavigation({\n      currentLocation,\n      nextLocation,\n      historyAction\n    });\n    if (blockerKey) {\n      updateBlocker(blockerKey, {\n        state: \"blocked\",\n        location: nextLocation,\n        proceed() {\n          updateBlocker(blockerKey, {\n            state: \"proceeding\",\n            proceed: void 0,\n            reset: void 0,\n            location: nextLocation\n          });\n          navigate(to, opts);\n        },\n        reset() {\n          let blockers = new Map(state.blockers);\n          blockers.set(blockerKey, IDLE_BLOCKER);\n          updateState({ blockers });\n        }\n      });\n      return;\n    }\n    await startNavigation(historyAction, nextLocation, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace,\n      enableViewTransition: opts && opts.viewTransition,\n      flushSync\n    });\n  }\n  function revalidate() {\n    if (!pendingRevalidationDfd) {\n      pendingRevalidationDfd = createDeferred();\n    }\n    interruptActiveLoads();\n    updateState({ revalidation: \"loading\" });\n    let promise = pendingRevalidationDfd.promise;\n    if (state.navigation.state === \"submitting\") {\n      return promise;\n    }\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true\n      });\n      return promise;\n    }\n    startNavigation(\n      pendingAction || state.historyAction,\n      state.navigation.location,\n      {\n        overrideNavigation: state.navigation,\n        // Proxy through any rending view transition\n        enableViewTransition: pendingViewTransitionEnabled === true\n      }\n    );\n    return promise;\n  }\n  async function startNavigation(historyAction, location, opts) {\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let loadingNavigation = opts && opts.overrideNavigation;\n    let matches = opts?.initialHydration && state.matches && state.matches.length > 0 && !initialMatchesIsFOW ? (\n      // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n      state.matches\n    ) : matchRoutes(routesToUse, location, basename);\n    let flushSync = (opts && opts.flushSync) === true;\n    if (matches && state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n      completeNavigation(location, { matches }, { flushSync });\n      return;\n    }\n    let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      let { error, notFoundMatches, route } = handleNavigational404(\n        location.pathname\n      );\n      completeNavigation(\n        location,\n        {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error\n          }\n        },\n        { flushSync }\n      );\n      return;\n    }\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(\n      init.history,\n      location,\n      pendingNavigationController.signal,\n      opts && opts.submission\n    );\n    let pendingActionResult;\n    if (opts && opts.pendingError) {\n      pendingActionResult = [\n        findNearestBoundary(matches).route.id,\n        { type: \"error\" /* error */, error: opts.pendingError }\n      ];\n    } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n      let actionResult = await handleAction(\n        request,\n        location,\n        opts.submission,\n        matches,\n        fogOfWar.active,\n        { replace: opts.replace, flushSync }\n      );\n      if (actionResult.shortCircuited) {\n        return;\n      }\n      if (actionResult.pendingActionResult) {\n        let [routeId, result] = actionResult.pendingActionResult;\n        if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n          pendingNavigationController = null;\n          completeNavigation(location, {\n            matches: actionResult.matches,\n            loaderData: {},\n            errors: {\n              [routeId]: result.error\n            }\n          });\n          return;\n        }\n      }\n      matches = actionResult.matches || matches;\n      pendingActionResult = actionResult.pendingActionResult;\n      loadingNavigation = getLoadingNavigation(location, opts.submission);\n      flushSync = false;\n      fogOfWar.active = false;\n      request = createClientSideRequest(\n        init.history,\n        request.url,\n        request.signal\n      );\n    }\n    let {\n      shortCircuited,\n      matches: updatedMatches,\n      loaderData,\n      errors\n    } = await handleLoaders(\n      request,\n      location,\n      matches,\n      fogOfWar.active,\n      loadingNavigation,\n      opts && opts.submission,\n      opts && opts.fetcherSubmission,\n      opts && opts.replace,\n      opts && opts.initialHydration === true,\n      flushSync,\n      pendingActionResult\n    );\n    if (shortCircuited) {\n      return;\n    }\n    pendingNavigationController = null;\n    completeNavigation(location, {\n      matches: updatedMatches || matches,\n      ...getActionDataForCommit(pendingActionResult),\n      loaderData,\n      errors\n    });\n  }\n  async function handleAction(request, location, submission, matches, isFogOfWar, opts = {}) {\n    interruptActiveLoads();\n    let navigation = getSubmittingNavigation(location, submission);\n    updateState({ navigation }, { flushSync: opts.flushSync === true });\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        matches,\n        location.pathname,\n        request.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return { shortCircuited: true };\n      } else if (discoverResult.type === \"error\") {\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          pendingActionResult: [\n            boundaryId,\n            {\n              type: \"error\" /* error */,\n              error: discoverResult.error\n            }\n          ]\n        };\n      } else if (!discoverResult.matches) {\n        let { notFoundMatches, error, route } = handleNavigational404(\n          location.pathname\n        );\n        return {\n          matches: notFoundMatches,\n          pendingActionResult: [\n            route.id,\n            {\n              type: \"error\" /* error */,\n              error\n            }\n          ]\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let result;\n    let actionMatch = getTargetMatch(matches, location);\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      result = {\n        type: \"error\" /* error */,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id\n        })\n      };\n    } else {\n      let results = await callDataStrategy(\n        \"action\",\n        state,\n        request,\n        [actionMatch],\n        matches,\n        null\n      );\n      result = results[actionMatch.route.id];\n      if (request.signal.aborted) {\n        return { shortCircuited: true };\n      }\n    }\n    if (isRedirectResult(result)) {\n      let replace2;\n      if (opts && opts.replace != null) {\n        replace2 = opts.replace;\n      } else {\n        let location2 = normalizeRedirectLocation(\n          result.response.headers.get(\"Location\"),\n          new URL(request.url),\n          basename\n        );\n        replace2 = location2 === state.location.pathname + state.location.search;\n      }\n      await startRedirectNavigation(request, result, true, {\n        submission,\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n      if ((opts && opts.replace) !== true) {\n        pendingAction = \"PUSH\" /* Push */;\n      }\n      return {\n        matches,\n        pendingActionResult: [boundaryMatch.route.id, result]\n      };\n    }\n    return {\n      matches,\n      pendingActionResult: [actionMatch.route.id, result]\n    };\n  }\n  async function handleLoaders(request, location, matches, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace2, initialHydration, flushSync, pendingActionResult) {\n    let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n    let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n    let shouldUpdateNavigationState = !isUninterruptedRevalidation && !initialHydration;\n    if (isFogOfWar) {\n      if (shouldUpdateNavigationState) {\n        let actionData = getUpdatedActionData(pendingActionResult);\n        updateState(\n          {\n            navigation: loadingNavigation,\n            ...actionData !== void 0 ? { actionData } : {}\n          },\n          {\n            flushSync\n          }\n        );\n      }\n      let discoverResult = await discoverRoutes(\n        matches,\n        location.pathname,\n        request.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return { shortCircuited: true };\n      } else if (discoverResult.type === \"error\") {\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          loaderData: {},\n          errors: {\n            [boundaryId]: discoverResult.error\n          }\n        };\n      } else if (!discoverResult.matches) {\n        let { error, notFoundMatches, route } = handleNavigational404(\n          location.pathname\n        );\n        return {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error\n          }\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n      init.history,\n      state,\n      matches,\n      activeSubmission,\n      location,\n      initialHydration === true,\n      isRevalidationRequired,\n      cancelledFetcherLoads,\n      fetchersQueuedForDeletion,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      pendingActionResult\n    );\n    pendingNavigationLoadId = ++incrementingLoadId;\n    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n      let updatedFetchers2 = markFetchRedirectsDone();\n      completeNavigation(\n        location,\n        {\n          matches,\n          loaderData: {},\n          // Commit pending error if we're short circuiting\n          errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? { [pendingActionResult[0]]: pendingActionResult[1].error } : null,\n          ...getActionDataForCommit(pendingActionResult),\n          ...updatedFetchers2 ? { fetchers: new Map(state.fetchers) } : {}\n        },\n        { flushSync }\n      );\n      return { shortCircuited: true };\n    }\n    if (shouldUpdateNavigationState) {\n      let updates = {};\n      if (!isFogOfWar) {\n        updates.navigation = loadingNavigation;\n        let actionData = getUpdatedActionData(pendingActionResult);\n        if (actionData !== void 0) {\n          updates.actionData = actionData;\n        }\n      }\n      if (revalidatingFetchers.length > 0) {\n        updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n      }\n      updateState(updates, { flushSync });\n    }\n    revalidatingFetchers.forEach((rf) => {\n      abortFetcher(rf.key);\n      if (rf.controller) {\n        fetchControllers.set(rf.key, rf.controller);\n      }\n    });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.addEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n    let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n      state,\n      matches,\n      matchesToLoad,\n      revalidatingFetchers,\n      request\n    );\n    if (request.signal.aborted) {\n      return { shortCircuited: true };\n    }\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.removeEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n    revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n    let redirect2 = findRedirect(loaderResults);\n    if (redirect2) {\n      await startRedirectNavigation(request, redirect2.result, true, {\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    redirect2 = findRedirect(fetcherResults);\n    if (redirect2) {\n      fetchRedirectIds.add(redirect2.key);\n      await startRedirectNavigation(request, redirect2.result, true, {\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      loaderResults,\n      pendingActionResult,\n      revalidatingFetchers,\n      fetcherResults\n    );\n    if (initialHydration && state.errors) {\n      errors = { ...state.errors, ...errors };\n    }\n    let updatedFetchers = markFetchRedirectsDone();\n    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n    let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n    return {\n      matches,\n      loaderData,\n      errors,\n      ...shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}\n    };\n  }\n  function getUpdatedActionData(pendingActionResult) {\n    if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n      return {\n        [pendingActionResult[0]]: pendingActionResult[1].data\n      };\n    } else if (state.actionData) {\n      if (Object.keys(state.actionData).length === 0) {\n        return null;\n      } else {\n        return state.actionData;\n      }\n    }\n  }\n  function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n    revalidatingFetchers.forEach((rf) => {\n      let fetcher = state.fetchers.get(rf.key);\n      let revalidatingFetcher = getLoadingFetcher(\n        void 0,\n        fetcher ? fetcher.data : void 0\n      );\n      state.fetchers.set(rf.key, revalidatingFetcher);\n    });\n    return new Map(state.fetchers);\n  }\n  async function fetch2(key, routeId, href2, opts) {\n    abortFetcher(key);\n    let flushSync = (opts && opts.flushSync) === true;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      href2,\n      routeId,\n      opts?.relative\n    );\n    let matches = matchRoutes(routesToUse, normalizedPath, basename);\n    let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      setFetcherError(\n        key,\n        routeId,\n        getInternalRouterError(404, { pathname: normalizedPath }),\n        { flushSync }\n      );\n      return;\n    }\n    let { path, submission, error } = normalizeNavigateOptions(\n      true,\n      normalizedPath,\n      opts\n    );\n    if (error) {\n      setFetcherError(key, routeId, error, { flushSync });\n      return;\n    }\n    let match = getTargetMatch(matches, path);\n    let preventScrollReset = (opts && opts.preventScrollReset) === true;\n    if (submission && isMutationMethod(submission.formMethod)) {\n      await handleFetcherAction(\n        key,\n        routeId,\n        path,\n        match,\n        matches,\n        fogOfWar.active,\n        flushSync,\n        preventScrollReset,\n        submission\n      );\n      return;\n    }\n    fetchLoadMatches.set(key, { routeId, path });\n    await handleFetcherLoader(\n      key,\n      routeId,\n      path,\n      match,\n      matches,\n      fogOfWar.active,\n      flushSync,\n      preventScrollReset,\n      submission\n    );\n  }\n  async function handleFetcherAction(key, routeId, path, match, requestMatches, isFogOfWar, flushSync, preventScrollReset, submission) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n    function detectAndHandle405Error(m) {\n      if (!m.route.action && !m.route.lazy) {\n        let error = getInternalRouterError(405, {\n          method: submission.formMethod,\n          pathname: path,\n          routeId\n        });\n        setFetcherError(key, routeId, error, { flushSync });\n        return true;\n      }\n      return false;\n    }\n    if (!isFogOfWar && detectAndHandle405Error(match)) {\n      return;\n    }\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n      flushSync\n    });\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal,\n      submission\n    );\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        requestMatches,\n        path,\n        fetchRequest.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, { flushSync });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(\n          key,\n          routeId,\n          getInternalRouterError(404, { pathname: path }),\n          { flushSync }\n        );\n        return;\n      } else {\n        requestMatches = discoverResult.matches;\n        match = getTargetMatch(requestMatches, path);\n        if (detectAndHandle405Error(match)) {\n          return;\n        }\n      }\n    }\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let actionResults = await callDataStrategy(\n      \"action\",\n      state,\n      fetchRequest,\n      [match],\n      requestMatches,\n      key\n    );\n    let actionResult = actionResults[match.route.id];\n    if (fetchRequest.signal.aborted) {\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n      return;\n    }\n    if (fetchersQueuedForDeletion.has(key)) {\n      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n        updateFetcherState(key, getDoneFetcher(void 0));\n        return;\n      }\n    } else {\n      if (isRedirectResult(actionResult)) {\n        fetchControllers.delete(key);\n        if (pendingNavigationLoadId > originatingLoadId) {\n          updateFetcherState(key, getDoneFetcher(void 0));\n          return;\n        } else {\n          fetchRedirectIds.add(key);\n          updateFetcherState(key, getLoadingFetcher(submission));\n          return startRedirectNavigation(fetchRequest, actionResult, false, {\n            fetcherSubmission: submission,\n            preventScrollReset\n          });\n        }\n      }\n      if (isErrorResult(actionResult)) {\n        setFetcherError(key, routeId, actionResult.error);\n        return;\n      }\n    }\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(\n      init.history,\n      nextLocation,\n      abortController.signal\n    );\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n    let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n    state.fetchers.set(key, loadFetcher);\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n      init.history,\n      state,\n      matches,\n      submission,\n      nextLocation,\n      false,\n      isRevalidationRequired,\n      cancelledFetcherLoads,\n      fetchersQueuedForDeletion,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      [match.route.id, actionResult]\n    );\n    revalidatingFetchers.filter((rf) => rf.key !== key).forEach((rf) => {\n      let staleKey = rf.key;\n      let existingFetcher2 = state.fetchers.get(staleKey);\n      let revalidatingFetcher = getLoadingFetcher(\n        void 0,\n        existingFetcher2 ? existingFetcher2.data : void 0\n      );\n      state.fetchers.set(staleKey, revalidatingFetcher);\n      abortFetcher(staleKey);\n      if (rf.controller) {\n        fetchControllers.set(staleKey, rf.controller);\n      }\n    });\n    updateState({ fetchers: new Map(state.fetchers) });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n    abortController.signal.addEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n    let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n      state,\n      matches,\n      matchesToLoad,\n      revalidatingFetchers,\n      revalidationRequest\n    );\n    if (abortController.signal.aborted) {\n      return;\n    }\n    abortController.signal.removeEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n    let redirect2 = findRedirect(loaderResults);\n    if (redirect2) {\n      return startRedirectNavigation(\n        revalidationRequest,\n        redirect2.result,\n        false,\n        { preventScrollReset }\n      );\n    }\n    redirect2 = findRedirect(fetcherResults);\n    if (redirect2) {\n      fetchRedirectIds.add(redirect2.key);\n      return startRedirectNavigation(\n        revalidationRequest,\n        redirect2.result,\n        false,\n        { preventScrollReset }\n      );\n    }\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      loaderResults,\n      void 0,\n      revalidatingFetchers,\n      fetcherResults\n    );\n    if (state.fetchers.has(key)) {\n      let doneFetcher = getDoneFetcher(actionResult.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n    abortStaleFetchLoads(loadId);\n    if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: new Map(state.fetchers)\n      });\n    } else {\n      updateState({\n        errors,\n        loaderData: mergeLoaderData(\n          state.loaderData,\n          loaderData,\n          matches,\n          errors\n        ),\n        fetchers: new Map(state.fetchers)\n      });\n      isRevalidationRequired = false;\n    }\n  }\n  async function handleFetcherLoader(key, routeId, path, match, matches, isFogOfWar, flushSync, preventScrollReset, submission) {\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(\n      key,\n      getLoadingFetcher(\n        submission,\n        existingFetcher ? existingFetcher.data : void 0\n      ),\n      { flushSync }\n    );\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal\n    );\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        matches,\n        path,\n        fetchRequest.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, { flushSync });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(\n          key,\n          routeId,\n          getInternalRouterError(404, { pathname: path }),\n          { flushSync }\n        );\n        return;\n      } else {\n        matches = discoverResult.matches;\n        match = getTargetMatch(matches, path);\n      }\n    }\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let results = await callDataStrategy(\n      \"loader\",\n      state,\n      fetchRequest,\n      [match],\n      matches,\n      key\n    );\n    let result = results[match.route.id];\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n    if (fetchRequest.signal.aborted) {\n      return;\n    }\n    if (fetchersQueuedForDeletion.has(key)) {\n      updateFetcherState(key, getDoneFetcher(void 0));\n      return;\n    }\n    if (isRedirectResult(result)) {\n      if (pendingNavigationLoadId > originatingLoadId) {\n        updateFetcherState(key, getDoneFetcher(void 0));\n        return;\n      } else {\n        fetchRedirectIds.add(key);\n        await startRedirectNavigation(fetchRequest, result, false, {\n          preventScrollReset\n        });\n        return;\n      }\n    }\n    if (isErrorResult(result)) {\n      setFetcherError(key, routeId, result.error);\n      return;\n    }\n    updateFetcherState(key, getDoneFetcher(result.data));\n  }\n  async function startRedirectNavigation(request, redirect2, isNavigation, {\n    submission,\n    fetcherSubmission,\n    preventScrollReset,\n    replace: replace2\n  } = {}) {\n    if (redirect2.response.headers.has(\"X-Remix-Revalidate\")) {\n      isRevalidationRequired = true;\n    }\n    let location = redirect2.response.headers.get(\"Location\");\n    invariant(location, \"Expected a Location header on the redirect Response\");\n    location = normalizeRedirectLocation(\n      location,\n      new URL(request.url),\n      basename\n    );\n    let redirectLocation = createLocation(state.location, location, {\n      _isRedirect: true\n    });\n    if (isBrowser2) {\n      let isDocumentReload = false;\n      if (redirect2.response.headers.has(\"X-Remix-Reload-Document\")) {\n        isDocumentReload = true;\n      } else if (ABSOLUTE_URL_REGEX.test(location)) {\n        const url = init.history.createURL(location);\n        isDocumentReload = // Hard reload if it's an absolute URL to a new origin\n        url.origin !== routerWindow.location.origin || // Hard reload if it's an absolute URL that does not match our basename\n        stripBasename(url.pathname, basename) == null;\n      }\n      if (isDocumentReload) {\n        if (replace2) {\n          routerWindow.location.replace(location);\n        } else {\n          routerWindow.location.assign(location);\n        }\n        return;\n      }\n    }\n    pendingNavigationController = null;\n    let redirectNavigationType = replace2 === true || redirect2.response.headers.has(\"X-Remix-Replace\") ? \"REPLACE\" /* Replace */ : \"PUSH\" /* Push */;\n    let { formMethod, formAction, formEncType } = state.navigation;\n    if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n      submission = getSubmissionFromNavigation(state.navigation);\n    }\n    let activeSubmission = submission || fetcherSubmission;\n    if (redirectPreserveMethodStatusCodes.has(redirect2.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n      await startNavigation(redirectNavigationType, redirectLocation, {\n        submission: {\n          ...activeSubmission,\n          formAction: location\n        },\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n      });\n    } else {\n      let overrideNavigation = getLoadingNavigation(\n        redirectLocation,\n        submission\n      );\n      await startNavigation(redirectNavigationType, redirectLocation, {\n        overrideNavigation,\n        // Send fetcher submissions through for shouldRevalidate\n        fetcherSubmission,\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n      });\n    }\n  }\n  async function callDataStrategy(type, state2, request, matchesToLoad, matches, fetcherKey) {\n    let results;\n    let dataResults = {};\n    try {\n      results = await callDataStrategyImpl(\n        dataStrategyImpl,\n        type,\n        state2,\n        request,\n        matchesToLoad,\n        matches,\n        fetcherKey,\n        manifest,\n        mapRouteProperties2\n      );\n    } catch (e) {\n      matchesToLoad.forEach((m) => {\n        dataResults[m.route.id] = {\n          type: \"error\" /* error */,\n          error: e\n        };\n      });\n      return dataResults;\n    }\n    for (let [routeId, result] of Object.entries(results)) {\n      if (isRedirectDataStrategyResult(result)) {\n        let response = result.result;\n        dataResults[routeId] = {\n          type: \"redirect\" /* redirect */,\n          response: normalizeRelativeRoutingRedirectResponse(\n            response,\n            request,\n            routeId,\n            matches,\n            basename\n          )\n        };\n      } else {\n        dataResults[routeId] = await convertDataStrategyResultToDataResult(\n          result\n        );\n      }\n    }\n    return dataResults;\n  }\n  async function callLoadersAndMaybeResolveData(state2, matches, matchesToLoad, fetchersToLoad, request) {\n    let loaderResultsPromise = callDataStrategy(\n      \"loader\",\n      state2,\n      request,\n      matchesToLoad,\n      matches,\n      null\n    );\n    let fetcherResultsPromise = Promise.all(\n      fetchersToLoad.map(async (f) => {\n        if (f.matches && f.match && f.controller) {\n          let results = await callDataStrategy(\n            \"loader\",\n            state2,\n            createClientSideRequest(init.history, f.path, f.controller.signal),\n            [f.match],\n            f.matches,\n            f.key\n          );\n          let result = results[f.match.route.id];\n          return { [f.key]: result };\n        } else {\n          return Promise.resolve({\n            [f.key]: {\n              type: \"error\" /* error */,\n              error: getInternalRouterError(404, {\n                pathname: f.path\n              })\n            }\n          });\n        }\n      })\n    );\n    let loaderResults = await loaderResultsPromise;\n    let fetcherResults = (await fetcherResultsPromise).reduce(\n      (acc, r) => Object.assign(acc, r),\n      {}\n    );\n    return {\n      loaderResults,\n      fetcherResults\n    };\n  }\n  function interruptActiveLoads() {\n    isRevalidationRequired = true;\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.add(key);\n      }\n      abortFetcher(key);\n    });\n  }\n  function updateFetcherState(key, fetcher, opts = {}) {\n    state.fetchers.set(key, fetcher);\n    updateState(\n      { fetchers: new Map(state.fetchers) },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n  function setFetcherError(key, routeId, error, opts = {}) {\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    deleteFetcher(key);\n    updateState(\n      {\n        errors: {\n          [boundaryMatch.route.id]: error\n        },\n        fetchers: new Map(state.fetchers)\n      },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n  function getFetcher(key) {\n    activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n    if (fetchersQueuedForDeletion.has(key)) {\n      fetchersQueuedForDeletion.delete(key);\n    }\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  }\n  function deleteFetcher(key) {\n    let fetcher = state.fetchers.get(key);\n    if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n      abortFetcher(key);\n    }\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    fetchersQueuedForDeletion.delete(key);\n    cancelledFetcherLoads.delete(key);\n    state.fetchers.delete(key);\n  }\n  function queueFetcherForDeletion(key) {\n    let count = (activeFetchers.get(key) || 0) - 1;\n    if (count <= 0) {\n      activeFetchers.delete(key);\n      fetchersQueuedForDeletion.add(key);\n    } else {\n      activeFetchers.set(key, count);\n    }\n    updateState({ fetchers: new Map(state.fetchers) });\n  }\n  function abortFetcher(key) {\n    let controller = fetchControllers.get(key);\n    if (controller) {\n      controller.abort();\n      fetchControllers.delete(key);\n    }\n  }\n  function markFetchersDone(keys) {\n    for (let key of keys) {\n      let fetcher = getFetcher(key);\n      let doneFetcher = getDoneFetcher(fetcher.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n  function markFetchRedirectsDone() {\n    let doneKeys = [];\n    let updatedFetchers = false;\n    for (let key of fetchRedirectIds) {\n      let fetcher = state.fetchers.get(key);\n      invariant(fetcher, `Expected fetcher: ${key}`);\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n        updatedFetchers = true;\n      }\n    }\n    markFetchersDone(doneKeys);\n    return updatedFetchers;\n  }\n  function abortStaleFetchLoads(landedId) {\n    let yeetedKeys = [];\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = state.fetchers.get(key);\n        invariant(fetcher, `Expected fetcher: ${key}`);\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n    markFetchersDone(yeetedKeys);\n    return yeetedKeys.length > 0;\n  }\n  function getBlocker(key, fn) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    if (blockerFunctions.get(key) !== fn) {\n      blockerFunctions.set(key, fn);\n    }\n    return blocker;\n  }\n  function deleteBlocker(key) {\n    state.blockers.delete(key);\n    blockerFunctions.delete(key);\n  }\n  function updateBlocker(key, newBlocker) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    invariant(\n      blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\",\n      `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n    );\n    let blockers = new Map(state.blockers);\n    blockers.set(key, newBlocker);\n    updateState({ blockers });\n  }\n  function shouldBlockNavigation({\n    currentLocation,\n    nextLocation,\n    historyAction\n  }) {\n    if (blockerFunctions.size === 0) {\n      return;\n    }\n    if (blockerFunctions.size > 1) {\n      warning(false, \"A router only supports one blocker at a time\");\n    }\n    let entries = Array.from(blockerFunctions.entries());\n    let [blockerKey, blockerFunction] = entries[entries.length - 1];\n    let blocker = state.blockers.get(blockerKey);\n    if (blocker && blocker.state === \"proceeding\") {\n      return;\n    }\n    if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n      return blockerKey;\n    }\n  }\n  function handleNavigational404(pathname) {\n    let error = getInternalRouterError(404, { pathname });\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let { matches, route } = getShortCircuitMatches(routesToUse);\n    return { notFoundMatches: matches, route, error };\n  }\n  function enableScrollRestoration(positions, getPosition, getKey) {\n    savedScrollPositions2 = positions;\n    getScrollPosition = getPosition;\n    getScrollRestorationKey2 = getKey || null;\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n      if (y != null) {\n        updateState({ restoreScrollPosition: y });\n      }\n    }\n    return () => {\n      savedScrollPositions2 = null;\n      getScrollPosition = null;\n      getScrollRestorationKey2 = null;\n    };\n  }\n  function getScrollKey(location, matches) {\n    if (getScrollRestorationKey2) {\n      let key = getScrollRestorationKey2(\n        location,\n        matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n      );\n      return key || location.key;\n    }\n    return location.key;\n  }\n  function saveScrollPosition(location, matches) {\n    if (savedScrollPositions2 && getScrollPosition) {\n      let key = getScrollKey(location, matches);\n      savedScrollPositions2[key] = getScrollPosition();\n    }\n  }\n  function getSavedScrollPosition(location, matches) {\n    if (savedScrollPositions2) {\n      let key = getScrollKey(location, matches);\n      let y = savedScrollPositions2[key];\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n    return null;\n  }\n  function checkFogOfWar(matches, routesToUse, pathname) {\n    if (patchRoutesOnNavigationImpl) {\n      if (!matches) {\n        let fogMatches = matchRoutesImpl(\n          routesToUse,\n          pathname,\n          basename,\n          true\n        );\n        return { active: true, matches: fogMatches || [] };\n      } else {\n        if (Object.keys(matches[0].params).length > 0) {\n          let partialMatches = matchRoutesImpl(\n            routesToUse,\n            pathname,\n            basename,\n            true\n          );\n          return { active: true, matches: partialMatches };\n        }\n      }\n    }\n    return { active: false, matches: null };\n  }\n  async function discoverRoutes(matches, pathname, signal) {\n    if (!patchRoutesOnNavigationImpl) {\n      return { type: \"success\", matches };\n    }\n    let partialMatches = matches;\n    while (true) {\n      let isNonHMR = inFlightDataRoutes == null;\n      let routesToUse = inFlightDataRoutes || dataRoutes;\n      let localManifest = manifest;\n      try {\n        await patchRoutesOnNavigationImpl({\n          signal,\n          path: pathname,\n          matches: partialMatches,\n          patch: (routeId, children) => {\n            if (signal.aborted) return;\n            patchRoutesImpl(\n              routeId,\n              children,\n              routesToUse,\n              localManifest,\n              mapRouteProperties2\n            );\n          }\n        });\n      } catch (e) {\n        return { type: \"error\", error: e, partialMatches };\n      } finally {\n        if (isNonHMR && !signal.aborted) {\n          dataRoutes = [...dataRoutes];\n        }\n      }\n      if (signal.aborted) {\n        return { type: \"aborted\" };\n      }\n      let newMatches = matchRoutes(routesToUse, pathname, basename);\n      if (newMatches) {\n        return { type: \"success\", matches: newMatches };\n      }\n      let newPartialMatches = matchRoutesImpl(\n        routesToUse,\n        pathname,\n        basename,\n        true\n      );\n      if (!newPartialMatches || partialMatches.length === newPartialMatches.length && partialMatches.every(\n        (m, i) => m.route.id === newPartialMatches[i].route.id\n      )) {\n        return { type: \"success\", matches: null };\n      }\n      partialMatches = newPartialMatches;\n    }\n  }\n  function _internalSetRoutes(newRoutes) {\n    manifest = {};\n    inFlightDataRoutes = convertRoutesToDataRoutes(\n      newRoutes,\n      mapRouteProperties2,\n      void 0,\n      manifest\n    );\n  }\n  function patchRoutes(routeId, children) {\n    let isNonHMR = inFlightDataRoutes == null;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    patchRoutesImpl(\n      routeId,\n      children,\n      routesToUse,\n      manifest,\n      mapRouteProperties2\n    );\n    if (isNonHMR) {\n      dataRoutes = [...dataRoutes];\n      updateState({});\n    }\n  }\n  router = {\n    get basename() {\n      return basename;\n    },\n    get future() {\n      return future;\n    },\n    get state() {\n      return state;\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    get window() {\n      return routerWindow;\n    },\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch: fetch2,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: (to) => init.history.createHref(to),\n    encodeLocation: (to) => init.history.encodeLocation(to),\n    getFetcher,\n    deleteFetcher: queueFetcherForDeletion,\n    dispose,\n    getBlocker,\n    deleteBlocker,\n    patchRoutes,\n    _internalFetchControllers: fetchControllers,\n    // TODO: Remove setRoutes, it's temporary to avoid dealing with\n    // updating the tree while validating the update algorithm.\n    _internalSetRoutes\n  };\n  return router;\n}\nfunction createStaticHandler(routes, opts) {\n  invariant(\n    routes.length > 0,\n    \"You must provide a non-empty routes array to createStaticHandler\"\n  );\n  let manifest = {};\n  let basename = (opts ? opts.basename : null) || \"/\";\n  let mapRouteProperties2 = opts?.mapRouteProperties || defaultMapRouteProperties;\n  let dataRoutes = convertRoutesToDataRoutes(\n    routes,\n    mapRouteProperties2,\n    void 0,\n    manifest\n  );\n  async function query(request, {\n    requestContext,\n    skipLoaderErrorBubbling,\n    dataStrategy\n  } = {}) {\n    let url = new URL(request.url);\n    let method = request.method;\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n    if (!isValidMethod(method) && method !== \"HEAD\") {\n      let error = getInternalRouterError(405, { method });\n      let { matches: methodNotAllowedMatches, route } = getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: methodNotAllowedMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n    } else if (!matches) {\n      let error = getInternalRouterError(404, { pathname: location.pathname });\n      let { matches: notFoundMatches, route } = getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: notFoundMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n    }\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      dataStrategy || null,\n      skipLoaderErrorBubbling === true,\n      null\n    );\n    if (isResponse(result)) {\n      return result;\n    }\n    return { location, basename, ...result };\n  }\n  async function queryRoute(request, {\n    routeId,\n    requestContext,\n    dataStrategy\n  } = {}) {\n    let url = new URL(request.url);\n    let method = request.method;\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n    if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n      throw getInternalRouterError(405, { method });\n    } else if (!matches) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n    let match = routeId ? matches.find((m) => m.route.id === routeId) : getTargetMatch(matches, location);\n    if (routeId && !match) {\n      throw getInternalRouterError(403, {\n        pathname: location.pathname,\n        routeId\n      });\n    } else if (!match) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      dataStrategy || null,\n      false,\n      match\n    );\n    if (isResponse(result)) {\n      return result;\n    }\n    let error = result.errors ? Object.values(result.errors)[0] : void 0;\n    if (error !== void 0) {\n      throw error;\n    }\n    if (result.actionData) {\n      return Object.values(result.actionData)[0];\n    }\n    if (result.loaderData) {\n      return Object.values(result.loaderData)[0];\n    }\n    return void 0;\n  }\n  async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch) {\n    invariant(\n      request.signal,\n      \"query()/queryRoute() requests must contain an AbortController signal\"\n    );\n    try {\n      if (isMutationMethod(request.method)) {\n        let result2 = await submit(\n          request,\n          matches,\n          routeMatch || getTargetMatch(matches, location),\n          requestContext,\n          dataStrategy,\n          skipLoaderErrorBubbling,\n          routeMatch != null\n        );\n        return result2;\n      }\n      let result = await loadRouteData(\n        request,\n        matches,\n        requestContext,\n        dataStrategy,\n        skipLoaderErrorBubbling,\n        routeMatch\n      );\n      return isResponse(result) ? result : {\n        ...result,\n        actionData: null,\n        actionHeaders: {}\n      };\n    } catch (e) {\n      if (isDataStrategyResult(e) && isResponse(e.result)) {\n        if (e.type === \"error\" /* error */) {\n          throw e.result;\n        }\n        return e.result;\n      }\n      if (isRedirectResponse(e)) {\n        return e;\n      }\n      throw e;\n    }\n  }\n  async function submit(request, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {\n    let result;\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: actionMatch.route.id\n      });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: \"error\" /* error */,\n        error\n      };\n    } else {\n      let results = await callDataStrategy(\n        \"action\",\n        request,\n        [actionMatch],\n        matches,\n        isRouteRequest,\n        requestContext,\n        dataStrategy\n      );\n      result = results[actionMatch.route.id];\n      if (request.signal.aborted) {\n        throwStaticHandlerAbortedError(request, isRouteRequest);\n      }\n    }\n    if (isRedirectResult(result)) {\n      throw new Response(null, {\n        status: result.response.status,\n        headers: {\n          Location: result.response.headers.get(\"Location\")\n        }\n      });\n    }\n    if (isRouteRequest) {\n      if (isErrorResult(result)) {\n        throw result.error;\n      }\n      return {\n        matches: [actionMatch],\n        loaderData: {},\n        actionData: { [actionMatch.route.id]: result.data },\n        errors: null,\n        // Note: statusCode + headers are unused here since queryRoute will\n        // return the raw Response or value\n        statusCode: 200,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n    }\n    let loaderRequest = new Request(request.url, {\n      headers: request.headers,\n      redirect: request.redirect,\n      signal: request.signal\n    });\n    if (isErrorResult(result)) {\n      let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n      let context2 = await loadRouteData(\n        loaderRequest,\n        matches,\n        requestContext,\n        dataStrategy,\n        skipLoaderErrorBubbling,\n        null,\n        [boundaryMatch.route.id, result]\n      );\n      return {\n        ...context2,\n        statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n        actionData: null,\n        actionHeaders: {\n          ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n        }\n      };\n    }\n    let context = await loadRouteData(\n      loaderRequest,\n      matches,\n      requestContext,\n      dataStrategy,\n      skipLoaderErrorBubbling,\n      null\n    );\n    return {\n      ...context,\n      actionData: {\n        [actionMatch.route.id]: result.data\n      },\n      // action status codes take precedence over loader status codes\n      ...result.statusCode ? { statusCode: result.statusCode } : {},\n      actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {}\n    };\n  }\n  async function loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {\n    let isRouteRequest = routeMatch != null;\n    if (isRouteRequest && !routeMatch?.route.loader && !routeMatch?.route.lazy) {\n      throw getInternalRouterError(400, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: routeMatch?.route.id\n      });\n    }\n    let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;\n    let matchesToLoad = requestMatches.filter(\n      (m) => m.route.loader || m.route.lazy\n    );\n    if (matchesToLoad.length === 0) {\n      return {\n        matches,\n        // Add a null for all matched routes for proper revalidation on the client\n        loaderData: matches.reduce(\n          (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n          {}\n        ),\n        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n          [pendingActionResult[0]]: pendingActionResult[1].error\n        } : null,\n        statusCode: 200,\n        loaderHeaders: {}\n      };\n    }\n    let results = await callDataStrategy(\n      \"loader\",\n      request,\n      matchesToLoad,\n      matches,\n      isRouteRequest,\n      requestContext,\n      dataStrategy\n    );\n    if (request.signal.aborted) {\n      throwStaticHandlerAbortedError(request, isRouteRequest);\n    }\n    let context = processRouteLoaderData(\n      matches,\n      results,\n      pendingActionResult,\n      true,\n      skipLoaderErrorBubbling\n    );\n    let executedLoaders = new Set(\n      matchesToLoad.map((match) => match.route.id)\n    );\n    matches.forEach((match) => {\n      if (!executedLoaders.has(match.route.id)) {\n        context.loaderData[match.route.id] = null;\n      }\n    });\n    return {\n      ...context,\n      matches\n    };\n  }\n  async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy) {\n    let results = await callDataStrategyImpl(\n      dataStrategy || defaultDataStrategy,\n      type,\n      null,\n      request,\n      matchesToLoad,\n      matches,\n      null,\n      manifest,\n      mapRouteProperties2,\n      requestContext\n    );\n    let dataResults = {};\n    await Promise.all(\n      matches.map(async (match) => {\n        if (!(match.route.id in results)) {\n          return;\n        }\n        let result = results[match.route.id];\n        if (isRedirectDataStrategyResult(result)) {\n          let response = result.result;\n          throw normalizeRelativeRoutingRedirectResponse(\n            response,\n            request,\n            match.route.id,\n            matches,\n            basename\n          );\n        }\n        if (isResponse(result.result) && isRouteRequest) {\n          throw result;\n        }\n        dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);\n      })\n    );\n    return dataResults;\n  }\n  return {\n    dataRoutes,\n    query,\n    queryRoute\n  };\n}\nfunction getStaticContextFromError(routes, context, error) {\n  let newContext = {\n    ...context,\n    statusCode: isRouteErrorResponse(error) ? error.status : 500,\n    errors: {\n      [context._deepestRenderedBoundaryId || routes[0].id]: error\n    }\n  };\n  return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest) {\n  if (request.signal.reason !== void 0) {\n    throw request.signal.reason;\n  }\n  let method = isRouteRequest ? \"queryRoute\" : \"query\";\n  throw new Error(\n    `${method}() call aborted without an \\`AbortSignal.reason\\`: ${request.method} ${request.url}`\n  );\n}\nfunction isSubmissionNavigation(opts) {\n  return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== void 0);\n}\nfunction normalizeTo(location, matches, basename, to, fromRouteId, relative) {\n  let contextualMatches;\n  let activeRouteMatch;\n  if (fromRouteId) {\n    contextualMatches = [];\n    for (let match of matches) {\n      contextualMatches.push(match);\n      if (match.route.id === fromRouteId) {\n        activeRouteMatch = match;\n        break;\n      }\n    }\n  } else {\n    contextualMatches = matches;\n    activeRouteMatch = matches[matches.length - 1];\n  }\n  let path = resolveTo(\n    to ? to : \".\",\n    getResolveToMatches(contextualMatches),\n    stripBasename(location.pathname, basename) || location.pathname,\n    relative === \"path\"\n  );\n  if (to == null) {\n    path.search = location.search;\n    path.hash = location.hash;\n  }\n  if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n    let nakedIndex = hasNakedIndexQuery(path.search);\n    if (activeRouteMatch.route.index && !nakedIndex) {\n      path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n    } else if (!activeRouteMatch.route.index && nakedIndex) {\n      let params = new URLSearchParams(path.search);\n      let indexValues = params.getAll(\"index\");\n      params.delete(\"index\");\n      indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? `?${qs}` : \"\";\n    }\n  }\n  if (basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n  return createPath(path);\n}\nfunction normalizeNavigateOptions(isFetcher, path, opts) {\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return { path };\n  }\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, { method: opts.formMethod })\n    };\n  }\n  let getInvalidBodyError = () => ({\n    path,\n    error: getInternalRouterError(400, { type: \"invalid-body\" })\n  });\n  let rawFormMethod = opts.formMethod || \"get\";\n  let formMethod = rawFormMethod.toUpperCase();\n  let formAction = stripHashFromPath(path);\n  if (opts.body !== void 0) {\n    if (opts.formEncType === \"text/plain\") {\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ? (\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n        Array.from(opts.body.entries()).reduce(\n          (acc, [name, value]) => `${acc}${name}=${value}\n`,\n          \"\"\n        )\n      ) : String(opts.body);\n      return {\n        path,\n        submission: {\n          formMethod,\n          formAction,\n          formEncType: opts.formEncType,\n          formData: void 0,\n          json: void 0,\n          text\n        }\n      };\n    } else if (opts.formEncType === \"application/json\") {\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      try {\n        let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n        return {\n          path,\n          submission: {\n            formMethod,\n            formAction,\n            formEncType: opts.formEncType,\n            formData: void 0,\n            json,\n            text: void 0\n          }\n        };\n      } catch (e) {\n        return getInvalidBodyError();\n      }\n    }\n  }\n  invariant(\n    typeof FormData === \"function\",\n    \"FormData is not available in this environment\"\n  );\n  let searchParams;\n  let formData;\n  if (opts.formData) {\n    searchParams = convertFormDataToSearchParams(opts.formData);\n    formData = opts.formData;\n  } else if (opts.body instanceof FormData) {\n    searchParams = convertFormDataToSearchParams(opts.body);\n    formData = opts.body;\n  } else if (opts.body instanceof URLSearchParams) {\n    searchParams = opts.body;\n    formData = convertSearchParamsToFormData(searchParams);\n  } else if (opts.body == null) {\n    searchParams = new URLSearchParams();\n    formData = new FormData();\n  } else {\n    try {\n      searchParams = new URLSearchParams(opts.body);\n      formData = convertSearchParamsToFormData(searchParams);\n    } catch (e) {\n      return getInvalidBodyError();\n    }\n  }\n  let submission = {\n    formMethod,\n    formAction,\n    formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n    formData,\n    json: void 0,\n    text: void 0\n  };\n  if (isMutationMethod(submission.formMethod)) {\n    return { path, submission };\n  }\n  let parsedPath = parsePath(path);\n  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n    searchParams.append(\"index\", \"\");\n  }\n  parsedPath.search = `?${searchParams}`;\n  return { path: createPath(parsedPath), submission };\n}\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId, includeBoundary = false) {\n  let index = matches.findIndex((m) => m.route.id === boundaryId);\n  if (index >= 0) {\n    return matches.slice(0, includeBoundary ? index + 1 : index);\n  }\n  return matches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, initialHydration, isRevalidationRequired, cancelledFetcherLoads, fetchersQueuedForDeletion, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n  let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : void 0;\n  let currentUrl = history.createURL(state.location);\n  let nextUrl = history.createURL(location);\n  let boundaryMatches = matches;\n  if (initialHydration && state.errors) {\n    boundaryMatches = getLoaderMatchesUntilBoundary(\n      matches,\n      Object.keys(state.errors)[0],\n      true\n    );\n  } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n    boundaryMatches = getLoaderMatchesUntilBoundary(\n      matches,\n      pendingActionResult[0]\n    );\n  }\n  let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : void 0;\n  let shouldSkipRevalidation = actionStatus && actionStatus >= 400;\n  let navigationMatches = boundaryMatches.filter((match, index) => {\n    let { route } = match;\n    if (route.lazy) {\n      return true;\n    }\n    if (route.loader == null) {\n      return false;\n    }\n    if (initialHydration) {\n      return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n    }\n    if (isNewLoader(state.loaderData, state.matches[index], match)) {\n      return true;\n    }\n    let currentRouteMatch = state.matches[index];\n    let nextRouteMatch = match;\n    return shouldRevalidateLoader(match, {\n      currentUrl,\n      currentParams: currentRouteMatch.params,\n      nextUrl,\n      nextParams: nextRouteMatch.params,\n      ...submission,\n      actionResult,\n      actionStatus,\n      defaultShouldRevalidate: shouldSkipRevalidation ? false : (\n        // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n        isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search || // Search params affect all loaders\n        currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n      )\n    });\n  });\n  let revalidatingFetchers = [];\n  fetchLoadMatches.forEach((f, key) => {\n    if (initialHydration || !matches.some((m) => m.route.id === f.routeId) || fetchersQueuedForDeletion.has(key)) {\n      return;\n    }\n    let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n    if (!fetcherMatches) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: null,\n        match: null,\n        controller: null\n      });\n      return;\n    }\n    let fetcher = state.fetchers.get(key);\n    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n    let shouldRevalidate = false;\n    if (fetchRedirectIds.has(key)) {\n      shouldRevalidate = false;\n    } else if (cancelledFetcherLoads.has(key)) {\n      cancelledFetcherLoads.delete(key);\n      shouldRevalidate = true;\n    } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === void 0) {\n      shouldRevalidate = isRevalidationRequired;\n    } else {\n      shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n        currentUrl,\n        currentParams: state.matches[state.matches.length - 1].params,\n        nextUrl,\n        nextParams: matches[matches.length - 1].params,\n        ...submission,\n        actionResult,\n        actionStatus,\n        defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n      });\n    }\n    if (shouldRevalidate) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: fetcherMatches,\n        match: fetcherMatch,\n        controller: new AbortController()\n      });\n    }\n  });\n  return [navigationMatches, revalidatingFetchers];\n}\nfunction shouldLoadRouteOnHydration(route, loaderData, errors) {\n  if (route.lazy) {\n    return true;\n  }\n  if (!route.loader) {\n    return false;\n  }\n  let hasData = loaderData != null && loaderData[route.id] !== void 0;\n  let hasError = errors != null && errors[route.id] !== void 0;\n  if (!hasData && hasError) {\n    return false;\n  }\n  if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n    return true;\n  }\n  return !hasData && !hasError;\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n  let isNew = (\n    // [a] -> [a, b]\n    !currentMatch || // [a, b] -> [a, c]\n    match.route.id !== currentMatch.route.id\n  );\n  let isMissingData = !currentLoaderData.hasOwnProperty(match.route.id);\n  return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n  let currentPath = currentMatch.route.path;\n  return (\n    // param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname || // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n  );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n  if (loaderMatch.route.shouldRevalidate) {\n    let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n  return arg.defaultShouldRevalidate;\n}\nfunction patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties2) {\n  let childrenToPatch;\n  if (routeId) {\n    let route = manifest[routeId];\n    invariant(\n      route,\n      `No route found to patch children into: routeId = ${routeId}`\n    );\n    if (!route.children) {\n      route.children = [];\n    }\n    childrenToPatch = route.children;\n  } else {\n    childrenToPatch = routesToUse;\n  }\n  let uniqueChildren = children.filter(\n    (newRoute) => !childrenToPatch.some(\n      (existingRoute) => isSameRoute(newRoute, existingRoute)\n    )\n  );\n  let newRoutes = convertRoutesToDataRoutes(\n    uniqueChildren,\n    mapRouteProperties2,\n    [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n    manifest\n  );\n  childrenToPatch.push(...newRoutes);\n}\nfunction isSameRoute(newRoute, existingRoute) {\n  if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n    return true;\n  }\n  if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n    return false;\n  }\n  if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n    return true;\n  }\n  return newRoute.children.every(\n    (aChild, i) => existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n  );\n}\nasync function loadLazyRouteModule(route, mapRouteProperties2, manifest) {\n  if (!route.lazy) {\n    return;\n  }\n  let lazyRoute = await route.lazy();\n  if (!route.lazy) {\n    return;\n  }\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n  let routeUpdates = {};\n  for (let lazyRouteProperty in lazyRoute) {\n    let staticRouteValue = routeToUpdate[lazyRouteProperty];\n    let isPropertyStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based\n    // on the route updates\n    lazyRouteProperty !== \"hasErrorBoundary\";\n    warning(\n      !isPropertyStaticallyDefined,\n      `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" defined but its lazy function is also returning a value for this property. The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n    );\n    if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n      routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n    }\n  }\n  Object.assign(routeToUpdate, routeUpdates);\n  Object.assign(routeToUpdate, {\n    // To keep things framework agnostic, we use the provided `mapRouteProperties`\n    // function to set the framework-aware properties (`element`/`hasErrorBoundary`)\n    // since the logic will differ between frameworks.\n    ...mapRouteProperties2(routeToUpdate),\n    lazy: void 0\n  });\n}\nasync function defaultDataStrategy({\n  matches\n}) {\n  let matchesToLoad = matches.filter((m) => m.shouldLoad);\n  let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n  return results.reduce(\n    (acc, result, i) => Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n    {}\n  );\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties2, requestContext) {\n  let loadRouteDefinitionsPromises = matches.map(\n    (m) => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties2, manifest) : void 0\n  );\n  let dsMatches = matches.map((match, i) => {\n    let loadRoutePromise = loadRouteDefinitionsPromises[i];\n    let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n    let resolve = async (handlerOverride) => {\n      if (handlerOverride && request.method === \"GET\" && (match.route.lazy || match.route.loader)) {\n        shouldLoad = true;\n      }\n      return shouldLoad ? callLoaderOrAction(\n        type,\n        request,\n        match,\n        loadRoutePromise,\n        handlerOverride,\n        requestContext\n      ) : Promise.resolve({ type: \"data\" /* data */, result: void 0 });\n    };\n    return {\n      ...match,\n      shouldLoad,\n      resolve\n    };\n  });\n  let results = await dataStrategyImpl({\n    matches: dsMatches,\n    request,\n    params: matches[0].params,\n    fetcherKey,\n    context: requestContext\n  });\n  try {\n    await Promise.all(loadRouteDefinitionsPromises);\n  } catch (e) {\n  }\n  return results;\n}\nasync function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, staticContext) {\n  let result;\n  let onReject;\n  let runHandler = (handler) => {\n    let reject;\n    let abortPromise = new Promise((_, r) => reject = r);\n    onReject = () => reject();\n    request.signal.addEventListener(\"abort\", onReject);\n    let actualHandler = (ctx) => {\n      if (typeof handler !== \"function\") {\n        return Promise.reject(\n          new Error(\n            `You cannot call the handler for a route which defines a boolean \"${type}\" [routeId: ${match.route.id}]`\n          )\n        );\n      }\n      return handler(\n        {\n          request,\n          params: match.params,\n          context: staticContext\n        },\n        ...ctx !== void 0 ? [ctx] : []\n      );\n    };\n    let handlerPromise = (async () => {\n      try {\n        let val = await (handlerOverride ? handlerOverride((ctx) => actualHandler(ctx)) : actualHandler());\n        return { type: \"data\", result: val };\n      } catch (e) {\n        return { type: \"error\", result: e };\n      }\n    })();\n    return Promise.race([handlerPromise, abortPromise]);\n  };\n  try {\n    let handler = match.route[type];\n    if (loadRoutePromise) {\n      if (handler) {\n        let handlerError;\n        let [value] = await Promise.all([\n          // If the handler throws, don't let it immediately bubble out,\n          // since we need to let the lazy() execution finish so we know if this\n          // route has a boundary that can handle the error\n          runHandler(handler).catch((e) => {\n            handlerError = e;\n          }),\n          loadRoutePromise\n        ]);\n        if (handlerError !== void 0) {\n          throw handlerError;\n        }\n        result = value;\n      } else {\n        await loadRoutePromise;\n        handler = match.route[type];\n        if (handler) {\n          result = await runHandler(handler);\n        } else if (type === \"action\") {\n          let url = new URL(request.url);\n          let pathname = url.pathname + url.search;\n          throw getInternalRouterError(405, {\n            method: request.method,\n            pathname,\n            routeId: match.route.id\n          });\n        } else {\n          return { type: \"data\" /* data */, result: void 0 };\n        }\n      }\n    } else if (!handler) {\n      let url = new URL(request.url);\n      let pathname = url.pathname + url.search;\n      throw getInternalRouterError(404, {\n        pathname\n      });\n    } else {\n      result = await runHandler(handler);\n    }\n  } catch (e) {\n    return { type: \"error\" /* error */, result: e };\n  } finally {\n    if (onReject) {\n      request.signal.removeEventListener(\"abort\", onReject);\n    }\n  }\n  return result;\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n  let { result, type } = dataStrategyResult;\n  if (isResponse(result)) {\n    let data2;\n    try {\n      let contentType = result.headers.get(\"Content-Type\");\n      if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n        if (result.body == null) {\n          data2 = null;\n        } else {\n          data2 = await result.json();\n        }\n      } else {\n        data2 = await result.text();\n      }\n    } catch (e) {\n      return { type: \"error\" /* error */, error: e };\n    }\n    if (type === \"error\" /* error */) {\n      return {\n        type: \"error\" /* error */,\n        error: new ErrorResponseImpl(result.status, result.statusText, data2),\n        statusCode: result.status,\n        headers: result.headers\n      };\n    }\n    return {\n      type: \"data\" /* data */,\n      data: data2,\n      statusCode: result.status,\n      headers: result.headers\n    };\n  }\n  if (type === \"error\" /* error */) {\n    if (isDataWithResponseInit(result)) {\n      if (result.data instanceof Error) {\n        return {\n          type: \"error\" /* error */,\n          error: result.data,\n          statusCode: result.init?.status,\n          headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n        };\n      }\n      return {\n        type: \"error\" /* error */,\n        error: new ErrorResponseImpl(\n          result.init?.status || 500,\n          void 0,\n          result.data\n        ),\n        statusCode: isRouteErrorResponse(result) ? result.status : void 0,\n        headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n      };\n    }\n    return {\n      type: \"error\" /* error */,\n      error: result,\n      statusCode: isRouteErrorResponse(result) ? result.status : void 0\n    };\n  }\n  if (isDataWithResponseInit(result)) {\n    return {\n      type: \"data\" /* data */,\n      data: result.data,\n      statusCode: result.init?.status,\n      headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n    };\n  }\n  return { type: \"data\" /* data */, data: result };\n}\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename) {\n  let location = response.headers.get(\"Location\");\n  invariant(\n    location,\n    \"Redirects returned/thrown from loaders/actions must have a Location header\"\n  );\n  if (!ABSOLUTE_URL_REGEX.test(location)) {\n    let trimmedMatches = matches.slice(\n      0,\n      matches.findIndex((m) => m.route.id === routeId) + 1\n    );\n    location = normalizeTo(\n      new URL(request.url),\n      trimmedMatches,\n      basename,\n      location\n    );\n    response.headers.set(\"Location\", location);\n  }\n  return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename) {\n  if (ABSOLUTE_URL_REGEX.test(location)) {\n    let normalizedLocation = location;\n    let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n    let isSameBasename = stripBasename(url.pathname, basename) != null;\n    if (url.origin === currentUrl.origin && isSameBasename) {\n      return url.pathname + url.search + url.hash;\n    }\n  }\n  return location;\n}\nfunction createClientSideRequest(history, location, signal, submission) {\n  let url = history.createURL(stripHashFromPath(location)).toString();\n  let init = { signal };\n  if (submission && isMutationMethod(submission.formMethod)) {\n    let { formMethod, formEncType } = submission;\n    init.method = formMethod.toUpperCase();\n    if (formEncType === \"application/json\") {\n      init.headers = new Headers({ \"Content-Type\": formEncType });\n      init.body = JSON.stringify(submission.json);\n    } else if (formEncType === \"text/plain\") {\n      init.body = submission.text;\n    } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n      init.body = convertFormDataToSearchParams(submission.formData);\n    } else {\n      init.body = submission.formData;\n    }\n  }\n  return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n  let searchParams = new URLSearchParams();\n  for (let [key, value] of formData.entries()) {\n    searchParams.append(key, typeof value === \"string\" ? value : value.name);\n  }\n  return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n  let formData = new FormData();\n  for (let [key, value] of searchParams.entries()) {\n    formData.append(key, value);\n  }\n  return formData;\n}\nfunction processRouteLoaderData(matches, results, pendingActionResult, isStaticHandler = false, skipLoaderErrorBubbling = false) {\n  let loaderData = {};\n  let errors = null;\n  let statusCode;\n  let foundError = false;\n  let loaderHeaders = {};\n  let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : void 0;\n  matches.forEach((match) => {\n    if (!(match.route.id in results)) {\n      return;\n    }\n    let id = match.route.id;\n    let result = results[id];\n    invariant(\n      !isRedirectResult(result),\n      \"Cannot handle redirect results in processLoaderData\"\n    );\n    if (isErrorResult(result)) {\n      let error = result.error;\n      if (pendingError !== void 0) {\n        error = pendingError;\n        pendingError = void 0;\n      }\n      errors = errors || {};\n      if (skipLoaderErrorBubbling) {\n        errors[id] = error;\n      } else {\n        let boundaryMatch = findNearestBoundary(matches, id);\n        if (errors[boundaryMatch.route.id] == null) {\n          errors[boundaryMatch.route.id] = error;\n        }\n      }\n      if (!isStaticHandler) {\n        loaderData[id] = ResetLoaderDataSymbol;\n      }\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else {\n      loaderData[id] = result.data;\n      if (result.statusCode && result.statusCode !== 200 && !foundError) {\n        statusCode = result.statusCode;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    }\n  });\n  if (pendingError !== void 0 && pendingActionResult) {\n    errors = { [pendingActionResult[0]]: pendingError };\n    loaderData[pendingActionResult[0]] = void 0;\n  }\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders\n  };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults) {\n  let { loaderData, errors } = processRouteLoaderData(\n    matches,\n    results,\n    pendingActionResult\n  );\n  revalidatingFetchers.forEach((rf) => {\n    let { key, match, controller } = rf;\n    let result = fetcherResults[key];\n    invariant(result, \"Did not find corresponding fetcher result\");\n    if (controller && controller.signal.aborted) {\n      return;\n    } else if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = {\n          ...errors,\n          [boundaryMatch.route.id]: result.error\n        };\n      }\n      state.fetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      invariant(false, \"Unhandled fetcher revalidation redirect\");\n    } else {\n      let doneFetcher = getDoneFetcher(result.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  });\n  return { loaderData, errors };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n  let mergedLoaderData = Object.entries(newLoaderData).filter(([, v]) => v !== ResetLoaderDataSymbol).reduce((merged, [k, v]) => {\n    merged[k] = v;\n    return merged;\n  }, {});\n  for (let match of matches) {\n    let id = match.route.id;\n    if (!newLoaderData.hasOwnProperty(id) && loaderData.hasOwnProperty(id) && match.route.loader) {\n      mergedLoaderData[id] = loaderData[id];\n    }\n    if (errors && errors.hasOwnProperty(id)) {\n      break;\n    }\n  }\n  return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n  if (!pendingActionResult) {\n    return {};\n  }\n  return isErrorResult(pendingActionResult[1]) ? {\n    // Clear out prior actionData on errors\n    actionData: {}\n  } : {\n    actionData: {\n      [pendingActionResult[0]]: pendingActionResult[1].data\n    }\n  };\n}\nfunction findNearestBoundary(matches, routeId) {\n  let eligibleMatches = routeId ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1) : [...matches];\n  return eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n  let route = routes.length === 1 ? routes[0] : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n    id: `__shim-error-route__`\n  };\n  return {\n    matches: [\n      {\n        params: {},\n        pathname: \"\",\n        pathnameBase: \"\",\n        route\n      }\n    ],\n    route\n  };\n}\nfunction getInternalRouterError(status, {\n  pathname,\n  routeId,\n  method,\n  type,\n  message\n} = {}) {\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n  if (status === 400) {\n    statusText = \"Bad Request\";\n    if (method && pathname && routeId) {\n      errorMessage = `You made a ${method} request to \"${pathname}\" but did not provide a \\`loader\\` for route \"${routeId}\", so there is no way to handle the request.`;\n    } else if (type === \"invalid-body\") {\n      errorMessage = \"Unable to encode submission body\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = `No route matches URL \"${pathname}\"`;\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n    if (method && pathname && routeId) {\n      errorMessage = `You made a ${method.toUpperCase()} request to \"${pathname}\" but did not provide an \\`action\\` for route \"${routeId}\", so there is no way to handle the request.`;\n    } else if (method) {\n      errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n    }\n  }\n  return new ErrorResponseImpl(\n    status || 500,\n    statusText,\n    new Error(errorMessage),\n    true\n  );\n}\nfunction findRedirect(results) {\n  let entries = Object.entries(results);\n  for (let i = entries.length - 1; i >= 0; i--) {\n    let [key, result] = entries[i];\n    if (isRedirectResult(result)) {\n      return { key, result };\n    }\n  }\n}\nfunction stripHashFromPath(path) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath({ ...parsedPath, hash: \"\" });\n}\nfunction isHashChangeOnly(a, b) {\n  if (a.pathname !== b.pathname || a.search !== b.search) {\n    return false;\n  }\n  if (a.hash === \"\") {\n    return b.hash !== \"\";\n  } else if (a.hash === b.hash) {\n    return true;\n  } else if (b.hash !== \"\") {\n    return true;\n  }\n  return false;\n}\nfunction isDataStrategyResult(result) {\n  return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === \"data\" /* data */ || result.type === \"error\" /* error */);\n}\nfunction isRedirectDataStrategyResult(result) {\n  return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isErrorResult(result) {\n  return result.type === \"error\" /* error */;\n}\nfunction isRedirectResult(result) {\n  return (result && result.type) === \"redirect\" /* redirect */;\n}\nfunction isDataWithResponseInit(value) {\n  return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isResponse(value) {\n  return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectStatusCode(statusCode) {\n  return redirectStatusCodes.has(statusCode);\n}\nfunction isRedirectResponse(result) {\n  return isResponse(result) && isRedirectStatusCode(result.status) && result.headers.has(\"Location\");\n}\nfunction isValidMethod(method) {\n  return validRequestMethods.has(method.toUpperCase());\n}\nfunction isMutationMethod(method) {\n  return validMutationMethods.has(method.toUpperCase());\n}\nfunction hasNakedIndexQuery(search) {\n  return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n  let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n  if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n    return matches[matches.length - 1];\n  }\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n  let { formMethod, formAction, formEncType, text, formData, json } = navigation;\n  if (!formMethod || !formAction || !formEncType) {\n    return;\n  }\n  if (text != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: void 0,\n      json: void 0,\n      text\n    };\n  } else if (formData != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData,\n      json: void 0,\n      text: void 0\n    };\n  } else if (json !== void 0) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: void 0,\n      json,\n      text: void 0\n    };\n  }\n}\nfunction getLoadingNavigation(location, submission) {\n  if (submission) {\n    let navigation = {\n      state: \"loading\",\n      location,\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text\n    };\n    return navigation;\n  } else {\n    let navigation = {\n      state: \"loading\",\n      location,\n      formMethod: void 0,\n      formAction: void 0,\n      formEncType: void 0,\n      formData: void 0,\n      json: void 0,\n      text: void 0\n    };\n    return navigation;\n  }\n}\nfunction getSubmittingNavigation(location, submission) {\n  let navigation = {\n    state: \"submitting\",\n    location,\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text\n  };\n  return navigation;\n}\nfunction getLoadingFetcher(submission, data2) {\n  if (submission) {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n      data: data2\n    };\n    return fetcher;\n  } else {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: void 0,\n      formAction: void 0,\n      formEncType: void 0,\n      formData: void 0,\n      json: void 0,\n      text: void 0,\n      data: data2\n    };\n    return fetcher;\n  }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n  let fetcher = {\n    state: \"submitting\",\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n    data: existingFetcher ? existingFetcher.data : void 0\n  };\n  return fetcher;\n}\nfunction getDoneFetcher(data2) {\n  let fetcher = {\n    state: \"idle\",\n    formMethod: void 0,\n    formAction: void 0,\n    formEncType: void 0,\n    formData: void 0,\n    json: void 0,\n    text: void 0,\n    data: data2\n  };\n  return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n  try {\n    let sessionPositions = _window.sessionStorage.getItem(\n      TRANSITIONS_STORAGE_KEY\n    );\n    if (sessionPositions) {\n      let json = JSON.parse(sessionPositions);\n      for (let [k, v] of Object.entries(json || {})) {\n        if (v && Array.isArray(v)) {\n          transitions.set(k, new Set(v || []));\n        }\n      }\n    }\n  } catch (e) {\n  }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n  if (transitions.size > 0) {\n    let json = {};\n    for (let [k, v] of transitions) {\n      json[k] = [...v];\n    }\n    try {\n      _window.sessionStorage.setItem(\n        TRANSITIONS_STORAGE_KEY,\n        JSON.stringify(json)\n      );\n    } catch (error) {\n      warning(\n        false,\n        `Failed to save applied view transitions in sessionStorage (${error}).`\n      );\n    }\n  }\n}\nfunction createDeferred() {\n  let resolve;\n  let reject;\n  let promise = new Promise((res, rej) => {\n    resolve = async (val) => {\n      res(val);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n    reject = async (error) => {\n      rej(error);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n  });\n  return {\n    promise,\n    //@ts-ignore\n    resolve,\n    //@ts-ignore\n    reject\n  };\n}\n\n// lib/components.tsx\nimport * as React3 from \"react\";\n\n// lib/context.ts\nimport * as React from \"react\";\nvar DataRouterContext = React.createContext(null);\nDataRouterContext.displayName = \"DataRouter\";\nvar DataRouterStateContext = React.createContext(null);\nDataRouterStateContext.displayName = \"DataRouterState\";\nvar ViewTransitionContext = React.createContext({\n  isTransitioning: false\n});\nViewTransitionContext.displayName = \"ViewTransition\";\nvar FetchersContext = React.createContext(\n  /* @__PURE__ */ new Map()\n);\nFetchersContext.displayName = \"Fetchers\";\nvar AwaitContext = React.createContext(null);\nAwaitContext.displayName = \"Await\";\nvar NavigationContext = React.createContext(\n  null\n);\nNavigationContext.displayName = \"Navigation\";\nvar LocationContext = React.createContext(\n  null\n);\nLocationContext.displayName = \"Location\";\nvar RouteContext = React.createContext({\n  outlet: null,\n  matches: [],\n  isDataRoute: false\n});\nRouteContext.displayName = \"Route\";\nvar RouteErrorContext = React.createContext(null);\nRouteErrorContext.displayName = \"RouteError\";\n\n// lib/hooks.tsx\nimport * as React2 from \"react\";\nvar ENABLE_DEV_WARNINGS = true;\nfunction useHref(to, { relative } = {}) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n  let { basename, navigator: navigator2 } = React2.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n  let joinedPathname = pathname;\n  if (basename !== \"/\") {\n    joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n  return navigator2.createHref({ pathname: joinedPathname, search, hash });\n}\nfunction useInRouterContext() {\n  return React2.useContext(LocationContext) != null;\n}\nfunction useLocation() {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n  return React2.useContext(LocationContext).location;\n}\nfunction useNavigationType() {\n  return React2.useContext(LocationContext).navigationType;\n}\nfunction useMatch(pattern) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n  let { pathname } = useLocation();\n  return React2.useMemo(\n    () => matchPath(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\nvar navigateEffectWarning = `You should call navigate() in a React.useEffect(), not when your component is first rendered.`;\nfunction useIsomorphicLayoutEffect(cb) {\n  let isStatic = React2.useContext(NavigationContext).static;\n  if (!isStatic) {\n    React2.useLayoutEffect(cb);\n  }\n}\nfunction useNavigate() {\n  let { isDataRoute } = React2.useContext(RouteContext);\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n  let dataRouterContext = React2.useContext(DataRouterContext);\n  let { basename, navigator: navigator2 } = React2.useContext(NavigationContext);\n  let { matches } = React2.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n  let activeRef = React2.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React2.useCallback(\n    (to, options = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n      if (!activeRef.current) return;\n      if (typeof to === \"number\") {\n        navigator2.go(to);\n        return;\n      }\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n      }\n      (!!options.replace ? navigator2.replace : navigator2.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator2,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext\n    ]\n  );\n  return navigate;\n}\nvar OutletContext = React2.createContext(null);\nfunction useOutletContext() {\n  return React2.useContext(OutletContext);\n}\nfunction useOutlet(context) {\n  let outlet = React2.useContext(RouteContext).outlet;\n  if (outlet) {\n    return /* @__PURE__ */ React2.createElement(OutletContext.Provider, { value: context }, outlet);\n  }\n  return outlet;\n}\nfunction useParams() {\n  let { matches } = React2.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? routeMatch.params : {};\n}\nfunction useResolvedPath(to, { relative } = {}) {\n  let { matches } = React2.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n  return React2.useMemo(\n    () => resolveTo(\n      to,\n      JSON.parse(routePathnamesJson),\n      locationPathname,\n      relative === \"path\"\n    ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\nfunction useRoutes(routes, locationArg) {\n  return useRoutesImpl(routes, locationArg);\n}\nfunction useRoutesImpl(routes, locationArg, dataRouterState, future) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n  let { navigator: navigator2, static: isStatic } = React2.useContext(NavigationContext);\n  let { matches: parentMatches } = React2.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n  if (ENABLE_DEV_WARNINGS) {\n    let parentPath = parentRoute && parentRoute.path || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\") || parentPath.endsWith(\"*?\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at \"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the parent route path has no trailing \"*\". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.\n\nPlease change the parent <Route path=\"${parentPath}\"> to <Route path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n  let locationFromContext = useLocation();\n  let location;\n  if (locationArg) {\n    let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n    invariant(\n      parentPathnameBase === \"/\" || parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n  let pathname = location.pathname || \"/\";\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n  let matches = !isStatic && dataRouterState && dataRouterState.matches && dataRouterState.matches.length > 0 ? dataRouterState.matches : matchRoutes(routes, { pathname: remainingPathname });\n  if (ENABLE_DEV_WARNINGS) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n    warning(\n      matches == null || matches[matches.length - 1].route.element !== void 0 || matches[matches.length - 1].route.Component !== void 0 || matches[matches.length - 1].route.lazy !== void 0,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n    );\n  }\n  let renderedMatches = _renderMatches(\n    matches && matches.map(\n      (match) => Object.assign({}, match, {\n        params: Object.assign({}, parentParams, match.params),\n        pathname: joinPaths([\n          parentPathnameBase,\n          // Re-encode pathnames that were decoded inside matchRoutes\n          navigator2.encodeLocation ? navigator2.encodeLocation(match.pathname).pathname : match.pathname\n        ]),\n        pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([\n          parentPathnameBase,\n          // Re-encode pathnames that were decoded inside matchRoutes\n          navigator2.encodeLocation ? navigator2.encodeLocation(match.pathnameBase).pathname : match.pathnameBase\n        ])\n      })\n    ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n  if (locationArg && renderedMatches) {\n    return /* @__PURE__ */ React2.createElement(\n      LocationContext.Provider,\n      {\n        value: {\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location\n          },\n          navigationType: \"POP\" /* Pop */\n        }\n      },\n      renderedMatches\n    );\n  }\n  return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error) ? `${error.status} ${error.statusText}` : error instanceof Error ? error.message : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n  let devInfo = null;\n  if (ENABLE_DEV_WARNINGS) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n    devInfo = /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"p\", null, \"\\u{1F4BF} Hey developer \\u{1F44B}\"), /* @__PURE__ */ React2.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"ErrorBoundary\"), \" or\", \" \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"errorElement\"), \" prop on your route.\"));\n  }\n  return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"h2\", null, \"Unexpected Application Error!\"), /* @__PURE__ */ React2.createElement(\"h3\", { style: { fontStyle: \"italic\" } }, message), stack ? /* @__PURE__ */ React2.createElement(\"pre\", { style: preStyles }, stack) : null, devInfo);\n}\nvar defaultErrorElement = /* @__PURE__ */ React2.createElement(DefaultErrorComponent, null);\nvar RenderErrorBoundary = class extends React2.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error\n    };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  static getDerivedStateFromProps(props, state) {\n    if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation\n      };\n    }\n    return {\n      error: props.error !== void 0 ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation\n    };\n  }\n  componentDidCatch(error, errorInfo) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n  render() {\n    return this.state.error !== void 0 ? /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: this.props.routeContext }, /* @__PURE__ */ React2.createElement(\n      RouteErrorContext.Provider,\n      {\n        value: this.state.error,\n        children: this.props.component\n      }\n    )) : this.props.children;\n  }\n};\nfunction RenderedRoute({ routeContext, match, children }) {\n  let dataRouterContext = React2.useContext(DataRouterContext);\n  if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n  return /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: routeContext }, children);\n}\nfunction _renderMatches(matches, parentMatches = [], dataRouterState = null, future = null) {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n    if (dataRouterState.errors) {\n      matches = dataRouterState.matches;\n    } else if (parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n      matches = dataRouterState.matches;\n    } else {\n      return null;\n    }\n  }\n  let renderedMatches = matches;\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== void 0\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n      if (match.route.id) {\n        let { loaderData, errors: errors2 } = dataRouterState;\n        let needsToRunLoader = match.route.loader && !loaderData.hasOwnProperty(match.route.id) && (!errors2 || errors2[match.route.id] === void 0);\n        if (match.route.lazy || needsToRunLoader) {\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    let error;\n    let shouldRenderHydrateFallback = false;\n    let errorElement = null;\n    let hydrateFallbackElement = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : void 0;\n      errorElement = match.route.errorElement || defaultErrorElement;\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n    let matches2 = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        children = /* @__PURE__ */ React2.createElement(match.route.Component, null);\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return /* @__PURE__ */ React2.createElement(\n        RenderedRoute,\n        {\n          match,\n          routeContext: {\n            outlet,\n            matches: matches2,\n            isDataRoute: dataRouterState != null\n          },\n          children\n        }\n      );\n    };\n    return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /* @__PURE__ */ React2.createElement(\n      RenderErrorBoundary,\n      {\n        location: dataRouterState.location,\n        revalidation: dataRouterState.revalidation,\n        component: errorElement,\n        error,\n        children: getChildren(),\n        routeContext: { outlet: null, matches: matches2, isDataRoute: true }\n      }\n    ) : getChildren();\n  }, null);\n}\nfunction getDataRouterConsoleError(hookName) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext(hookName) {\n  let ctx = React2.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\nfunction useDataRouterState(hookName) {\n  let state = React2.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\nfunction useRouteContext(hookName) {\n  let route = React2.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\nfunction useCurrentRouteId(hookName) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\nfunction useRouteId() {\n  return useCurrentRouteId(\"useRouteId\" /* UseRouteId */);\n}\nfunction useNavigation() {\n  let state = useDataRouterState(\"useNavigation\" /* UseNavigation */);\n  return state.navigation;\n}\nfunction useRevalidator() {\n  let dataRouterContext = useDataRouterContext(\"useRevalidator\" /* UseRevalidator */);\n  let state = useDataRouterState(\"useRevalidator\" /* UseRevalidator */);\n  return React2.useMemo(\n    () => ({\n      async revalidate() {\n        await dataRouterContext.router.revalidate();\n      },\n      state: state.revalidation\n    }),\n    [dataRouterContext.router, state.revalidation]\n  );\n}\nfunction useMatches() {\n  let { matches, loaderData } = useDataRouterState(\n    \"useMatches\" /* UseMatches */\n  );\n  return React2.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\nfunction useLoaderData() {\n  let state = useDataRouterState(\"useLoaderData\" /* UseLoaderData */);\n  let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n  return state.loaderData[routeId];\n}\nfunction useRouteLoaderData(routeId) {\n  let state = useDataRouterState(\"useRouteLoaderData\" /* UseRouteLoaderData */);\n  return state.loaderData[routeId];\n}\nfunction useActionData() {\n  let state = useDataRouterState(\"useActionData\" /* UseActionData */);\n  let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n  return state.actionData ? state.actionData[routeId] : void 0;\n}\nfunction useRouteError() {\n  let error = React2.useContext(RouteErrorContext);\n  let state = useDataRouterState(\"useRouteError\" /* UseRouteError */);\n  let routeId = useCurrentRouteId(\"useRouteError\" /* UseRouteError */);\n  if (error !== void 0) {\n    return error;\n  }\n  return state.errors?.[routeId];\n}\nfunction useAsyncValue() {\n  let value = React2.useContext(AwaitContext);\n  return value?._data;\n}\nfunction useAsyncError() {\n  let value = React2.useContext(AwaitContext);\n  return value?._error;\n}\nvar blockerId = 0;\nfunction useBlocker(shouldBlock) {\n  let { router, basename } = useDataRouterContext(\"useBlocker\" /* UseBlocker */);\n  let state = useDataRouterState(\"useBlocker\" /* UseBlocker */);\n  let [blockerKey, setBlockerKey] = React2.useState(\"\");\n  let blockerFunction = React2.useCallback(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n        },\n        historyAction\n      });\n    },\n    [basename, shouldBlock]\n  );\n  React2.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n  React2.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n  return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\nfunction useNavigateStable() {\n  let { router } = useDataRouterContext(\"useNavigate\" /* UseNavigateStable */);\n  let id = useCurrentRouteId(\"useNavigate\" /* UseNavigateStable */);\n  let activeRef = React2.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React2.useCallback(\n    async (to, options = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n      if (!activeRef.current) return;\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        await router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n  return navigate;\n}\nvar alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n\n// lib/server-runtime/warnings.ts\nvar alreadyWarned2 = {};\nfunction warnOnce(condition, message) {\n  if (!condition && !alreadyWarned2[message]) {\n    alreadyWarned2[message] = true;\n    console.warn(message);\n  }\n}\n\n// lib/components.tsx\nvar ENABLE_DEV_WARNINGS2 = true;\nfunction mapRouteProperties(route) {\n  let updates = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.hasErrorBoundary || route.ErrorBoundary != null || route.errorElement != null\n  };\n  if (route.Component) {\n    if (ENABLE_DEV_WARNINGS2) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - `Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React3.createElement(route.Component),\n      Component: void 0\n    });\n  }\n  if (route.HydrateFallback) {\n    if (ENABLE_DEV_WARNINGS2) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React3.createElement(route.HydrateFallback),\n      HydrateFallback: void 0\n    });\n  }\n  if (route.ErrorBoundary) {\n    if (ENABLE_DEV_WARNINGS2) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React3.createElement(route.ErrorBoundary),\n      ErrorBoundary: void 0\n    });\n  }\n  return updates;\n}\nfunction createMemoryRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    future: opts?.future,\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation\n  }).initialize();\n}\nvar Deferred = class {\n  constructor() {\n    this.status = \"pending\";\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = (value) => {\n        if (this.status === \"pending\") {\n          this.status = \"resolved\";\n          resolve(value);\n        }\n      };\n      this.reject = (reason) => {\n        if (this.status === \"pending\") {\n          this.status = \"rejected\";\n          reject(reason);\n        }\n      };\n    });\n  }\n};\nfunction RouterProvider({\n  router,\n  flushSync: reactDomFlushSyncImpl\n}) {\n  let [state, setStateImpl] = React3.useState(router.state);\n  let [pendingState, setPendingState] = React3.useState();\n  let [vtContext, setVtContext] = React3.useState({\n    isTransitioning: false\n  });\n  let [renderDfd, setRenderDfd] = React3.useState();\n  let [transition, setTransition] = React3.useState();\n  let [interruption, setInterruption] = React3.useState();\n  let fetcherData = React3.useRef(/* @__PURE__ */ new Map());\n  let setState = React3.useCallback(\n    (newState, { deletedFetchers, flushSync, viewTransitionOpts }) => {\n      newState.fetchers.forEach((fetcher, key) => {\n        if (fetcher.data !== void 0) {\n          fetcherData.current.set(key, fetcher.data);\n        }\n      });\n      deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n      warnOnce(\n        flushSync === false || reactDomFlushSyncImpl != null,\n        'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable.  Please update your app to `import { RouterProvider } from \"react-router/dom\"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.'\n      );\n      let isViewTransitionAvailable = router.window != null && router.window.document != null && typeof router.window.document.startViewTransition === \"function\";\n      warnOnce(\n        viewTransitionOpts == null || isViewTransitionAvailable,\n        \"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available.\"\n      );\n      if (!viewTransitionOpts || !isViewTransitionAvailable) {\n        if (reactDomFlushSyncImpl && flushSync) {\n          reactDomFlushSyncImpl(() => setStateImpl(newState));\n        } else {\n          React3.startTransition(() => setStateImpl(newState));\n        }\n        return;\n      }\n      if (reactDomFlushSyncImpl && flushSync) {\n        reactDomFlushSyncImpl(() => {\n          if (transition) {\n            renderDfd && renderDfd.resolve();\n            transition.skipTransition();\n          }\n          setVtContext({\n            isTransitioning: true,\n            flushSync: true,\n            currentLocation: viewTransitionOpts.currentLocation,\n            nextLocation: viewTransitionOpts.nextLocation\n          });\n        });\n        let t = router.window.document.startViewTransition(() => {\n          reactDomFlushSyncImpl(() => setStateImpl(newState));\n        });\n        t.finished.finally(() => {\n          reactDomFlushSyncImpl(() => {\n            setRenderDfd(void 0);\n            setTransition(void 0);\n            setPendingState(void 0);\n            setVtContext({ isTransitioning: false });\n          });\n        });\n        reactDomFlushSyncImpl(() => setTransition(t));\n        return;\n      }\n      if (transition) {\n        renderDfd && renderDfd.resolve();\n        transition.skipTransition();\n        setInterruption({\n          state: newState,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation\n        });\n      } else {\n        setPendingState(newState);\n        setVtContext({\n          isTransitioning: true,\n          flushSync: false,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation\n        });\n      }\n    },\n    [router.window, reactDomFlushSyncImpl, transition, renderDfd]\n  );\n  React3.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n  React3.useEffect(() => {\n    if (vtContext.isTransitioning && !vtContext.flushSync) {\n      setRenderDfd(new Deferred());\n    }\n  }, [vtContext]);\n  React3.useEffect(() => {\n    if (renderDfd && pendingState && router.window) {\n      let newState = pendingState;\n      let renderPromise = renderDfd.promise;\n      let transition2 = router.window.document.startViewTransition(async () => {\n        React3.startTransition(() => setStateImpl(newState));\n        await renderPromise;\n      });\n      transition2.finished.finally(() => {\n        setRenderDfd(void 0);\n        setTransition(void 0);\n        setPendingState(void 0);\n        setVtContext({ isTransitioning: false });\n      });\n      setTransition(transition2);\n    }\n  }, [pendingState, renderDfd, router.window]);\n  React3.useEffect(() => {\n    if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n      renderDfd.resolve();\n    }\n  }, [renderDfd, transition, state.location, pendingState]);\n  React3.useEffect(() => {\n    if (!vtContext.isTransitioning && interruption) {\n      setPendingState(interruption.state);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: interruption.currentLocation,\n        nextLocation: interruption.nextLocation\n      });\n      setInterruption(void 0);\n    }\n  }, [vtContext.isTransitioning, interruption]);\n  let navigator2 = React3.useMemo(() => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state2, opts) => router.navigate(to, {\n        state: state2,\n        preventScrollReset: opts?.preventScrollReset\n      }),\n      replace: (to, state2, opts) => router.navigate(to, {\n        replace: true,\n        state: state2,\n        preventScrollReset: opts?.preventScrollReset\n      })\n    };\n  }, [router]);\n  let basename = router.basename || \"/\";\n  let dataRouterContext = React3.useMemo(\n    () => ({\n      router,\n      navigator: navigator2,\n      static: false,\n      basename\n    }),\n    [router, navigator2, basename]\n  );\n  return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React3.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React3.createElement(FetchersContext.Provider, { value: fetcherData.current }, /* @__PURE__ */ React3.createElement(ViewTransitionContext.Provider, { value: vtContext }, /* @__PURE__ */ React3.createElement(\n    Router,\n    {\n      basename,\n      location: state.location,\n      navigationType: state.historyAction,\n      navigator: navigator2\n    },\n    /* @__PURE__ */ React3.createElement(\n      MemoizedDataRoutes,\n      {\n        routes: router.routes,\n        future: router.future,\n        state\n      }\n    )\n  ))))), null);\n}\nvar MemoizedDataRoutes = React3.memo(DataRoutes);\nfunction DataRoutes({\n  routes,\n  future,\n  state\n}) {\n  return useRoutesImpl(routes, void 0, state, future);\n}\nfunction MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex\n}) {\n  let historyRef = React3.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React3.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React3.useCallback(\n    (newState) => {\n      React3.startTransition(() => setStateImpl(newState));\n    },\n    [setStateImpl]\n  );\n  React3.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React3.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history\n    }\n  );\n}\nfunction Navigate({\n  to,\n  replace: replace2,\n  state,\n  relative\n}) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n  let { static: isStatic } = React3.useContext(NavigationContext);\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`\n  );\n  let { matches } = React3.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n  React3.useEffect(() => {\n    navigate(JSON.parse(jsonPath), { replace: replace2, state, relative });\n  }, [navigate, jsonPath, relative, replace2, state]);\n  return null;\n}\nfunction Outlet(props) {\n  return useOutlet(props.context);\n}\nfunction Route(_props) {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\nfunction Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = \"POP\" /* Pop */,\n  navigator: navigator2,\n  static: staticProp = false\n}) {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`\n  );\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React3.useMemo(\n    () => ({\n      basename,\n      navigator: navigator2,\n      static: staticProp,\n      future: {}\n    }),\n    [basename, navigator2, staticProp]\n  );\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\"\n  } = locationProp;\n  let locationContext = React3.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n    if (trailingPathname == null) {\n      return null;\n    }\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key\n      },\n      navigationType\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL \"${pathname}${search}${hash}\" because it does not start with the basename, so the <Router> won't render anything.`\n  );\n  if (locationContext == null) {\n    return null;\n  }\n  return /* @__PURE__ */ React3.createElement(NavigationContext.Provider, { value: navigationContext }, /* @__PURE__ */ React3.createElement(LocationContext.Provider, { children, value: locationContext }));\n}\nfunction Routes({\n  children,\n  location\n}) {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\nfunction Await({\n  children,\n  errorElement,\n  resolve\n}) {\n  return /* @__PURE__ */ React3.createElement(AwaitErrorBoundary, { resolve, errorElement }, /* @__PURE__ */ React3.createElement(ResolveAwait, null, children));\n}\nvar AwaitErrorBoundary = class extends React3.Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: null };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error, errorInfo) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n  render() {\n    let { children, errorElement, resolve } = this.props;\n    let promise = null;\n    let status = 0 /* pending */;\n    if (!(resolve instanceof Promise)) {\n      status = 1 /* success */;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      status = 2 /* error */;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {\n      });\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if (resolve._tracked) {\n      promise = resolve;\n      status = \"_error\" in promise ? 2 /* error */ : \"_data\" in promise ? 1 /* success */ : 0 /* pending */;\n    } else {\n      status = 0 /* pending */;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data2) => Object.defineProperty(resolve, \"_data\", { get: () => data2 }),\n        (error) => Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n    if (status === 2 /* error */ && !errorElement) {\n      throw promise._error;\n    }\n    if (status === 2 /* error */) {\n      return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children: errorElement });\n    }\n    if (status === 1 /* success */) {\n      return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children });\n    }\n    throw promise;\n  }\n};\nfunction ResolveAwait({\n  children\n}) {\n  let data2 = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data2) : children;\n  return /* @__PURE__ */ React3.createElement(React3.Fragment, null, toRender);\n}\nfunction createRoutesFromChildren(children, parentPath = []) {\n  let routes = [];\n  React3.Children.forEach(children, (element, index) => {\n    if (!React3.isValidElement(element)) {\n      return;\n    }\n    let treePath = [...parentPath, index];\n    if (element.type === React3.Fragment) {\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n    invariant(\n      element.type === Route,\n      `[${typeof element.type === \"string\" ? element.type : element.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n    let route = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      hydrateFallbackElement: element.props.hydrateFallbackElement,\n      HydrateFallback: element.props.HydrateFallback,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary: element.props.hasErrorBoundary === true || element.props.ErrorBoundary != null || element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy\n    };\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n    routes.push(route);\n  });\n  return routes;\n}\nvar createRoutesFromElements = createRoutesFromChildren;\nfunction renderMatches(matches) {\n  return _renderMatches(matches);\n}\n\n// lib/dom/lib.tsx\nimport * as React10 from \"react\";\n\n// lib/dom/dom.ts\nvar defaultMethod = \"get\";\nvar defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n  return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n  return event.button === 0 && // Ignore everything but left clicks\n  (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n  !isModifiedEvent(event);\n}\nfunction createSearchParams(init = \"\") {\n  return new URLSearchParams(\n    typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo2, key) => {\n      let value = init[key];\n      return memo2.concat(\n        Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n      );\n    }, [])\n  );\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n  let searchParams = createSearchParams(locationSearch);\n  if (defaultSearchParams) {\n    defaultSearchParams.forEach((_, key) => {\n      if (!searchParams.has(key)) {\n        defaultSearchParams.getAll(key).forEach((value) => {\n          searchParams.append(key, value);\n        });\n      }\n    });\n  }\n  return searchParams;\n}\nvar _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n  if (_formDataSupportsSubmitter === null) {\n    try {\n      new FormData(\n        document.createElement(\"form\"),\n        // @ts-expect-error if FormData supports the submitter parameter, this will throw\n        0\n      );\n      _formDataSupportsSubmitter = false;\n    } catch (e) {\n      _formDataSupportsSubmitter = true;\n    }\n  }\n  return _formDataSupportsSubmitter;\n}\nvar supportedFormEncTypes = /* @__PURE__ */ new Set([\n  \"application/x-www-form-urlencoded\",\n  \"multipart/form-data\",\n  \"text/plain\"\n]);\nfunction getFormEncType(encType) {\n  if (encType != null && !supportedFormEncTypes.has(encType)) {\n    warning(\n      false,\n      `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` and will default to \"${defaultEncType}\"`\n    );\n    return null;\n  }\n  return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n  let method;\n  let action;\n  let encType;\n  let formData;\n  let body;\n  if (isFormElement(target)) {\n    let attr = target.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(target);\n  } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n    let form = target.form;\n    if (form == null) {\n      throw new Error(\n        `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n      );\n    }\n    let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(form, target);\n    if (!isFormDataSubmitterSupported()) {\n      let { name, type, value } = target;\n      if (type === \"image\") {\n        let prefix = name ? `${name}.` : \"\";\n        formData.append(`${prefix}x`, \"0\");\n        formData.append(`${prefix}y`, \"0\");\n      } else if (name) {\n        formData.append(name, value);\n      }\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error(\n      `Cannot submit element that is not <form>, <button>, or <input type=\"submit|image\">`\n    );\n  } else {\n    method = defaultMethod;\n    action = null;\n    encType = defaultEncType;\n    body = target;\n  }\n  if (formData && encType === \"text/plain\") {\n    body = formData;\n    formData = void 0;\n  }\n  return { action, method: method.toLowerCase(), encType, formData, body };\n}\n\n// lib/dom/ssr/components.tsx\nimport * as React9 from \"react\";\n\n// lib/dom/ssr/invariant.ts\nfunction invariant2(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\n\n// lib/dom/ssr/routeModules.ts\nasync function loadRouteModule(route, routeModulesCache) {\n  if (route.id in routeModulesCache) {\n    return routeModulesCache[route.id];\n  }\n  try {\n    let routeModule = await import(\n      /* @vite-ignore */\n      /* webpackIgnore: true */\n      route.module\n    );\n    routeModulesCache[route.id] = routeModule;\n    return routeModule;\n  } catch (error) {\n    console.error(\n      `Error loading route module \\`${route.module}\\`, reloading page...`\n    );\n    console.error(error);\n    if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && // @ts-expect-error\n    import.meta.hot) {\n      throw error;\n    }\n    window.location.reload();\n    return new Promise(() => {\n    });\n  }\n}\n\n// lib/dom/ssr/links.ts\nfunction getKeyedLinksForMatches(matches, routeModules, manifest) {\n  let descriptors = matches.map((match) => {\n    let module = routeModules[match.route.id];\n    let route = manifest.routes[match.route.id];\n    return [\n      route && route.css ? route.css.map((href2) => ({ rel: \"stylesheet\", href: href2 })) : [],\n      module?.links?.() || []\n    ];\n  }).flat(2);\n  let preloads = getModuleLinkHrefs(matches, manifest);\n  return dedupeLinkDescriptors(descriptors, preloads);\n}\nfunction getRouteCssDescriptors(route) {\n  if (!route.css) return [];\n  return route.css.map((href2) => ({ rel: \"stylesheet\", href: href2 }));\n}\nasync function prefetchRouteCss(route) {\n  if (!route.css) return;\n  let descriptors = getRouteCssDescriptors(route);\n  await Promise.all(descriptors.map(prefetchStyleLink));\n}\nasync function prefetchStyleLinks(route, routeModule) {\n  if (!route.css && !routeModule.links || !isPreloadSupported()) return;\n  let descriptors = [];\n  if (route.css) {\n    descriptors.push(...getRouteCssDescriptors(route));\n  }\n  if (routeModule.links) {\n    descriptors.push(...routeModule.links());\n  }\n  if (descriptors.length === 0) return;\n  let styleLinks = [];\n  for (let descriptor of descriptors) {\n    if (!isPageLinkDescriptor(descriptor) && descriptor.rel === \"stylesheet\") {\n      styleLinks.push({\n        ...descriptor,\n        rel: \"preload\",\n        as: \"style\"\n      });\n    }\n  }\n  await Promise.all(styleLinks.map(prefetchStyleLink));\n}\nasync function prefetchStyleLink(descriptor) {\n  return new Promise((resolve) => {\n    if (descriptor.media && !window.matchMedia(descriptor.media).matches || document.querySelector(\n      `link[rel=\"stylesheet\"][href=\"${descriptor.href}\"]`\n    )) {\n      return resolve();\n    }\n    let link = document.createElement(\"link\");\n    Object.assign(link, descriptor);\n    function removeLink() {\n      if (document.head.contains(link)) {\n        document.head.removeChild(link);\n      }\n    }\n    link.onload = () => {\n      removeLink();\n      resolve();\n    };\n    link.onerror = () => {\n      removeLink();\n      resolve();\n    };\n    document.head.appendChild(link);\n  });\n}\nfunction isPageLinkDescriptor(object) {\n  return object != null && typeof object.page === \"string\";\n}\nfunction isHtmlLinkDescriptor(object) {\n  if (object == null) {\n    return false;\n  }\n  if (object.href == null) {\n    return object.rel === \"preload\" && typeof object.imageSrcSet === \"string\" && typeof object.imageSizes === \"string\";\n  }\n  return typeof object.rel === \"string\" && typeof object.href === \"string\";\n}\nasync function getKeyedPrefetchLinks(matches, manifest, routeModules) {\n  let links = await Promise.all(\n    matches.map(async (match) => {\n      let route = manifest.routes[match.route.id];\n      if (route) {\n        let mod = await loadRouteModule(route, routeModules);\n        return mod.links ? mod.links() : [];\n      }\n      return [];\n    })\n  );\n  return dedupeLinkDescriptors(\n    links.flat(1).filter(isHtmlLinkDescriptor).filter((link) => link.rel === \"stylesheet\" || link.rel === \"preload\").map(\n      (link) => link.rel === \"stylesheet\" ? { ...link, rel: \"prefetch\", as: \"style\" } : { ...link, rel: \"prefetch\" }\n    )\n  );\n}\nfunction getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, location, mode) {\n  let isNew = (match, index) => {\n    if (!currentMatches[index]) return true;\n    return match.route.id !== currentMatches[index].route.id;\n  };\n  let matchPathChanged = (match, index) => {\n    return (\n      // param change, /users/123 -> /users/456\n      currentMatches[index].pathname !== match.pathname || // splat param changed, which is not present in match.path\n      // e.g. /files/images/avatar.jpg -> files/finances.xls\n      currentMatches[index].route.path?.endsWith(\"*\") && currentMatches[index].params[\"*\"] !== match.params[\"*\"]\n    );\n  };\n  if (mode === \"assets\") {\n    return nextMatches.filter(\n      (match, index) => isNew(match, index) || matchPathChanged(match, index)\n    );\n  }\n  if (mode === \"data\") {\n    return nextMatches.filter((match, index) => {\n      let manifestRoute = manifest.routes[match.route.id];\n      if (!manifestRoute || !manifestRoute.hasLoader) {\n        return false;\n      }\n      if (isNew(match, index) || matchPathChanged(match, index)) {\n        return true;\n      }\n      if (match.route.shouldRevalidate) {\n        let routeChoice = match.route.shouldRevalidate({\n          currentUrl: new URL(\n            location.pathname + location.search + location.hash,\n            window.origin\n          ),\n          currentParams: currentMatches[0]?.params || {},\n          nextUrl: new URL(page, window.origin),\n          nextParams: match.params,\n          defaultShouldRevalidate: true\n        });\n        if (typeof routeChoice === \"boolean\") {\n          return routeChoice;\n        }\n      }\n      return true;\n    });\n  }\n  return [];\n}\nfunction getModuleLinkHrefs(matches, manifest, { includeHydrateFallback } = {}) {\n  return dedupeHrefs(\n    matches.map((match) => {\n      let route = manifest.routes[match.route.id];\n      if (!route) return [];\n      let hrefs = [route.module];\n      if (route.clientActionModule) {\n        hrefs = hrefs.concat(route.clientActionModule);\n      }\n      if (route.clientLoaderModule) {\n        hrefs = hrefs.concat(route.clientLoaderModule);\n      }\n      if (includeHydrateFallback && route.hydrateFallbackModule) {\n        hrefs = hrefs.concat(route.hydrateFallbackModule);\n      }\n      if (route.imports) {\n        hrefs = hrefs.concat(route.imports);\n      }\n      return hrefs;\n    }).flat(1)\n  );\n}\nfunction dedupeHrefs(hrefs) {\n  return [...new Set(hrefs)];\n}\nfunction sortKeys(obj) {\n  let sorted = {};\n  let keys = Object.keys(obj).sort();\n  for (let key of keys) {\n    sorted[key] = obj[key];\n  }\n  return sorted;\n}\nfunction dedupeLinkDescriptors(descriptors, preloads) {\n  let set = /* @__PURE__ */ new Set();\n  let preloadsSet = new Set(preloads);\n  return descriptors.reduce((deduped, descriptor) => {\n    let alreadyModulePreload = preloads && !isPageLinkDescriptor(descriptor) && descriptor.as === \"script\" && descriptor.href && preloadsSet.has(descriptor.href);\n    if (alreadyModulePreload) {\n      return deduped;\n    }\n    let key = JSON.stringify(sortKeys(descriptor));\n    if (!set.has(key)) {\n      set.add(key);\n      deduped.push({ key, link: descriptor });\n    }\n    return deduped;\n  }, []);\n}\nvar _isPreloadSupported;\nfunction isPreloadSupported() {\n  if (_isPreloadSupported !== void 0) {\n    return _isPreloadSupported;\n  }\n  let el = document.createElement(\"link\");\n  _isPreloadSupported = el.relList.supports(\"preload\");\n  el = null;\n  return _isPreloadSupported;\n}\n\n// lib/dom/ssr/markup.ts\nvar ESCAPE_LOOKUP = {\n  \"&\": \"\\\\u0026\",\n  \">\": \"\\\\u003e\",\n  \"<\": \"\\\\u003c\",\n  \"\\u2028\": \"\\\\u2028\",\n  \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml(html) {\n  return html.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);\n}\nfunction createHtml(html) {\n  return { __html: html };\n}\n\n// lib/dom/ssr/single-fetch.tsx\nimport * as React4 from \"react\";\nimport { decode } from \"turbo-stream\";\n\n// lib/dom/ssr/data.ts\nasync function createRequestInit(request) {\n  let init = { signal: request.signal };\n  if (request.method !== \"GET\") {\n    init.method = request.method;\n    let contentType = request.headers.get(\"Content-Type\");\n    if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n      init.headers = { \"Content-Type\": contentType };\n      init.body = JSON.stringify(await request.json());\n    } else if (contentType && /\\btext\\/plain\\b/.test(contentType)) {\n      init.headers = { \"Content-Type\": contentType };\n      init.body = await request.text();\n    } else if (contentType && /\\bapplication\\/x-www-form-urlencoded\\b/.test(contentType)) {\n      init.body = new URLSearchParams(await request.text());\n    } else {\n      init.body = await request.formData();\n    }\n  }\n  return init;\n}\n\n// lib/dom/ssr/single-fetch.tsx\nvar SingleFetchRedirectSymbol = Symbol(\"SingleFetchRedirect\");\nfunction StreamTransfer({\n  context,\n  identifier,\n  reader,\n  textDecoder,\n  nonce\n}) {\n  if (!context.renderMeta || !context.renderMeta.didRenderScripts) {\n    return null;\n  }\n  if (!context.renderMeta.streamCache) {\n    context.renderMeta.streamCache = {};\n  }\n  let { streamCache } = context.renderMeta;\n  let promise = streamCache[identifier];\n  if (!promise) {\n    promise = streamCache[identifier] = reader.read().then((result) => {\n      streamCache[identifier].result = {\n        done: result.done,\n        value: textDecoder.decode(result.value, { stream: true })\n      };\n    }).catch((e) => {\n      streamCache[identifier].error = e;\n    });\n  }\n  if (promise.error) {\n    throw promise.error;\n  }\n  if (promise.result === void 0) {\n    throw promise;\n  }\n  let { done, value } = promise.result;\n  let scriptTag = value ? /* @__PURE__ */ React4.createElement(\n    \"script\",\n    {\n      nonce,\n      dangerouslySetInnerHTML: {\n        __html: `window.__reactRouterContext.streamController.enqueue(${escapeHtml(\n          JSON.stringify(value)\n        )});`\n      }\n    }\n  ) : null;\n  if (done) {\n    return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(\n      \"script\",\n      {\n        nonce,\n        dangerouslySetInnerHTML: {\n          __html: `window.__reactRouterContext.streamController.close();`\n        }\n      }\n    ));\n  } else {\n    return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(React4.Suspense, null, /* @__PURE__ */ React4.createElement(\n      StreamTransfer,\n      {\n        context,\n        identifier: identifier + 1,\n        reader,\n        textDecoder,\n        nonce\n      }\n    )));\n  }\n}\nfunction getSingleFetchDataStrategy(manifest, routeModules, ssr, getRouter) {\n  return async ({ request, matches, fetcherKey }) => {\n    if (request.method !== \"GET\") {\n      return singleFetchActionStrategy(request, matches);\n    }\n    if (!ssr) {\n      let foundRevalidatingServerLoader = matches.some(\n        (m) => m.shouldLoad && manifest.routes[m.route.id]?.hasLoader && !manifest.routes[m.route.id]?.hasClientLoader\n      );\n      if (!foundRevalidatingServerLoader) {\n        let matchesToLoad = matches.filter((m) => m.shouldLoad);\n        let url = stripIndexParam(singleFetchUrl(request.url));\n        let init = await createRequestInit(request);\n        let results = {};\n        await Promise.all(\n          matchesToLoad.map(\n            (m) => m.resolve(async (handler) => {\n              try {\n                let result = manifest.routes[m.route.id]?.hasClientLoader ? await fetchSingleLoader(handler, url, init, m.route.id) : await handler();\n                results[m.route.id] = { type: \"data\", result };\n              } catch (e) {\n                results[m.route.id] = { type: \"error\", result: e };\n              }\n            })\n          )\n        );\n        return results;\n      }\n    }\n    if (fetcherKey) {\n      return singleFetchLoaderFetcherStrategy(request, matches);\n    }\n    return singleFetchLoaderNavigationStrategy(\n      manifest,\n      routeModules,\n      ssr,\n      getRouter(),\n      request,\n      matches\n    );\n  };\n}\nasync function singleFetchActionStrategy(request, matches) {\n  let actionMatch = matches.find((m) => m.shouldLoad);\n  invariant2(actionMatch, \"No action match found\");\n  let actionStatus = void 0;\n  let result = await actionMatch.resolve(async (handler) => {\n    let result2 = await handler(async () => {\n      let url = singleFetchUrl(request.url);\n      let init = await createRequestInit(request);\n      let { data: data2, status } = await fetchAndDecode(url, init);\n      actionStatus = status;\n      return unwrapSingleFetchResult(\n        data2,\n        actionMatch.route.id\n      );\n    });\n    return result2;\n  });\n  if (isResponse(result.result) || isRouteErrorResponse(result.result)) {\n    return { [actionMatch.route.id]: result };\n  }\n  return {\n    [actionMatch.route.id]: {\n      type: result.type,\n      result: data(result.result, actionStatus)\n    }\n  };\n}\nasync function singleFetchLoaderNavigationStrategy(manifest, routeModules, ssr, router, request, matches) {\n  let routesParams = /* @__PURE__ */ new Set();\n  let foundOptOutRoute = false;\n  let routeDfds = matches.map(() => createDeferred2());\n  let routesLoadedPromise = Promise.all(routeDfds.map((d) => d.promise));\n  let singleFetchDfd = createDeferred2();\n  let url = stripIndexParam(singleFetchUrl(request.url));\n  let init = await createRequestInit(request);\n  let results = {};\n  let resolvePromise = Promise.all(\n    matches.map(\n      async (m, i) => m.resolve(async (handler) => {\n        routeDfds[i].resolve();\n        let manifestRoute = manifest.routes[m.route.id];\n        if (!m.shouldLoad) {\n          if (!router.state.initialized) {\n            return;\n          }\n          if (m.route.id in router.state.loaderData && manifestRoute && manifestRoute.hasLoader && routeModules[m.route.id]?.shouldRevalidate) {\n            foundOptOutRoute = true;\n            return;\n          }\n        }\n        if (manifestRoute && manifestRoute.hasClientLoader) {\n          if (manifestRoute.hasLoader) {\n            foundOptOutRoute = true;\n          }\n          try {\n            let result = await fetchSingleLoader(\n              handler,\n              url,\n              init,\n              m.route.id\n            );\n            results[m.route.id] = { type: \"data\", result };\n          } catch (e) {\n            results[m.route.id] = { type: \"error\", result: e };\n          }\n          return;\n        }\n        if (manifestRoute && manifestRoute.hasLoader) {\n          routesParams.add(m.route.id);\n        }\n        try {\n          let result = await handler(async () => {\n            let data2 = await singleFetchDfd.promise;\n            return unwrapSingleFetchResults(data2, m.route.id);\n          });\n          results[m.route.id] = {\n            type: \"data\",\n            result\n          };\n        } catch (e) {\n          results[m.route.id] = {\n            type: \"error\",\n            result: e\n          };\n        }\n      })\n    )\n  );\n  await routesLoadedPromise;\n  if ((!router.state.initialized || routesParams.size === 0) && !window.__reactRouterHdrActive) {\n    singleFetchDfd.resolve({});\n  } else {\n    try {\n      if (ssr && foundOptOutRoute && routesParams.size > 0) {\n        url.searchParams.set(\n          \"_routes\",\n          matches.filter((m) => routesParams.has(m.route.id)).map((m) => m.route.id).join(\",\")\n        );\n      }\n      let data2 = await fetchAndDecode(url, init);\n      singleFetchDfd.resolve(data2.data);\n    } catch (e) {\n      singleFetchDfd.reject(e);\n    }\n  }\n  await resolvePromise;\n  return results;\n}\nasync function singleFetchLoaderFetcherStrategy(request, matches) {\n  let fetcherMatch = matches.find((m) => m.shouldLoad);\n  invariant2(fetcherMatch, \"No fetcher match found\");\n  let result = await fetcherMatch.resolve(async (handler) => {\n    let url = stripIndexParam(singleFetchUrl(request.url));\n    let init = await createRequestInit(request);\n    return fetchSingleLoader(handler, url, init, fetcherMatch.route.id);\n  });\n  return { [fetcherMatch.route.id]: result };\n}\nfunction fetchSingleLoader(handler, url, init, routeId) {\n  return handler(async () => {\n    let singleLoaderUrl = new URL(url);\n    singleLoaderUrl.searchParams.set(\"_routes\", routeId);\n    let { data: data2 } = await fetchAndDecode(singleLoaderUrl, init);\n    return unwrapSingleFetchResults(data2, routeId);\n  });\n}\nfunction stripIndexParam(url) {\n  let indexValues = url.searchParams.getAll(\"index\");\n  url.searchParams.delete(\"index\");\n  let indexValuesToKeep = [];\n  for (let indexValue of indexValues) {\n    if (indexValue) {\n      indexValuesToKeep.push(indexValue);\n    }\n  }\n  for (let toKeep of indexValuesToKeep) {\n    url.searchParams.append(\"index\", toKeep);\n  }\n  return url;\n}\nfunction singleFetchUrl(reqUrl) {\n  let url = typeof reqUrl === \"string\" ? new URL(\n    reqUrl,\n    // This can be called during the SSR flow via PrefetchPageLinksImpl so\n    // don't assume window is available\n    typeof window === \"undefined\" ? \"server://singlefetch/\" : window.location.origin\n  ) : reqUrl;\n  if (url.pathname === \"/\") {\n    url.pathname = \"_root.data\";\n  } else {\n    url.pathname = `${url.pathname.replace(/\\/$/, \"\")}.data`;\n  }\n  return url;\n}\nasync function fetchAndDecode(url, init) {\n  let res = await fetch(url, init);\n  if (res.status === 404 && !res.headers.has(\"X-Remix-Response\")) {\n    throw new ErrorResponseImpl(404, \"Not Found\", true);\n  }\n  const NO_BODY_STATUS_CODES2 = /* @__PURE__ */ new Set([100, 101, 204, 205]);\n  if (NO_BODY_STATUS_CODES2.has(res.status)) {\n    if (!init.method || init.method === \"GET\") {\n      return { status: res.status, data: {} };\n    } else {\n      return { status: res.status, data: { data: void 0 } };\n    }\n  }\n  invariant2(res.body, \"No response body to decode\");\n  try {\n    let decoded = await decodeViaTurboStream(res.body, window);\n    return { status: res.status, data: decoded.value };\n  } catch (e) {\n    throw new Error(\"Unable to decode turbo-stream response\");\n  }\n}\nfunction decodeViaTurboStream(body, global2) {\n  return decode(body, {\n    plugins: [\n      (type, ...rest) => {\n        if (type === \"SanitizedError\") {\n          let [name, message, stack] = rest;\n          let Constructor = Error;\n          if (name && name in global2 && typeof global2[name] === \"function\") {\n            Constructor = global2[name];\n          }\n          let error = new Constructor(message);\n          error.stack = stack;\n          return { value: error };\n        }\n        if (type === \"ErrorResponse\") {\n          let [data2, status, statusText] = rest;\n          return {\n            value: new ErrorResponseImpl(status, statusText, data2)\n          };\n        }\n        if (type === \"SingleFetchRedirect\") {\n          return { value: { [SingleFetchRedirectSymbol]: rest[0] } };\n        }\n        if (type === \"SingleFetchClassInstance\") {\n          return { value: rest[0] };\n        }\n        if (type === \"SingleFetchFallback\") {\n          return { value: void 0 };\n        }\n      }\n    ]\n  });\n}\nfunction unwrapSingleFetchResults(results, routeId) {\n  let redirect2 = results[SingleFetchRedirectSymbol];\n  if (redirect2) {\n    return unwrapSingleFetchResult(redirect2, routeId);\n  }\n  return results[routeId] !== void 0 ? unwrapSingleFetchResult(results[routeId], routeId) : null;\n}\nfunction unwrapSingleFetchResult(result, routeId) {\n  if (\"error\" in result) {\n    throw result.error;\n  } else if (\"redirect\" in result) {\n    let headers = {};\n    if (result.revalidate) {\n      headers[\"X-Remix-Revalidate\"] = \"yes\";\n    }\n    if (result.reload) {\n      headers[\"X-Remix-Reload-Document\"] = \"yes\";\n    }\n    if (result.replace) {\n      headers[\"X-Remix-Replace\"] = \"yes\";\n    }\n    throw redirect(result.redirect, { status: result.status, headers });\n  } else if (\"data\" in result) {\n    return result.data;\n  } else {\n    throw new Error(`No response found for routeId \"${routeId}\"`);\n  }\n}\nfunction createDeferred2() {\n  let resolve;\n  let reject;\n  let promise = new Promise((res, rej) => {\n    resolve = async (val) => {\n      res(val);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n    reject = async (error) => {\n      rej(error);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n  });\n  return {\n    promise,\n    //@ts-ignore\n    resolve,\n    //@ts-ignore\n    reject\n  };\n}\n\n// lib/dom/ssr/fog-of-war.ts\nimport * as React8 from \"react\";\n\n// lib/dom/ssr/routes.tsx\nimport * as React7 from \"react\";\n\n// lib/dom/ssr/errorBoundaries.tsx\nimport * as React5 from \"react\";\nvar RemixErrorBoundary = class extends React5.Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: props.error || null, location: props.location };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  static getDerivedStateFromProps(props, state) {\n    if (state.location !== props.location) {\n      return { error: props.error || null, location: props.location };\n    }\n    return { error: props.error || state.error, location: state.location };\n  }\n  render() {\n    if (this.state.error) {\n      return /* @__PURE__ */ React5.createElement(\n        RemixRootDefaultErrorBoundary,\n        {\n          error: this.state.error,\n          isOutsideRemixApp: true\n        }\n      );\n    } else {\n      return this.props.children;\n    }\n  }\n};\nfunction RemixRootDefaultErrorBoundary({\n  error,\n  isOutsideRemixApp\n}) {\n  console.error(error);\n  let heyDeveloper = /* @__PURE__ */ React5.createElement(\n    \"script\",\n    {\n      dangerouslySetInnerHTML: {\n        __html: `\n        console.log(\n          \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this when your app throws errors. Check out https://remix.run/guides/errors for more information.\"\n        );\n      `\n      }\n    }\n  );\n  if (isRouteErrorResponse(error)) {\n    return /* @__PURE__ */ React5.createElement(BoundaryShell, { title: \"Unhandled Thrown Response!\" }, /* @__PURE__ */ React5.createElement(\"h1\", { style: { fontSize: \"24px\" } }, error.status, \" \", error.statusText), heyDeveloper);\n  }\n  let errorInstance;\n  if (error instanceof Error) {\n    errorInstance = error;\n  } else {\n    let errorString = error == null ? \"Unknown Error\" : typeof error === \"object\" && \"toString\" in error ? error.toString() : JSON.stringify(error);\n    errorInstance = new Error(errorString);\n  }\n  return /* @__PURE__ */ React5.createElement(\n    BoundaryShell,\n    {\n      title: \"Application Error!\",\n      isOutsideRemixApp\n    },\n    /* @__PURE__ */ React5.createElement(\"h1\", { style: { fontSize: \"24px\" } }, \"Application Error\"),\n    /* @__PURE__ */ React5.createElement(\n      \"pre\",\n      {\n        style: {\n          padding: \"2rem\",\n          background: \"hsla(10, 50%, 50%, 0.1)\",\n          color: \"red\",\n          overflow: \"auto\"\n        }\n      },\n      errorInstance.stack\n    ),\n    heyDeveloper\n  );\n}\nfunction BoundaryShell({\n  title,\n  renderScripts,\n  isOutsideRemixApp,\n  children\n}) {\n  let { routeModules } = useFrameworkContext();\n  if (routeModules.root?.Layout && !isOutsideRemixApp) {\n    return children;\n  }\n  return /* @__PURE__ */ React5.createElement(\"html\", { lang: \"en\" }, /* @__PURE__ */ React5.createElement(\"head\", null, /* @__PURE__ */ React5.createElement(\"meta\", { charSet: \"utf-8\" }), /* @__PURE__ */ React5.createElement(\n    \"meta\",\n    {\n      name: \"viewport\",\n      content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n    }\n  ), /* @__PURE__ */ React5.createElement(\"title\", null, title)), /* @__PURE__ */ React5.createElement(\"body\", null, /* @__PURE__ */ React5.createElement(\"main\", { style: { fontFamily: \"system-ui, sans-serif\", padding: \"2rem\" } }, children, renderScripts ? /* @__PURE__ */ React5.createElement(Scripts, null) : null)));\n}\n\n// lib/dom/ssr/fallback.tsx\nimport * as React6 from \"react\";\nfunction RemixRootDefaultHydrateFallback() {\n  return /* @__PURE__ */ React6.createElement(BoundaryShell, { title: \"Loading...\", renderScripts: true }, /* @__PURE__ */ React6.createElement(\n    \"script\",\n    {\n      dangerouslySetInnerHTML: {\n        __html: `\n              console.log(\n                \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this \" +\n                \"when your app is loading JS modules and/or running \\`clientLoader\\` \" +\n                \"functions. Check out https://remix.run/route/hydrate-fallback \" +\n                \"for more information.\"\n              );\n            `\n      }\n    }\n  ));\n}\n\n// lib/dom/ssr/routes.tsx\nfunction groupRoutesByParentId(manifest) {\n  let routes = {};\n  Object.values(manifest).forEach((route) => {\n    if (route) {\n      let parentId = route.parentId || \"\";\n      if (!routes[parentId]) {\n        routes[parentId] = [];\n      }\n      routes[parentId].push(route);\n    }\n  });\n  return routes;\n}\nfunction getRouteComponents(route, routeModule, isSpaMode) {\n  let Component4 = getRouteModuleComponent(routeModule);\n  let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === \"root\") ? routeModule.HydrateFallback : route.id === \"root\" ? RemixRootDefaultHydrateFallback : void 0;\n  let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === \"root\" ? () => /* @__PURE__ */ React7.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;\n  if (route.id === \"root\" && routeModule.Layout) {\n    return {\n      ...Component4 ? {\n        element: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(Component4, null))\n      } : { Component: Component4 },\n      ...ErrorBoundary ? {\n        errorElement: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(ErrorBoundary, null))\n      } : { ErrorBoundary },\n      ...HydrateFallback ? {\n        hydrateFallbackElement: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(HydrateFallback, null))\n      } : { HydrateFallback }\n    };\n  }\n  return { Component: Component4, ErrorBoundary, HydrateFallback };\n}\nfunction createServerRoutes(manifest, routeModules, future, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), spaModeLazyPromise = Promise.resolve({ Component: () => null })) {\n  return (routesByParentId[parentId] || []).map((route) => {\n    let routeModule = routeModules[route.id];\n    invariant2(\n      routeModule,\n      \"No `routeModule` available to create server routes\"\n    );\n    let dataRoute = {\n      ...getRouteComponents(route, routeModule, isSpaMode),\n      caseSensitive: route.caseSensitive,\n      id: route.id,\n      index: route.index,\n      path: route.path,\n      handle: routeModule.handle,\n      // For SPA Mode, all routes are lazy except root.  However we tell the\n      // router root is also lazy here too since we don't need a full\n      // implementation - we just need a `lazy` prop to tell the RR rendering\n      // where to stop which is always at the root route in SPA mode\n      lazy: isSpaMode ? () => spaModeLazyPromise : void 0,\n      // For partial hydration rendering, we need to indicate when the route\n      // has a loader/clientLoader, but it won't ever be called during the static\n      // render, so just give it a no-op function so we can render down to the\n      // proper fallback\n      loader: route.hasLoader || route.hasClientLoader ? () => null : void 0\n      // We don't need action/shouldRevalidate on these routes since they're\n      // for a static render\n    };\n    let children = createServerRoutes(\n      manifest,\n      routeModules,\n      future,\n      isSpaMode,\n      route.id,\n      routesByParentId,\n      spaModeLazyPromise\n    );\n    if (children.length > 0) dataRoute.children = children;\n    return dataRoute;\n  });\n}\nfunction createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, ssr, isSpaMode) {\n  return createClientRoutes(\n    manifest,\n    routeModulesCache,\n    initialState,\n    ssr,\n    isSpaMode,\n    \"\",\n    groupRoutesByParentId(manifest),\n    needsRevalidation\n  );\n}\nfunction preventInvalidServerHandlerCall(type, route) {\n  if (type === \"loader\" && !route.hasLoader || type === \"action\" && !route.hasAction) {\n    let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n    let msg = `You are trying to call ${fn} on a route that does not have a server ${type} (routeId: \"${route.id}\")`;\n    console.error(msg);\n    throw new ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n  }\n}\nfunction noActionDefinedError(type, routeId) {\n  let article = type === \"clientAction\" ? \"a\" : \"an\";\n  let msg = `Route \"${routeId}\" does not have ${article} ${type}, but you are trying to submit to it. To fix this, please add ${article} \\`${type}\\` function to the route`;\n  console.error(msg);\n  throw new ErrorResponseImpl(405, \"Method Not Allowed\", new Error(msg), true);\n}\nfunction createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {\n  return (routesByParentId[parentId] || []).map((route) => {\n    let routeModule = routeModulesCache[route.id];\n    function fetchServerHandler(singleFetch) {\n      invariant2(\n        typeof singleFetch === \"function\",\n        \"No single fetch function available for route handler\"\n      );\n      return singleFetch();\n    }\n    function fetchServerLoader(singleFetch) {\n      if (!route.hasLoader) return Promise.resolve(null);\n      return fetchServerHandler(singleFetch);\n    }\n    function fetchServerAction(singleFetch) {\n      if (!route.hasAction) {\n        throw noActionDefinedError(\"action\", route.id);\n      }\n      return fetchServerHandler(singleFetch);\n    }\n    function prefetchModule(modulePath) {\n      import(\n        /* @vite-ignore */\n        /* webpackIgnore: true */\n        modulePath\n      );\n    }\n    function prefetchRouteModuleChunks(route2) {\n      if (route2.clientActionModule) {\n        prefetchModule(route2.clientActionModule);\n      }\n      if (route2.clientLoaderModule) {\n        prefetchModule(route2.clientLoaderModule);\n      }\n    }\n    async function prefetchStylesAndCallHandler(handler) {\n      let cachedModule = routeModulesCache[route.id];\n      let linkPrefetchPromise = cachedModule ? prefetchStyleLinks(route, cachedModule) : Promise.resolve();\n      try {\n        return handler();\n      } finally {\n        await linkPrefetchPromise;\n      }\n    }\n    let dataRoute = {\n      id: route.id,\n      index: route.index,\n      path: route.path\n    };\n    if (routeModule) {\n      Object.assign(dataRoute, {\n        ...dataRoute,\n        ...getRouteComponents(route, routeModule, isSpaMode),\n        handle: routeModule.handle,\n        shouldRevalidate: getShouldRevalidateFunction(\n          routeModule,\n          route,\n          ssr,\n          needsRevalidation\n        )\n      });\n      let hasInitialData = initialState && initialState.loaderData && route.id in initialState.loaderData;\n      let initialData = hasInitialData ? initialState?.loaderData?.[route.id] : void 0;\n      let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;\n      let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;\n      let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);\n      dataRoute.loader = async ({ request, params }, singleFetch) => {\n        try {\n          let result = await prefetchStylesAndCallHandler(async () => {\n            invariant2(\n              routeModule,\n              \"No `routeModule` available for critical-route loader\"\n            );\n            if (!routeModule.clientLoader) {\n              return fetchServerLoader(singleFetch);\n            }\n            return routeModule.clientLoader({\n              request,\n              params,\n              async serverLoader() {\n                preventInvalidServerHandlerCall(\"loader\", route);\n                if (isHydrationRequest) {\n                  if (hasInitialData) {\n                    return initialData;\n                  }\n                  if (hasInitialError) {\n                    throw initialError;\n                  }\n                }\n                return fetchServerLoader(singleFetch);\n              }\n            });\n          });\n          return result;\n        } finally {\n          isHydrationRequest = false;\n        }\n      };\n      dataRoute.loader.hydrate = shouldHydrateRouteLoader(\n        route,\n        routeModule,\n        isSpaMode\n      );\n      dataRoute.action = ({ request, params }, singleFetch) => {\n        return prefetchStylesAndCallHandler(async () => {\n          invariant2(\n            routeModule,\n            \"No `routeModule` available for critical-route action\"\n          );\n          if (!routeModule.clientAction) {\n            if (isSpaMode) {\n              throw noActionDefinedError(\"clientAction\", route.id);\n            }\n            return fetchServerAction(singleFetch);\n          }\n          return routeModule.clientAction({\n            request,\n            params,\n            async serverAction() {\n              preventInvalidServerHandlerCall(\"action\", route);\n              return fetchServerAction(singleFetch);\n            }\n          });\n        });\n      };\n    } else {\n      if (!route.hasClientLoader) {\n        dataRoute.loader = ({ request }, singleFetch) => prefetchStylesAndCallHandler(() => {\n          return fetchServerLoader(singleFetch);\n        });\n      } else if (route.clientLoaderModule) {\n        dataRoute.loader = async (args, singleFetch) => {\n          invariant2(route.clientLoaderModule);\n          let { clientLoader } = await import(\n            /* @vite-ignore */\n            /* webpackIgnore: true */\n            route.clientLoaderModule\n          );\n          return clientLoader({\n            ...args,\n            async serverLoader() {\n              preventInvalidServerHandlerCall(\"loader\", route);\n              return fetchServerLoader(singleFetch);\n            }\n          });\n        };\n      }\n      if (!route.hasClientAction) {\n        dataRoute.action = ({ request }, singleFetch) => prefetchStylesAndCallHandler(() => {\n          if (isSpaMode) {\n            throw noActionDefinedError(\"clientAction\", route.id);\n          }\n          return fetchServerAction(singleFetch);\n        });\n      } else if (route.clientActionModule) {\n        dataRoute.action = async (args, singleFetch) => {\n          invariant2(route.clientActionModule);\n          prefetchRouteModuleChunks(route);\n          let { clientAction } = await import(\n            /* @vite-ignore */\n            /* webpackIgnore: true */\n            route.clientActionModule\n          );\n          return clientAction({\n            ...args,\n            async serverAction() {\n              preventInvalidServerHandlerCall(\"action\", route);\n              return fetchServerAction(singleFetch);\n            }\n          });\n        };\n      }\n      dataRoute.lazy = async () => {\n        if (route.clientLoaderModule || route.clientActionModule) {\n          await new Promise((resolve) => setTimeout(resolve, 0));\n        }\n        let modPromise = loadRouteModuleWithBlockingLinks(\n          route,\n          routeModulesCache\n        );\n        prefetchRouteModuleChunks(route);\n        let mod = await modPromise;\n        let lazyRoute = { ...mod };\n        if (mod.clientLoader) {\n          let clientLoader = mod.clientLoader;\n          lazyRoute.loader = (args, singleFetch) => clientLoader({\n            ...args,\n            async serverLoader() {\n              preventInvalidServerHandlerCall(\"loader\", route);\n              return fetchServerLoader(singleFetch);\n            }\n          });\n        }\n        if (mod.clientAction) {\n          let clientAction = mod.clientAction;\n          lazyRoute.action = (args, singleFetch) => clientAction({\n            ...args,\n            async serverAction() {\n              preventInvalidServerHandlerCall(\"action\", route);\n              return fetchServerAction(singleFetch);\n            }\n          });\n        }\n        return {\n          ...lazyRoute.loader ? { loader: lazyRoute.loader } : {},\n          ...lazyRoute.action ? { action: lazyRoute.action } : {},\n          hasErrorBoundary: lazyRoute.hasErrorBoundary,\n          shouldRevalidate: getShouldRevalidateFunction(\n            lazyRoute,\n            route,\n            ssr,\n            needsRevalidation\n          ),\n          handle: lazyRoute.handle,\n          // No need to wrap these in layout since the root route is never\n          // loaded via route.lazy()\n          Component: lazyRoute.Component,\n          ErrorBoundary: lazyRoute.ErrorBoundary\n        };\n      };\n    }\n    let children = createClientRoutes(\n      manifest,\n      routeModulesCache,\n      initialState,\n      ssr,\n      isSpaMode,\n      route.id,\n      routesByParentId,\n      needsRevalidation\n    );\n    if (children.length > 0) dataRoute.children = children;\n    return dataRoute;\n  });\n}\nfunction getShouldRevalidateFunction(route, manifestRoute, ssr, needsRevalidation) {\n  if (needsRevalidation) {\n    return wrapShouldRevalidateForHdr(\n      manifestRoute.id,\n      route.shouldRevalidate,\n      needsRevalidation\n    );\n  }\n  if (!ssr && manifestRoute.hasLoader && !manifestRoute.hasClientLoader) {\n    if (route.shouldRevalidate) {\n      let fn = route.shouldRevalidate;\n      return (opts) => fn({ ...opts, defaultShouldRevalidate: false });\n    } else {\n      return () => false;\n    }\n  }\n  if (ssr && route.shouldRevalidate) {\n    let fn = route.shouldRevalidate;\n    return (opts) => fn({ ...opts, defaultShouldRevalidate: true });\n  }\n  return route.shouldRevalidate;\n}\nfunction wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalidation) {\n  let handledRevalidation = false;\n  return (arg) => {\n    if (!handledRevalidation) {\n      handledRevalidation = true;\n      return needsRevalidation.has(routeId);\n    }\n    return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;\n  };\n}\nasync function loadRouteModuleWithBlockingLinks(route, routeModules) {\n  let routeModulePromise = loadRouteModule(route, routeModules);\n  let prefetchRouteCssPromise = prefetchRouteCss(route);\n  let routeModule = await routeModulePromise;\n  await Promise.all([\n    prefetchRouteCssPromise,\n    prefetchStyleLinks(route, routeModule)\n  ]);\n  return {\n    Component: getRouteModuleComponent(routeModule),\n    ErrorBoundary: routeModule.ErrorBoundary,\n    clientAction: routeModule.clientAction,\n    clientLoader: routeModule.clientLoader,\n    handle: routeModule.handle,\n    links: routeModule.links,\n    meta: routeModule.meta,\n    shouldRevalidate: routeModule.shouldRevalidate\n  };\n}\nfunction getRouteModuleComponent(routeModule) {\n  if (routeModule.default == null) return void 0;\n  let isEmptyObject = typeof routeModule.default === \"object\" && Object.keys(routeModule.default).length === 0;\n  if (!isEmptyObject) {\n    return routeModule.default;\n  }\n}\nfunction shouldHydrateRouteLoader(route, routeModule, isSpaMode) {\n  return isSpaMode && route.id !== \"root\" || routeModule.clientLoader != null && (routeModule.clientLoader.hydrate === true || route.hasLoader !== true);\n}\n\n// lib/dom/ssr/fog-of-war.ts\nvar nextPaths = /* @__PURE__ */ new Set();\nvar discoveredPathsMaxSize = 1e3;\nvar discoveredPaths = /* @__PURE__ */ new Set();\nvar URL_LIMIT = 7680;\nfunction isFogOfWarEnabled(ssr) {\n  return ssr === true;\n}\nfunction getPartialManifest(manifest, router) {\n  let routeIds = new Set(router.state.matches.map((m) => m.route.id));\n  let segments = router.state.location.pathname.split(\"/\").filter(Boolean);\n  let paths = [\"/\"];\n  segments.pop();\n  while (segments.length > 0) {\n    paths.push(`/${segments.join(\"/\")}`);\n    segments.pop();\n  }\n  paths.forEach((path) => {\n    let matches = matchRoutes(router.routes, path, router.basename);\n    if (matches) {\n      matches.forEach((m) => routeIds.add(m.route.id));\n    }\n  });\n  let initialRoutes = [...routeIds].reduce(\n    (acc, id) => Object.assign(acc, { [id]: manifest.routes[id] }),\n    {}\n  );\n  return {\n    ...manifest,\n    routes: initialRoutes\n  };\n}\nfunction getPatchRoutesOnNavigationFunction(manifest, routeModules, ssr, isSpaMode, basename) {\n  if (!isFogOfWarEnabled(ssr)) {\n    return void 0;\n  }\n  return async ({ path, patch, signal }) => {\n    if (discoveredPaths.has(path)) {\n      return;\n    }\n    await fetchAndApplyManifestPatches(\n      [path],\n      manifest,\n      routeModules,\n      ssr,\n      isSpaMode,\n      basename,\n      patch,\n      signal\n    );\n  };\n}\nfunction useFogOFWarDiscovery(router, manifest, routeModules, ssr, isSpaMode) {\n  React8.useEffect(() => {\n    if (!isFogOfWarEnabled(ssr) || navigator.connection?.saveData === true) {\n      return;\n    }\n    function registerElement(el) {\n      let path = el.tagName === \"FORM\" ? el.getAttribute(\"action\") : el.getAttribute(\"href\");\n      if (!path) {\n        return;\n      }\n      let pathname = el.tagName === \"A\" ? el.pathname : new URL(path, window.location.origin).pathname;\n      if (!discoveredPaths.has(pathname)) {\n        nextPaths.add(pathname);\n      }\n    }\n    async function fetchPatches() {\n      document.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach(registerElement);\n      let lazyPaths = Array.from(nextPaths.keys()).filter((path) => {\n        if (discoveredPaths.has(path)) {\n          nextPaths.delete(path);\n          return false;\n        }\n        return true;\n      });\n      if (lazyPaths.length === 0) {\n        return;\n      }\n      try {\n        await fetchAndApplyManifestPatches(\n          lazyPaths,\n          manifest,\n          routeModules,\n          ssr,\n          isSpaMode,\n          router.basename,\n          router.patchRoutes\n        );\n      } catch (e) {\n        console.error(\"Failed to fetch manifest patches\", e);\n      }\n    }\n    let debouncedFetchPatches = debounce(fetchPatches, 100);\n    fetchPatches();\n    let observer = new MutationObserver(() => debouncedFetchPatches());\n    observer.observe(document.documentElement, {\n      subtree: true,\n      childList: true,\n      attributes: true,\n      attributeFilter: [\"data-discover\", \"href\", \"action\"]\n    });\n    return () => observer.disconnect();\n  }, [ssr, isSpaMode, manifest, routeModules, router]);\n}\nasync function fetchAndApplyManifestPatches(paths, manifest, routeModules, ssr, isSpaMode, basename, patchRoutes, signal) {\n  let manifestPath = `${basename != null ? basename : \"/\"}/__manifest`.replace(\n    /\\/+/g,\n    \"/\"\n  );\n  let url = new URL(manifestPath, window.location.origin);\n  paths.sort().forEach((path) => url.searchParams.append(\"p\", path));\n  url.searchParams.set(\"version\", manifest.version);\n  if (url.toString().length > URL_LIMIT) {\n    nextPaths.clear();\n    return;\n  }\n  let serverPatches;\n  try {\n    let res = await fetch(url, { signal });\n    if (!res.ok) {\n      throw new Error(`${res.status} ${res.statusText}`);\n    } else if (res.status >= 400) {\n      throw new Error(await res.text());\n    }\n    serverPatches = await res.json();\n  } catch (e) {\n    if (signal?.aborted) return;\n    throw e;\n  }\n  let knownRoutes = new Set(Object.keys(manifest.routes));\n  let patches = Object.values(serverPatches).reduce((acc, route) => {\n    if (route && !knownRoutes.has(route.id)) {\n      acc[route.id] = route;\n    }\n    return acc;\n  }, {});\n  Object.assign(manifest.routes, patches);\n  paths.forEach((p) => addToFifoQueue(p, discoveredPaths));\n  let parentIds = /* @__PURE__ */ new Set();\n  Object.values(patches).forEach((patch) => {\n    if (patch && (!patch.parentId || !patches[patch.parentId])) {\n      parentIds.add(patch.parentId);\n    }\n  });\n  parentIds.forEach(\n    (parentId) => patchRoutes(\n      parentId || null,\n      createClientRoutes(patches, routeModules, null, ssr, isSpaMode, parentId)\n    )\n  );\n}\nfunction addToFifoQueue(path, queue) {\n  if (queue.size >= discoveredPathsMaxSize) {\n    let first = queue.values().next().value;\n    queue.delete(first);\n  }\n  queue.add(path);\n}\nfunction debounce(callback, wait) {\n  let timeoutId;\n  return (...args) => {\n    window.clearTimeout(timeoutId);\n    timeoutId = window.setTimeout(() => callback(...args), wait);\n  };\n}\n\n// lib/dom/ssr/components.tsx\nfunction useDataRouterContext2() {\n  let context = React9.useContext(DataRouterContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <DataRouterContext.Provider> element\"\n  );\n  return context;\n}\nfunction useDataRouterStateContext() {\n  let context = React9.useContext(DataRouterStateContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <DataRouterStateContext.Provider> element\"\n  );\n  return context;\n}\nvar FrameworkContext = React9.createContext(void 0);\nFrameworkContext.displayName = \"FrameworkContext\";\nfunction useFrameworkContext() {\n  let context = React9.useContext(FrameworkContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <HydratedRouter> element\"\n  );\n  return context;\n}\nfunction usePrefetchBehavior(prefetch, theirElementProps) {\n  let frameworkContext = React9.useContext(FrameworkContext);\n  let [maybePrefetch, setMaybePrefetch] = React9.useState(false);\n  let [shouldPrefetch, setShouldPrefetch] = React9.useState(false);\n  let { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;\n  let ref = React9.useRef(null);\n  React9.useEffect(() => {\n    if (prefetch === \"render\") {\n      setShouldPrefetch(true);\n    }\n    if (prefetch === \"viewport\") {\n      let callback = (entries) => {\n        entries.forEach((entry) => {\n          setShouldPrefetch(entry.isIntersecting);\n        });\n      };\n      let observer = new IntersectionObserver(callback, { threshold: 0.5 });\n      if (ref.current) observer.observe(ref.current);\n      return () => {\n        observer.disconnect();\n      };\n    }\n  }, [prefetch]);\n  React9.useEffect(() => {\n    if (maybePrefetch) {\n      let id = setTimeout(() => {\n        setShouldPrefetch(true);\n      }, 100);\n      return () => {\n        clearTimeout(id);\n      };\n    }\n  }, [maybePrefetch]);\n  let setIntent = () => {\n    setMaybePrefetch(true);\n  };\n  let cancelIntent = () => {\n    setMaybePrefetch(false);\n    setShouldPrefetch(false);\n  };\n  if (!frameworkContext) {\n    return [false, ref, {}];\n  }\n  if (prefetch !== \"intent\") {\n    return [shouldPrefetch, ref, {}];\n  }\n  return [\n    shouldPrefetch,\n    ref,\n    {\n      onFocus: composeEventHandlers(onFocus, setIntent),\n      onBlur: composeEventHandlers(onBlur, cancelIntent),\n      onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),\n      onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),\n      onTouchStart: composeEventHandlers(onTouchStart, setIntent)\n    }\n  ];\n}\nfunction composeEventHandlers(theirHandler, ourHandler) {\n  return (event) => {\n    theirHandler && theirHandler(event);\n    if (!event.defaultPrevented) {\n      ourHandler(event);\n    }\n  };\n}\nfunction getActiveMatches(matches, errors, isSpaMode) {\n  if (isSpaMode && !isHydrated) {\n    return [matches[0]];\n  }\n  if (errors) {\n    let errorIdx = matches.findIndex((m) => errors[m.route.id] !== void 0);\n    return matches.slice(0, errorIdx + 1);\n  }\n  return matches;\n}\nfunction Links() {\n  let { isSpaMode, manifest, routeModules, criticalCss } = useFrameworkContext();\n  let { errors, matches: routerMatches } = useDataRouterStateContext();\n  let matches = getActiveMatches(routerMatches, errors, isSpaMode);\n  let keyedLinks = React9.useMemo(\n    () => getKeyedLinksForMatches(matches, routeModules, manifest),\n    [matches, routeModules, manifest]\n  );\n  return /* @__PURE__ */ React9.createElement(React9.Fragment, null, criticalCss ? /* @__PURE__ */ React9.createElement(\"style\", { dangerouslySetInnerHTML: { __html: criticalCss } }) : null, keyedLinks.map(\n    ({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React9.createElement(PrefetchPageLinks, { key, ...link }) : /* @__PURE__ */ React9.createElement(\"link\", { key, ...link })\n  ));\n}\nfunction PrefetchPageLinks({\n  page,\n  ...dataLinkProps\n}) {\n  let { router } = useDataRouterContext2();\n  let matches = React9.useMemo(\n    () => matchRoutes(router.routes, page, router.basename),\n    [router.routes, page, router.basename]\n  );\n  if (!matches) {\n    return null;\n  }\n  return /* @__PURE__ */ React9.createElement(PrefetchPageLinksImpl, { page, matches, ...dataLinkProps });\n}\nfunction useKeyedPrefetchLinks(matches) {\n  let { manifest, routeModules } = useFrameworkContext();\n  let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React9.useState([]);\n  React9.useEffect(() => {\n    let interrupted = false;\n    void getKeyedPrefetchLinks(matches, manifest, routeModules).then(\n      (links) => {\n        if (!interrupted) {\n          setKeyedPrefetchLinks(links);\n        }\n      }\n    );\n    return () => {\n      interrupted = true;\n    };\n  }, [matches, manifest, routeModules]);\n  return keyedPrefetchLinks;\n}\nfunction PrefetchPageLinksImpl({\n  page,\n  matches: nextMatches,\n  ...linkProps\n}) {\n  let location = useLocation();\n  let { manifest, routeModules } = useFrameworkContext();\n  let { loaderData, matches } = useDataRouterStateContext();\n  let newMatchesForData = React9.useMemo(\n    () => getNewMatchesForLinks(\n      page,\n      nextMatches,\n      matches,\n      manifest,\n      location,\n      \"data\"\n    ),\n    [page, nextMatches, matches, manifest, location]\n  );\n  let newMatchesForAssets = React9.useMemo(\n    () => getNewMatchesForLinks(\n      page,\n      nextMatches,\n      matches,\n      manifest,\n      location,\n      \"assets\"\n    ),\n    [page, nextMatches, matches, manifest, location]\n  );\n  let dataHrefs = React9.useMemo(() => {\n    if (page === location.pathname + location.search + location.hash) {\n      return [];\n    }\n    let routesParams = /* @__PURE__ */ new Set();\n    let foundOptOutRoute = false;\n    nextMatches.forEach((m) => {\n      let manifestRoute = manifest.routes[m.route.id];\n      if (!manifestRoute || !manifestRoute.hasLoader) {\n        return;\n      }\n      if (!newMatchesForData.some((m2) => m2.route.id === m.route.id) && m.route.id in loaderData && routeModules[m.route.id]?.shouldRevalidate) {\n        foundOptOutRoute = true;\n      } else if (manifestRoute.hasClientLoader) {\n        foundOptOutRoute = true;\n      } else {\n        routesParams.add(m.route.id);\n      }\n    });\n    if (routesParams.size === 0) {\n      return [];\n    }\n    let url = singleFetchUrl(page);\n    if (foundOptOutRoute && routesParams.size > 0) {\n      url.searchParams.set(\n        \"_routes\",\n        nextMatches.filter((m) => routesParams.has(m.route.id)).map((m) => m.route.id).join(\",\")\n      );\n    }\n    return [url.pathname + url.search];\n  }, [\n    loaderData,\n    location,\n    manifest,\n    newMatchesForData,\n    nextMatches,\n    page,\n    routeModules\n  ]);\n  let moduleHrefs = React9.useMemo(\n    () => getModuleLinkHrefs(newMatchesForAssets, manifest),\n    [newMatchesForAssets, manifest]\n  );\n  let keyedPrefetchLinks = useKeyedPrefetchLinks(newMatchesForAssets);\n  return /* @__PURE__ */ React9.createElement(React9.Fragment, null, dataHrefs.map((href2) => /* @__PURE__ */ React9.createElement(\"link\", { key: href2, rel: \"prefetch\", as: \"fetch\", href: href2, ...linkProps })), moduleHrefs.map((href2) => /* @__PURE__ */ React9.createElement(\"link\", { key: href2, rel: \"modulepreload\", href: href2, ...linkProps })), keyedPrefetchLinks.map(({ key, link }) => (\n    // these don't spread `linkProps` because they are full link descriptors\n    // already with their own props\n    /* @__PURE__ */ React9.createElement(\"link\", { key, ...link })\n  )));\n}\nfunction Meta() {\n  let { isSpaMode, routeModules } = useFrameworkContext();\n  let {\n    errors,\n    matches: routerMatches,\n    loaderData\n  } = useDataRouterStateContext();\n  let location = useLocation();\n  let _matches = getActiveMatches(routerMatches, errors, isSpaMode);\n  let error = null;\n  if (errors) {\n    error = errors[_matches[_matches.length - 1].route.id];\n  }\n  let meta = [];\n  let leafMeta = null;\n  let matches = [];\n  for (let i = 0; i < _matches.length; i++) {\n    let _match = _matches[i];\n    let routeId = _match.route.id;\n    let data2 = loaderData[routeId];\n    let params = _match.params;\n    let routeModule = routeModules[routeId];\n    let routeMeta = [];\n    let match = {\n      id: routeId,\n      data: data2,\n      meta: [],\n      params: _match.params,\n      pathname: _match.pathname,\n      handle: _match.route.handle,\n      error\n    };\n    matches[i] = match;\n    if (routeModule?.meta) {\n      routeMeta = typeof routeModule.meta === \"function\" ? routeModule.meta({\n        data: data2,\n        params,\n        location,\n        matches,\n        error\n      }) : Array.isArray(routeModule.meta) ? [...routeModule.meta] : routeModule.meta;\n    } else if (leafMeta) {\n      routeMeta = [...leafMeta];\n    }\n    routeMeta = routeMeta || [];\n    if (!Array.isArray(routeMeta)) {\n      throw new Error(\n        \"The route at \" + _match.route.path + \" returns an invalid value. All route meta functions must return an array of meta objects.\\n\\nTo reference the meta function API, see https://remix.run/route/meta\"\n      );\n    }\n    match.meta = routeMeta;\n    matches[i] = match;\n    meta = [...routeMeta];\n    leafMeta = meta;\n  }\n  return /* @__PURE__ */ React9.createElement(React9.Fragment, null, meta.flat().map((metaProps) => {\n    if (!metaProps) {\n      return null;\n    }\n    if (\"tagName\" in metaProps) {\n      let { tagName, ...rest } = metaProps;\n      if (!isValidMetaTag(tagName)) {\n        console.warn(\n          `A meta object uses an invalid tagName: ${tagName}. Expected either 'link' or 'meta'`\n        );\n        return null;\n      }\n      let Comp = tagName;\n      return /* @__PURE__ */ React9.createElement(Comp, { key: JSON.stringify(rest), ...rest });\n    }\n    if (\"title\" in metaProps) {\n      return /* @__PURE__ */ React9.createElement(\"title\", { key: \"title\" }, String(metaProps.title));\n    }\n    if (\"charset\" in metaProps) {\n      metaProps.charSet ?? (metaProps.charSet = metaProps.charset);\n      delete metaProps.charset;\n    }\n    if (\"charSet\" in metaProps && metaProps.charSet != null) {\n      return typeof metaProps.charSet === \"string\" ? /* @__PURE__ */ React9.createElement(\"meta\", { key: \"charSet\", charSet: metaProps.charSet }) : null;\n    }\n    if (\"script:ld+json\" in metaProps) {\n      try {\n        let json = JSON.stringify(metaProps[\"script:ld+json\"]);\n        return /* @__PURE__ */ React9.createElement(\n          \"script\",\n          {\n            key: `script:ld+json:${json}`,\n            type: \"application/ld+json\",\n            dangerouslySetInnerHTML: { __html: json }\n          }\n        );\n      } catch (err) {\n        return null;\n      }\n    }\n    return /* @__PURE__ */ React9.createElement(\"meta\", { key: JSON.stringify(metaProps), ...metaProps });\n  }));\n}\nfunction isValidMetaTag(tagName) {\n  return typeof tagName === \"string\" && /^(meta|link)$/.test(tagName);\n}\nvar isHydrated = false;\nfunction Scripts(props) {\n  let { manifest, serverHandoffString, isSpaMode, ssr, renderMeta } = useFrameworkContext();\n  let { router, static: isStatic, staticContext } = useDataRouterContext2();\n  let { matches: routerMatches } = useDataRouterStateContext();\n  let enableFogOfWar = isFogOfWarEnabled(ssr);\n  if (renderMeta) {\n    renderMeta.didRenderScripts = true;\n  }\n  let matches = getActiveMatches(routerMatches, null, isSpaMode);\n  React9.useEffect(() => {\n    isHydrated = true;\n  }, []);\n  let initialScripts = React9.useMemo(() => {\n    let streamScript = \"window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());\";\n    let contextScript = staticContext ? `window.__reactRouterContext = ${serverHandoffString};${streamScript}` : \" \";\n    let routeModulesScript = !isStatic ? \" \" : `${manifest.hmr?.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : \"\"}${!enableFogOfWar ? `import ${JSON.stringify(manifest.url)}` : \"\"};\n${matches.map((match, routeIndex) => {\n      let routeVarName = `route${routeIndex}`;\n      let manifestEntry = manifest.routes[match.route.id];\n      invariant2(manifestEntry, `Route ${match.route.id} not found in manifest`);\n      let {\n        clientActionModule,\n        clientLoaderModule,\n        hydrateFallbackModule,\n        module\n      } = manifestEntry;\n      let chunks = [\n        ...clientActionModule ? [\n          {\n            module: clientActionModule,\n            varName: `${routeVarName}_clientAction`\n          }\n        ] : [],\n        ...clientLoaderModule ? [\n          {\n            module: clientLoaderModule,\n            varName: `${routeVarName}_clientLoader`\n          }\n        ] : [],\n        ...hydrateFallbackModule ? [\n          {\n            module: hydrateFallbackModule,\n            varName: `${routeVarName}_HydrateFallback`\n          }\n        ] : [],\n        { module, varName: `${routeVarName}_main` }\n      ];\n      if (chunks.length === 1) {\n        return `import * as ${routeVarName} from ${JSON.stringify(module)};`;\n      }\n      let chunkImportsSnippet = chunks.map((chunk) => `import * as ${chunk.varName} from \"${chunk.module}\";`).join(\"\\n\");\n      let mergedChunksSnippet = `const ${routeVarName} = {${chunks.map((chunk) => `...${chunk.varName}`).join(\",\")}};`;\n      return [chunkImportsSnippet, mergedChunksSnippet].join(\"\\n\");\n    }).join(\"\\n\")}\n  ${enableFogOfWar ? (\n      // Inline a minimal manifest with the SSR matches\n      `window.__reactRouterManifest = ${JSON.stringify(\n        getPartialManifest(manifest, router),\n        null,\n        2\n      )};`\n    ) : \"\"}\n  window.__reactRouterRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(\",\")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`;\n    return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(\n      \"script\",\n      {\n        ...props,\n        suppressHydrationWarning: true,\n        dangerouslySetInnerHTML: createHtml(contextScript),\n        type: void 0\n      }\n    ), /* @__PURE__ */ React9.createElement(\n      \"script\",\n      {\n        ...props,\n        suppressHydrationWarning: true,\n        dangerouslySetInnerHTML: createHtml(routeModulesScript),\n        type: \"module\",\n        async: true\n      }\n    ));\n  }, []);\n  let preloads = isHydrated ? [] : manifest.entry.imports.concat(\n    getModuleLinkHrefs(matches, manifest, {\n      includeHydrateFallback: true\n    })\n  );\n  return isHydrated ? null : /* @__PURE__ */ React9.createElement(React9.Fragment, null, !enableFogOfWar ? /* @__PURE__ */ React9.createElement(\n    \"link\",\n    {\n      rel: \"modulepreload\",\n      href: manifest.url,\n      crossOrigin: props.crossOrigin\n    }\n  ) : null, /* @__PURE__ */ React9.createElement(\n    \"link\",\n    {\n      rel: \"modulepreload\",\n      href: manifest.entry.module,\n      crossOrigin: props.crossOrigin\n    }\n  ), dedupe(preloads).map((path) => /* @__PURE__ */ React9.createElement(\n    \"link\",\n    {\n      key: path,\n      rel: \"modulepreload\",\n      href: path,\n      crossOrigin: props.crossOrigin\n    }\n  )), initialScripts);\n}\nfunction dedupe(array) {\n  return [...new Set(array)];\n}\nfunction mergeRefs(...refs) {\n  return (value) => {\n    refs.forEach((ref) => {\n      if (typeof ref === \"function\") {\n        ref(value);\n      } else if (ref != null) {\n        ref.current = value;\n      }\n    });\n  };\n}\n\n// lib/dom/lib.tsx\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\ntry {\n  if (isBrowser) {\n    window.__reactRouterVersion = \"7.2.0\";\n  }\n} catch (e) {\n}\nfunction createBrowserRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    future: opts?.future,\n    history: createBrowserHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n    window: opts?.window\n  }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    future: opts?.future,\n    history: createHashHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n    window: opts?.window\n  }).initialize();\n}\nfunction parseHydrationData() {\n  let state = window?.__staticRouterHydrationData;\n  if (state && state.errors) {\n    state = {\n      ...state,\n      errors: deserializeErrors(state.errors)\n    };\n  }\n  return state;\n}\nfunction deserializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponseImpl(\n        val.status,\n        val.statusText,\n        val.data,\n        val.internal === true\n      );\n    } else if (val && val.__type === \"Error\") {\n      if (val.__subType) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            let error = new ErrorConstructor(val.message);\n            error.stack = \"\";\n            serialized[key] = error;\n          } catch (e) {\n          }\n        }\n      }\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        error.stack = \"\";\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\nfunction BrowserRouter({\n  basename,\n  children,\n  window: window2\n}) {\n  let historyRef = React10.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({ window: window2, v5Compat: true });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      React10.startTransition(() => setStateImpl(newState));\n    },\n    [setStateImpl]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history\n    }\n  );\n}\nfunction HashRouter({ basename, children, window: window2 }) {\n  let historyRef = React10.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({ window: window2, v5Compat: true });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      React10.startTransition(() => setStateImpl(newState));\n    },\n    [setStateImpl]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history\n    }\n  );\n}\nfunction HistoryRouter({\n  basename,\n  children,\n  history\n}) {\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      React10.startTransition(() => setStateImpl(newState));\n    },\n    [setStateImpl]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history\n    }\n  );\n}\nHistoryRouter.displayName = \"unstable_HistoryRouter\";\nvar ABSOLUTE_URL_REGEX2 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar Link = React10.forwardRef(\n  function LinkWithRef({\n    onClick,\n    discover = \"render\",\n    prefetch = \"none\",\n    relative,\n    reloadDocument,\n    replace: replace2,\n    state,\n    target,\n    to,\n    preventScrollReset,\n    viewTransition,\n    ...rest\n  }, forwardedRef) {\n    let { basename } = React10.useContext(NavigationContext);\n    let isAbsolute = typeof to === \"string\" && ABSOLUTE_URL_REGEX2.test(to);\n    let absoluteHref;\n    let isExternal = false;\n    if (typeof to === \"string\" && isAbsolute) {\n      absoluteHref = to;\n      if (isBrowser) {\n        try {\n          let currentUrl = new URL(window.location.href);\n          let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n          let path = stripBasename(targetUrl.pathname, basename);\n          if (targetUrl.origin === currentUrl.origin && path != null) {\n            to = path + targetUrl.search + targetUrl.hash;\n          } else {\n            isExternal = true;\n          }\n        } catch (e) {\n          warning(\n            false,\n            `<Link to=\"${to}\"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`\n          );\n        }\n      }\n    }\n    let href2 = useHref(to, { relative });\n    let [shouldPrefetch, prefetchRef, prefetchHandlers] = usePrefetchBehavior(\n      prefetch,\n      rest\n    );\n    let internalOnClick = useLinkClickHandler(to, {\n      replace: replace2,\n      state,\n      target,\n      preventScrollReset,\n      relative,\n      viewTransition\n    });\n    function handleClick(event) {\n      if (onClick) onClick(event);\n      if (!event.defaultPrevented) {\n        internalOnClick(event);\n      }\n    }\n    let link = (\n      // eslint-disable-next-line jsx-a11y/anchor-has-content\n      /* @__PURE__ */ React10.createElement(\n        \"a\",\n        {\n          ...rest,\n          ...prefetchHandlers,\n          href: absoluteHref || href2,\n          onClick: isExternal || reloadDocument ? onClick : handleClick,\n          ref: mergeRefs(forwardedRef, prefetchRef),\n          target,\n          \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n        }\n      )\n    );\n    return shouldPrefetch && !isAbsolute ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, link, /* @__PURE__ */ React10.createElement(PrefetchPageLinks, { page: href2 })) : link;\n  }\n);\nLink.displayName = \"Link\";\nvar NavLink = React10.forwardRef(\n  function NavLinkWithRef({\n    \"aria-current\": ariaCurrentProp = \"page\",\n    caseSensitive = false,\n    className: classNameProp = \"\",\n    end = false,\n    style: styleProp,\n    to,\n    viewTransition,\n    children,\n    ...rest\n  }, ref) {\n    let path = useResolvedPath(to, { relative: rest.relative });\n    let location = useLocation();\n    let routerState = React10.useContext(DataRouterStateContext);\n    let { navigator: navigator2, basename } = React10.useContext(NavigationContext);\n    let isTransitioning = routerState != null && // Conditional usage is OK here because the usage of a data router is static\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useViewTransitionState(path) && viewTransition === true;\n    let toPathname = navigator2.encodeLocation ? navigator2.encodeLocation(path).pathname : path.pathname;\n    let locationPathname = location.pathname;\n    let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n    if (!caseSensitive) {\n      locationPathname = locationPathname.toLowerCase();\n      nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n      toPathname = toPathname.toLowerCase();\n    }\n    if (nextLocationPathname && basename) {\n      nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n    }\n    const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n    let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n    let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n    let renderProps = {\n      isActive,\n      isPending,\n      isTransitioning\n    };\n    let ariaCurrent = isActive ? ariaCurrentProp : void 0;\n    let className;\n    if (typeof classNameProp === \"function\") {\n      className = classNameProp(renderProps);\n    } else {\n      className = [\n        classNameProp,\n        isActive ? \"active\" : null,\n        isPending ? \"pending\" : null,\n        isTransitioning ? \"transitioning\" : null\n      ].filter(Boolean).join(\" \");\n    }\n    let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n    return /* @__PURE__ */ React10.createElement(\n      Link,\n      {\n        ...rest,\n        \"aria-current\": ariaCurrent,\n        className,\n        ref,\n        style,\n        to,\n        viewTransition\n      },\n      typeof children === \"function\" ? children(renderProps) : children\n    );\n  }\n);\nNavLink.displayName = \"NavLink\";\nvar Form = React10.forwardRef(\n  ({\n    discover = \"render\",\n    fetcherKey,\n    navigate,\n    reloadDocument,\n    replace: replace2,\n    state,\n    method = defaultMethod,\n    action,\n    onSubmit,\n    relative,\n    preventScrollReset,\n    viewTransition,\n    ...props\n  }, forwardedRef) => {\n    let submit = useSubmit();\n    let formAction = useFormAction(action, { relative });\n    let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n    let isAbsolute = typeof action === \"string\" && ABSOLUTE_URL_REGEX2.test(action);\n    let submitHandler = (event) => {\n      onSubmit && onSubmit(event);\n      if (event.defaultPrevented) return;\n      event.preventDefault();\n      let submitter = event.nativeEvent.submitter;\n      let submitMethod = submitter?.getAttribute(\"formmethod\") || method;\n      submit(submitter || event.currentTarget, {\n        fetcherKey,\n        method: submitMethod,\n        navigate,\n        replace: replace2,\n        state,\n        relative,\n        preventScrollReset,\n        viewTransition\n      });\n    };\n    return /* @__PURE__ */ React10.createElement(\n      \"form\",\n      {\n        ref: forwardedRef,\n        method: formMethod,\n        action: formAction,\n        onSubmit: reloadDocument ? onSubmit : submitHandler,\n        ...props,\n        \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n      }\n    );\n  }\n);\nForm.displayName = \"Form\";\nfunction ScrollRestoration({\n  getKey,\n  storageKey,\n  ...props\n}) {\n  let remixContext = React10.useContext(FrameworkContext);\n  let { basename } = React10.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  useScrollRestoration({ getKey, storageKey });\n  let ssrKey = React10.useMemo(\n    () => {\n      if (!remixContext || !getKey) return null;\n      let userKey = getScrollRestorationKey(\n        location,\n        matches,\n        basename,\n        getKey\n      );\n      return userKey !== location.key ? userKey : null;\n    },\n    // Nah, we only need this the first time for the SSR render\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    []\n  );\n  if (!remixContext || remixContext.isSpaMode) {\n    return null;\n  }\n  let restoreScroll = ((storageKey2, restoreKey) => {\n    if (!window.history.state || !window.history.state.key) {\n      let key = Math.random().toString(32).slice(2);\n      window.history.replaceState({ key }, \"\");\n    }\n    try {\n      let positions = JSON.parse(sessionStorage.getItem(storageKey2) || \"{}\");\n      let storedY = positions[restoreKey || window.history.state.key];\n      if (typeof storedY === \"number\") {\n        window.scrollTo(0, storedY);\n      }\n    } catch (error) {\n      console.error(error);\n      sessionStorage.removeItem(storageKey2);\n    }\n  }).toString();\n  return /* @__PURE__ */ React10.createElement(\n    \"script\",\n    {\n      ...props,\n      suppressHydrationWarning: true,\n      dangerouslySetInnerHTML: {\n        __html: `(${restoreScroll})(${JSON.stringify(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY\n        )}, ${JSON.stringify(ssrKey)})`\n      }\n    }\n  );\n}\nScrollRestoration.displayName = \"ScrollRestoration\";\nfunction getDataRouterConsoleError2(hookName) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext3(hookName) {\n  let ctx = React10.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError2(hookName));\n  return ctx;\n}\nfunction useDataRouterState2(hookName) {\n  let state = React10.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError2(hookName));\n  return state;\n}\nfunction useLinkClickHandler(to, {\n  target,\n  replace: replaceProp,\n  state,\n  preventScrollReset,\n  relative,\n  viewTransition\n} = {}) {\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, { relative });\n  return React10.useCallback(\n    (event) => {\n      if (shouldProcessLinkClick(event, target)) {\n        event.preventDefault();\n        let replace2 = replaceProp !== void 0 ? replaceProp : createPath(location) === createPath(path);\n        navigate(to, {\n          replace: replace2,\n          state,\n          preventScrollReset,\n          relative,\n          viewTransition\n        });\n      }\n    },\n    [\n      location,\n      navigate,\n      path,\n      replaceProp,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      relative,\n      viewTransition\n    ]\n  );\n}\nfunction useSearchParams(defaultInit) {\n  warning(\n    typeof URLSearchParams !== \"undefined\",\n    `You cannot use the \\`useSearchParams\\` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.`\n  );\n  let defaultSearchParamsRef = React10.useRef(createSearchParams(defaultInit));\n  let hasSetSearchParamsRef = React10.useRef(false);\n  let location = useLocation();\n  let searchParams = React10.useMemo(\n    () => (\n      // Only merge in the defaults if we haven't yet called setSearchParams.\n      // Once we call that we want those to take precedence, otherwise you can't\n      // remove a param with setSearchParams({}) if it has an initial value\n      getSearchParamsForLocation(\n        location.search,\n        hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n      )\n    ),\n    [location.search]\n  );\n  let navigate = useNavigate();\n  let setSearchParams = React10.useCallback(\n    (nextInit, navigateOptions) => {\n      const newSearchParams = createSearchParams(\n        typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n      );\n      hasSetSearchParamsRef.current = true;\n      navigate(\"?\" + newSearchParams, navigateOptions);\n    },\n    [navigate, searchParams]\n  );\n  return [searchParams, setSearchParams];\n}\nvar fetcherId = 0;\nvar getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\nfunction useSubmit() {\n  let { router } = useDataRouterContext3(\"useSubmit\" /* UseSubmit */);\n  let { basename } = React10.useContext(NavigationContext);\n  let currentRouteId = useRouteId();\n  return React10.useCallback(\n    async (target, options = {}) => {\n      let { action, method, encType, formData, body } = getFormSubmissionInfo(\n        target,\n        basename\n      );\n      if (options.navigate === false) {\n        let key = options.fetcherKey || getUniqueFetcherId();\n        await router.fetch(key, currentRouteId, options.action || action, {\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || method,\n          formEncType: options.encType || encType,\n          flushSync: options.flushSync\n        });\n      } else {\n        await router.navigate(options.action || action, {\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || method,\n          formEncType: options.encType || encType,\n          replace: options.replace,\n          state: options.state,\n          fromRouteId: currentRouteId,\n          flushSync: options.flushSync,\n          viewTransition: options.viewTransition\n        });\n      }\n    },\n    [router, basename, currentRouteId]\n  );\n}\nfunction useFormAction(action, { relative } = {}) {\n  let { basename } = React10.useContext(NavigationContext);\n  let routeContext = React10.useContext(RouteContext);\n  invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n  let [match] = routeContext.matches.slice(-1);\n  let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n  let location = useLocation();\n  if (action == null) {\n    path.search = location.search;\n    let params = new URLSearchParams(path.search);\n    let indexValues = params.getAll(\"index\");\n    let hasNakedIndexParam = indexValues.some((v) => v === \"\");\n    if (hasNakedIndexParam) {\n      params.delete(\"index\");\n      indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? `?${qs}` : \"\";\n    }\n  }\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n  }\n  if (basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n  return createPath(path);\n}\nfunction useFetcher({\n  key\n} = {}) {\n  let { router } = useDataRouterContext3(\"useFetcher\" /* UseFetcher */);\n  let state = useDataRouterState2(\"useFetcher\" /* UseFetcher */);\n  let fetcherData = React10.useContext(FetchersContext);\n  let route = React10.useContext(RouteContext);\n  let routeId = route.matches[route.matches.length - 1]?.route.id;\n  invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n  invariant(route, `useFetcher must be used inside a RouteContext`);\n  invariant(\n    routeId != null,\n    `useFetcher can only be used on routes that contain a unique \"id\"`\n  );\n  let defaultKey = React10.useId();\n  let [fetcherKey, setFetcherKey] = React10.useState(key || defaultKey);\n  if (key && key !== fetcherKey) {\n    setFetcherKey(key);\n  }\n  React10.useEffect(() => {\n    router.getFetcher(fetcherKey);\n    return () => router.deleteFetcher(fetcherKey);\n  }, [router, fetcherKey]);\n  let load = React10.useCallback(\n    async (href2, opts) => {\n      invariant(routeId, \"No routeId available for fetcher.load()\");\n      await router.fetch(fetcherKey, routeId, href2, opts);\n    },\n    [fetcherKey, routeId, router]\n  );\n  let submitImpl = useSubmit();\n  let submit = React10.useCallback(\n    async (target, opts) => {\n      await submitImpl(target, {\n        ...opts,\n        navigate: false,\n        fetcherKey\n      });\n    },\n    [fetcherKey, submitImpl]\n  );\n  let FetcherForm = React10.useMemo(() => {\n    let FetcherForm2 = React10.forwardRef(\n      (props, ref) => {\n        return /* @__PURE__ */ React10.createElement(Form, { ...props, navigate: false, fetcherKey, ref });\n      }\n    );\n    FetcherForm2.displayName = \"fetcher.Form\";\n    return FetcherForm2;\n  }, [fetcherKey]);\n  let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n  let data2 = fetcherData.get(fetcherKey);\n  let fetcherWithComponents = React10.useMemo(\n    () => ({\n      Form: FetcherForm,\n      submit,\n      load,\n      ...fetcher,\n      data: data2\n    }),\n    [FetcherForm, submit, load, fetcher, data2]\n  );\n  return fetcherWithComponents;\n}\nfunction useFetchers() {\n  let state = useDataRouterState2(\"useFetchers\" /* UseFetchers */);\n  return Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n    ...fetcher,\n    key\n  }));\n}\nvar SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nvar savedScrollPositions = {};\nfunction getScrollRestorationKey(location, matches, basename, getKey) {\n  let key = null;\n  if (getKey) {\n    if (basename !== \"/\") {\n      key = getKey(\n        {\n          ...location,\n          pathname: stripBasename(location.pathname, basename) || location.pathname\n        },\n        matches\n      );\n    } else {\n      key = getKey(location, matches);\n    }\n  }\n  if (key == null) {\n    key = location.key;\n  }\n  return key;\n}\nfunction useScrollRestoration({\n  getKey,\n  storageKey\n} = {}) {\n  let { router } = useDataRouterContext3(\"useScrollRestoration\" /* UseScrollRestoration */);\n  let { restoreScrollPosition, preventScrollReset } = useDataRouterState2(\n    \"useScrollRestoration\" /* UseScrollRestoration */\n  );\n  let { basename } = React10.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation();\n  React10.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []);\n  usePageHide(\n    React10.useCallback(() => {\n      if (navigation.state === \"idle\") {\n        let key = getScrollRestorationKey(location, matches, basename, getKey);\n        savedScrollPositions[key] = window.scrollY;\n      }\n      try {\n        sessionStorage.setItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n          JSON.stringify(savedScrollPositions)\n        );\n      } catch (error) {\n        warning(\n          false,\n          `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n        );\n      }\n      window.history.scrollRestoration = \"auto\";\n    }, [navigation.state, getKey, basename, location, matches, storageKey])\n  );\n  if (typeof document !== \"undefined\") {\n    React10.useLayoutEffect(() => {\n      try {\n        let sessionPositions = sessionStorage.getItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY\n        );\n        if (sessionPositions) {\n          savedScrollPositions = JSON.parse(sessionPositions);\n        }\n      } catch (e) {\n      }\n    }, [storageKey]);\n    React10.useLayoutEffect(() => {\n      let disableScrollRestoration = router?.enableScrollRestoration(\n        savedScrollPositions,\n        () => window.scrollY,\n        getKey ? (location2, matches2) => getScrollRestorationKey(location2, matches2, basename, getKey) : void 0\n      );\n      return () => disableScrollRestoration && disableScrollRestoration();\n    }, [router, basename, getKey]);\n    React10.useLayoutEffect(() => {\n      if (restoreScrollPosition === false) {\n        return;\n      }\n      if (typeof restoreScrollPosition === \"number\") {\n        window.scrollTo(0, restoreScrollPosition);\n        return;\n      }\n      if (location.hash) {\n        let el = document.getElementById(\n          decodeURIComponent(location.hash.slice(1))\n        );\n        if (el) {\n          el.scrollIntoView();\n          return;\n        }\n      }\n      if (preventScrollReset === true) {\n        return;\n      }\n      window.scrollTo(0, 0);\n    }, [location, restoreScrollPosition, preventScrollReset]);\n  }\n}\nfunction useBeforeUnload(callback, options) {\n  let { capture } = options || {};\n  React10.useEffect(() => {\n    let opts = capture != null ? { capture } : void 0;\n    window.addEventListener(\"beforeunload\", callback, opts);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback, opts);\n    };\n  }, [callback, capture]);\n}\nfunction usePageHide(callback, options) {\n  let { capture } = options || {};\n  React10.useEffect(() => {\n    let opts = capture != null ? { capture } : void 0;\n    window.addEventListener(\"pagehide\", callback, opts);\n    return () => {\n      window.removeEventListener(\"pagehide\", callback, opts);\n    };\n  }, [callback, capture]);\n}\nfunction usePrompt({\n  when,\n  message\n}) {\n  let blocker = useBlocker(when);\n  React10.useEffect(() => {\n    if (blocker.state === \"blocked\") {\n      let proceed = window.confirm(message);\n      if (proceed) {\n        setTimeout(blocker.proceed, 0);\n      } else {\n        blocker.reset();\n      }\n    }\n  }, [blocker, message]);\n  React10.useEffect(() => {\n    if (blocker.state === \"blocked\" && !when) {\n      blocker.reset();\n    }\n  }, [blocker, when]);\n}\nfunction useViewTransitionState(to, opts = {}) {\n  let vtContext = React10.useContext(ViewTransitionContext);\n  invariant(\n    vtContext != null,\n    \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  Did you accidentally import `RouterProvider` from `react-router`?\"\n  );\n  let { basename } = useDataRouterContext3(\n    \"useViewTransitionState\" /* useViewTransitionState */\n  );\n  let path = useResolvedPath(to, { relative: opts.relative });\n  if (!vtContext.isTransitioning) {\n    return false;\n  }\n  let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n  let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n  return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n\n// lib/dom/server.tsx\nimport * as React11 from \"react\";\nfunction StaticRouter({\n  basename,\n  children,\n  location: locationProp = \"/\"\n}) {\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n  let action = \"POP\" /* Pop */;\n  let location = {\n    pathname: locationProp.pathname || \"/\",\n    search: locationProp.search || \"\",\n    hash: locationProp.hash || \"\",\n    state: locationProp.state != null ? locationProp.state : null,\n    key: locationProp.key || \"default\"\n  };\n  let staticNavigator = getStatelessNavigator();\n  return /* @__PURE__ */ React11.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location,\n      navigationType: action,\n      navigator: staticNavigator,\n      static: true\n    }\n  );\n}\nfunction StaticRouterProvider({\n  context,\n  router,\n  hydrate = true,\n  nonce\n}) {\n  invariant(\n    router && context,\n    \"You must provide `router` and `context` to <StaticRouterProvider>\"\n  );\n  let dataRouterContext = {\n    router,\n    navigator: getStatelessNavigator(),\n    static: true,\n    staticContext: context,\n    basename: context.basename || \"/\"\n  };\n  let fetchersContext = /* @__PURE__ */ new Map();\n  let hydrateScript = \"\";\n  if (hydrate !== false) {\n    let data2 = {\n      loaderData: context.loaderData,\n      actionData: context.actionData,\n      errors: serializeErrors(context.errors)\n    };\n    let json = htmlEscape(JSON.stringify(JSON.stringify(data2)));\n    hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n  }\n  let { state } = dataRouterContext.router;\n  return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React11.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React11.createElement(FetchersContext.Provider, { value: fetchersContext }, /* @__PURE__ */ React11.createElement(ViewTransitionContext.Provider, { value: { isTransitioning: false } }, /* @__PURE__ */ React11.createElement(\n    Router,\n    {\n      basename: dataRouterContext.basename,\n      location: state.location,\n      navigationType: state.historyAction,\n      navigator: dataRouterContext.navigator,\n      static: dataRouterContext.static\n    },\n    /* @__PURE__ */ React11.createElement(\n      DataRoutes2,\n      {\n        routes: router.routes,\n        future: router.future,\n        state\n      }\n    )\n  ))))), hydrateScript ? /* @__PURE__ */ React11.createElement(\n    \"script\",\n    {\n      suppressHydrationWarning: true,\n      nonce,\n      dangerouslySetInnerHTML: { __html: hydrateScript }\n    }\n  ) : null);\n}\nfunction DataRoutes2({\n  routes,\n  future,\n  state\n}) {\n  return useRoutesImpl(routes, void 0, state, future);\n}\nfunction serializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (isRouteErrorResponse(val)) {\n      serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n    } else if (val instanceof Error) {\n      serialized[key] = {\n        message: val.message,\n        __type: \"Error\",\n        // If this is a subclass (i.e., ReferenceError), send up the type so we\n        // can re-create the same type during hydration.\n        ...val.name !== \"Error\" ? {\n          __subType: val.name\n        } : {}\n      };\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\nfunction getStatelessNavigator() {\n  return {\n    createHref,\n    encodeLocation,\n    push(to) {\n      throw new Error(\n        `You cannot use navigator.push() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`\n      );\n    },\n    replace(to) {\n      throw new Error(\n        `You cannot use navigator.replace() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere in your app.`\n      );\n    },\n    go(delta) {\n      throw new Error(\n        `You cannot use navigator.go() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${delta})\\` somewhere in your app.`\n      );\n    },\n    back() {\n      throw new Error(\n        `You cannot use navigator.back() on the server because it is a stateless environment.`\n      );\n    },\n    forward() {\n      throw new Error(\n        `You cannot use navigator.forward() on the server because it is a stateless environment.`\n      );\n    }\n  };\n}\nfunction createStaticHandler2(routes, opts) {\n  return createStaticHandler(routes, {\n    ...opts,\n    mapRouteProperties\n  });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n  let manifest = {};\n  let dataRoutes = convertRoutesToDataRoutes(\n    routes,\n    mapRouteProperties,\n    void 0,\n    manifest\n  );\n  let matches = context.matches.map((match) => {\n    let route = manifest[match.route.id] || match.route;\n    return {\n      ...match,\n      route\n    };\n  });\n  let msg = (method) => `You cannot use router.${method}() on the server because it is a stateless environment`;\n  return {\n    get basename() {\n      return context.basename;\n    },\n    get future() {\n      return {\n        ...opts?.future\n      };\n    },\n    get state() {\n      return {\n        historyAction: \"POP\" /* Pop */,\n        location: context.location,\n        matches,\n        loaderData: context.loaderData,\n        actionData: context.actionData,\n        errors: context.errors,\n        initialized: true,\n        navigation: IDLE_NAVIGATION,\n        restoreScrollPosition: null,\n        preventScrollReset: false,\n        revalidation: \"idle\",\n        fetchers: /* @__PURE__ */ new Map(),\n        blockers: /* @__PURE__ */ new Map()\n      };\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    get window() {\n      return void 0;\n    },\n    initialize() {\n      throw msg(\"initialize\");\n    },\n    subscribe() {\n      throw msg(\"subscribe\");\n    },\n    enableScrollRestoration() {\n      throw msg(\"enableScrollRestoration\");\n    },\n    navigate() {\n      throw msg(\"navigate\");\n    },\n    fetch() {\n      throw msg(\"fetch\");\n    },\n    revalidate() {\n      throw msg(\"revalidate\");\n    },\n    createHref,\n    encodeLocation,\n    getFetcher() {\n      return IDLE_FETCHER;\n    },\n    deleteFetcher() {\n      throw msg(\"deleteFetcher\");\n    },\n    dispose() {\n      throw msg(\"dispose\");\n    },\n    getBlocker() {\n      return IDLE_BLOCKER;\n    },\n    deleteBlocker() {\n      throw msg(\"deleteBlocker\");\n    },\n    patchRoutes() {\n      throw msg(\"patchRoutes\");\n    },\n    _internalFetchControllers: /* @__PURE__ */ new Map(),\n    _internalSetRoutes() {\n      throw msg(\"_internalSetRoutes\");\n    }\n  };\n}\nfunction createHref(to) {\n  return typeof to === \"string\" ? to : createPath(to);\n}\nfunction encodeLocation(to) {\n  let href2 = typeof to === \"string\" ? to : createPath(to);\n  href2 = href2.replace(/ $/, \"%20\");\n  let encoded = ABSOLUTE_URL_REGEX3.test(href2) ? new URL(href2) : new URL(href2, \"http://localhost\");\n  return {\n    pathname: encoded.pathname,\n    search: encoded.search,\n    hash: encoded.hash\n  };\n}\nvar ABSOLUTE_URL_REGEX3 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar ESCAPE_LOOKUP2 = {\n  \"&\": \"\\\\u0026\",\n  \">\": \"\\\\u003e\",\n  \"<\": \"\\\\u003c\",\n  \"\\u2028\": \"\\\\u2028\",\n  \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX2 = /[&><\\u2028\\u2029]/g;\nfunction htmlEscape(str) {\n  return str.replace(ESCAPE_REGEX2, (match) => ESCAPE_LOOKUP2[match]);\n}\n\n// lib/dom/ssr/server.tsx\nimport * as React12 from \"react\";\nfunction ServerRouter({\n  context,\n  url,\n  nonce\n}) {\n  if (typeof url === \"string\") {\n    url = new URL(url);\n  }\n  let { manifest, routeModules, criticalCss, serverHandoffString } = context;\n  let routes = createServerRoutes(\n    manifest.routes,\n    routeModules,\n    context.future,\n    context.isSpaMode\n  );\n  context.staticHandlerContext.loaderData = {\n    ...context.staticHandlerContext.loaderData\n  };\n  for (let match of context.staticHandlerContext.matches) {\n    let routeId = match.route.id;\n    let route = routeModules[routeId];\n    let manifestRoute = context.manifest.routes[routeId];\n    if (route && manifestRoute && shouldHydrateRouteLoader(manifestRoute, route, context.isSpaMode) && (route.HydrateFallback || !manifestRoute.hasLoader)) {\n      delete context.staticHandlerContext.loaderData[routeId];\n    }\n  }\n  let router = createStaticRouter(routes, context.staticHandlerContext);\n  return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(\n    FrameworkContext.Provider,\n    {\n      value: {\n        manifest,\n        routeModules,\n        criticalCss,\n        serverHandoffString,\n        future: context.future,\n        ssr: context.ssr,\n        isSpaMode: context.isSpaMode,\n        serializeError: context.serializeError,\n        renderMeta: context.renderMeta\n      }\n    },\n    /* @__PURE__ */ React12.createElement(RemixErrorBoundary, { location: router.state.location }, /* @__PURE__ */ React12.createElement(\n      StaticRouterProvider,\n      {\n        router,\n        context: context.staticHandlerContext,\n        hydrate: false\n      }\n    ))\n  ), context.serverHandoffStream ? /* @__PURE__ */ React12.createElement(React12.Suspense, null, /* @__PURE__ */ React12.createElement(\n    StreamTransfer,\n    {\n      context,\n      identifier: 0,\n      reader: context.serverHandoffStream.getReader(),\n      textDecoder: new TextDecoder(),\n      nonce\n    }\n  )) : null);\n}\n\n// lib/dom/ssr/routes-test-stub.tsx\nimport * as React13 from \"react\";\nfunction createRoutesStub(routes, context = {}) {\n  return function RoutesTestStub({\n    initialEntries,\n    initialIndex,\n    hydrationData,\n    future\n  }) {\n    let routerRef = React13.useRef();\n    let remixContextRef = React13.useRef();\n    if (routerRef.current == null) {\n      remixContextRef.current = {\n        future: {},\n        manifest: {\n          routes: {},\n          entry: { imports: [], module: \"\" },\n          url: \"\",\n          version: \"\"\n        },\n        routeModules: {},\n        ssr: false,\n        isSpaMode: false\n      };\n      let patched = processRoutes(\n        // @ts-expect-error loader/action context types don't match :/\n        convertRoutesToDataRoutes(routes, (r) => r),\n        context,\n        remixContextRef.current.manifest,\n        remixContextRef.current.routeModules\n      );\n      routerRef.current = createMemoryRouter(patched, {\n        initialEntries,\n        initialIndex,\n        hydrationData\n      });\n    }\n    return /* @__PURE__ */ React13.createElement(FrameworkContext.Provider, { value: remixContextRef.current }, /* @__PURE__ */ React13.createElement(RouterProvider, { router: routerRef.current }));\n  };\n}\nfunction processRoutes(routes, context, manifest, routeModules, parentId) {\n  return routes.map((route) => {\n    if (!route.id) {\n      throw new Error(\n        \"Expected a route.id in @remix-run/testing processRoutes() function\"\n      );\n    }\n    let { loader, action } = route;\n    let newRoute = {\n      id: route.id,\n      path: route.path,\n      index: route.index,\n      Component: route.Component,\n      HydrateFallback: route.HydrateFallback,\n      ErrorBoundary: route.ErrorBoundary,\n      action: action ? (args) => action({ ...args, context }) : void 0,\n      loader: loader ? (args) => loader({ ...args, context }) : void 0,\n      handle: route.handle,\n      shouldRevalidate: route.shouldRevalidate\n    };\n    let entryRoute = {\n      id: route.id,\n      path: route.path,\n      index: route.index,\n      parentId,\n      hasAction: route.action != null,\n      hasLoader: route.loader != null,\n      // When testing routes, you should just be stubbing loader/action, not\n      // trying to re-implement the full loader/clientLoader/SSR/hydration flow.\n      // That is better tested via E2E tests.\n      hasClientAction: false,\n      hasClientLoader: false,\n      hasErrorBoundary: route.ErrorBoundary != null,\n      // any need for these?\n      module: \"build/stub-path-to-module.js\",\n      clientActionModule: void 0,\n      clientLoaderModule: void 0,\n      hydrateFallbackModule: void 0\n    };\n    manifest.routes[newRoute.id] = entryRoute;\n    routeModules[route.id] = {\n      default: route.Component || Outlet,\n      ErrorBoundary: route.ErrorBoundary || void 0,\n      handle: route.handle,\n      links: route.links,\n      meta: route.meta,\n      shouldRevalidate: route.shouldRevalidate\n    };\n    if (route.children) {\n      newRoute.children = processRoutes(\n        route.children,\n        context,\n        manifest,\n        routeModules,\n        newRoute.id\n      );\n    }\n    return newRoute;\n  });\n}\n\n// lib/server-runtime/cookies.ts\nimport { parse, serialize } from \"cookie\";\n\n// lib/server-runtime/crypto.ts\nvar encoder = new TextEncoder();\nvar sign = async (value, secret) => {\n  let data2 = encoder.encode(value);\n  let key = await createKey2(secret, [\"sign\"]);\n  let signature = await crypto.subtle.sign(\"HMAC\", key, data2);\n  let hash = btoa(String.fromCharCode(...new Uint8Array(signature))).replace(\n    /=+$/,\n    \"\"\n  );\n  return value + \".\" + hash;\n};\nvar unsign = async (cookie, secret) => {\n  let index = cookie.lastIndexOf(\".\");\n  let value = cookie.slice(0, index);\n  let hash = cookie.slice(index + 1);\n  let data2 = encoder.encode(value);\n  let key = await createKey2(secret, [\"verify\"]);\n  let signature = byteStringToUint8Array(atob(hash));\n  let valid = await crypto.subtle.verify(\"HMAC\", key, signature, data2);\n  return valid ? value : false;\n};\nvar createKey2 = async (secret, usages) => crypto.subtle.importKey(\n  \"raw\",\n  encoder.encode(secret),\n  { name: \"HMAC\", hash: \"SHA-256\" },\n  false,\n  usages\n);\nfunction byteStringToUint8Array(byteString) {\n  let array = new Uint8Array(byteString.length);\n  for (let i = 0; i < byteString.length; i++) {\n    array[i] = byteString.charCodeAt(i);\n  }\n  return array;\n}\n\n// lib/server-runtime/cookies.ts\nvar createCookie = (name, cookieOptions = {}) => {\n  let { secrets = [], ...options } = {\n    path: \"/\",\n    sameSite: \"lax\",\n    ...cookieOptions\n  };\n  warnOnceAboutExpiresCookie(name, options.expires);\n  return {\n    get name() {\n      return name;\n    },\n    get isSigned() {\n      return secrets.length > 0;\n    },\n    get expires() {\n      return typeof options.maxAge !== \"undefined\" ? new Date(Date.now() + options.maxAge * 1e3) : options.expires;\n    },\n    async parse(cookieHeader, parseOptions) {\n      if (!cookieHeader) return null;\n      let cookies = parse(cookieHeader, { ...options, ...parseOptions });\n      if (name in cookies) {\n        let value = cookies[name];\n        if (typeof value === \"string\" && value !== \"\") {\n          let decoded = await decodeCookieValue(value, secrets);\n          return decoded;\n        } else {\n          return \"\";\n        }\n      } else {\n        return null;\n      }\n    },\n    async serialize(value, serializeOptions) {\n      return serialize(\n        name,\n        value === \"\" ? \"\" : await encodeCookieValue(value, secrets),\n        {\n          ...options,\n          ...serializeOptions\n        }\n      );\n    }\n  };\n};\nvar isCookie = (object) => {\n  return object != null && typeof object.name === \"string\" && typeof object.isSigned === \"boolean\" && typeof object.parse === \"function\" && typeof object.serialize === \"function\";\n};\nasync function encodeCookieValue(value, secrets) {\n  let encoded = encodeData(value);\n  if (secrets.length > 0) {\n    encoded = await sign(encoded, secrets[0]);\n  }\n  return encoded;\n}\nasync function decodeCookieValue(value, secrets) {\n  if (secrets.length > 0) {\n    for (let secret of secrets) {\n      let unsignedValue = await unsign(value, secret);\n      if (unsignedValue !== false) {\n        return decodeData(unsignedValue);\n      }\n    }\n    return null;\n  }\n  return decodeData(value);\n}\nfunction encodeData(value) {\n  return btoa(myUnescape(encodeURIComponent(JSON.stringify(value))));\n}\nfunction decodeData(value) {\n  try {\n    return JSON.parse(decodeURIComponent(myEscape(atob(value))));\n  } catch (error) {\n    return {};\n  }\n}\nfunction myEscape(value) {\n  let str = value.toString();\n  let result = \"\";\n  let index = 0;\n  let chr, code;\n  while (index < str.length) {\n    chr = str.charAt(index++);\n    if (/[\\w*+\\-./@]/.exec(chr)) {\n      result += chr;\n    } else {\n      code = chr.charCodeAt(0);\n      if (code < 256) {\n        result += \"%\" + hex(code, 2);\n      } else {\n        result += \"%u\" + hex(code, 4).toUpperCase();\n      }\n    }\n  }\n  return result;\n}\nfunction hex(code, length) {\n  let result = code.toString(16);\n  while (result.length < length) result = \"0\" + result;\n  return result;\n}\nfunction myUnescape(value) {\n  let str = value.toString();\n  let result = \"\";\n  let index = 0;\n  let chr, part;\n  while (index < str.length) {\n    chr = str.charAt(index++);\n    if (chr === \"%\") {\n      if (str.charAt(index) === \"u\") {\n        part = str.slice(index + 1, index + 5);\n        if (/^[\\da-f]{4}$/i.exec(part)) {\n          result += String.fromCharCode(parseInt(part, 16));\n          index += 5;\n          continue;\n        }\n      } else {\n        part = str.slice(index, index + 2);\n        if (/^[\\da-f]{2}$/i.exec(part)) {\n          result += String.fromCharCode(parseInt(part, 16));\n          index += 2;\n          continue;\n        }\n      }\n    }\n    result += chr;\n  }\n  return result;\n}\nfunction warnOnceAboutExpiresCookie(name, expires) {\n  warnOnce(\n    !expires,\n    `The \"${name}\" cookie has an \"expires\" property set. This will cause the expires value to not be updated when the session is committed. Instead, you should set the expires value when serializing the cookie. You can use \\`commitSession(session, { expires })\\` if using a session storage object, or \\`cookie.serialize(\"value\", { expires })\\` if you're using the cookie directly.`\n  );\n}\n\n// lib/server-runtime/entry.ts\nfunction createEntryRouteModules(manifest) {\n  return Object.keys(manifest).reduce((memo2, routeId) => {\n    let route = manifest[routeId];\n    if (route) {\n      memo2[routeId] = route.module;\n    }\n    return memo2;\n  }, {});\n}\n\n// lib/server-runtime/mode.ts\nvar ServerMode = /* @__PURE__ */ ((ServerMode2) => {\n  ServerMode2[\"Development\"] = \"development\";\n  ServerMode2[\"Production\"] = \"production\";\n  ServerMode2[\"Test\"] = \"test\";\n  return ServerMode2;\n})(ServerMode || {});\nfunction isServerMode(value) {\n  return value === \"development\" /* Development */ || value === \"production\" /* Production */ || value === \"test\" /* Test */;\n}\n\n// lib/server-runtime/errors.ts\nfunction sanitizeError(error, serverMode) {\n  if (error instanceof Error && serverMode !== \"development\" /* Development */) {\n    let sanitized = new Error(\"Unexpected Server Error\");\n    sanitized.stack = void 0;\n    return sanitized;\n  }\n  return error;\n}\nfunction sanitizeErrors(errors, serverMode) {\n  return Object.entries(errors).reduce((acc, [routeId, error]) => {\n    return Object.assign(acc, { [routeId]: sanitizeError(error, serverMode) });\n  }, {});\n}\nfunction serializeError(error, serverMode) {\n  let sanitized = sanitizeError(error, serverMode);\n  return {\n    message: sanitized.message,\n    stack: sanitized.stack\n  };\n}\nfunction serializeErrors2(errors, serverMode) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (isRouteErrorResponse(val)) {\n      serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n    } else if (val instanceof Error) {\n      let sanitized = sanitizeError(val, serverMode);\n      serialized[key] = {\n        message: sanitized.message,\n        stack: sanitized.stack,\n        __type: \"Error\",\n        // If this is a subclass (i.e., ReferenceError), send up the type so we\n        // can re-create the same type during hydration.  This will only apply\n        // in dev mode since all production errors are sanitized to normal\n        // Error instances\n        ...sanitized.name !== \"Error\" ? {\n          __subType: sanitized.name\n        } : {}\n      };\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\n\n// lib/server-runtime/routeMatching.ts\nfunction matchServerRoutes(routes, pathname, basename) {\n  let matches = matchRoutes(\n    routes,\n    pathname,\n    basename\n  );\n  if (!matches) return null;\n  return matches.map((match) => ({\n    params: match.params,\n    pathname: match.pathname,\n    route: match.route\n  }));\n}\n\n// lib/server-runtime/data.ts\nasync function callRouteHandler(handler, args) {\n  let result = await handler({\n    request: stripRoutesParam(stripIndexParam2(args.request)),\n    params: args.params,\n    context: args.context\n  });\n  if (isDataWithResponseInit(result) && result.init && result.init.status && isRedirectStatusCode(result.init.status)) {\n    throw new Response(null, result.init);\n  }\n  return result;\n}\nfunction stripIndexParam2(request) {\n  let url = new URL(request.url);\n  let indexValues = url.searchParams.getAll(\"index\");\n  url.searchParams.delete(\"index\");\n  let indexValuesToKeep = [];\n  for (let indexValue of indexValues) {\n    if (indexValue) {\n      indexValuesToKeep.push(indexValue);\n    }\n  }\n  for (let toKeep of indexValuesToKeep) {\n    url.searchParams.append(\"index\", toKeep);\n  }\n  let init = {\n    method: request.method,\n    body: request.body,\n    headers: request.headers,\n    signal: request.signal\n  };\n  if (init.body) {\n    init.duplex = \"half\";\n  }\n  return new Request(url.href, init);\n}\nfunction stripRoutesParam(request) {\n  let url = new URL(request.url);\n  url.searchParams.delete(\"_routes\");\n  let init = {\n    method: request.method,\n    body: request.body,\n    headers: request.headers,\n    signal: request.signal\n  };\n  if (init.body) {\n    init.duplex = \"half\";\n  }\n  return new Request(url.href, init);\n}\n\n// lib/server-runtime/invariant.ts\nfunction invariant3(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    console.error(\n      \"The following error is a bug in React Router; please open an issue! https://github.com/remix-run/react-router/issues/new/choose\"\n    );\n    throw new Error(message);\n  }\n}\n\n// lib/server-runtime/routes.ts\nfunction groupRoutesByParentId2(manifest) {\n  let routes = {};\n  Object.values(manifest).forEach((route) => {\n    if (route) {\n      let parentId = route.parentId || \"\";\n      if (!routes[parentId]) {\n        routes[parentId] = [];\n      }\n      routes[parentId].push(route);\n    }\n  });\n  return routes;\n}\nfunction createRoutes(manifest, parentId = \"\", routesByParentId = groupRoutesByParentId2(manifest)) {\n  return (routesByParentId[parentId] || []).map((route) => ({\n    ...route,\n    children: createRoutes(manifest, route.id, routesByParentId)\n  }));\n}\nfunction createStaticHandlerDataRoutes(manifest, future, parentId = \"\", routesByParentId = groupRoutesByParentId2(manifest)) {\n  return (routesByParentId[parentId] || []).map((route) => {\n    let commonRoute = {\n      // Always include root due to default boundaries\n      hasErrorBoundary: route.id === \"root\" || route.module.ErrorBoundary != null,\n      id: route.id,\n      path: route.path,\n      // Need to use RR's version in the param typed here to permit the optional\n      // context even though we know it'll always be provided in remix\n      loader: route.module.loader ? async (args) => {\n        if (args.request.headers.has(\"X-React-Router-Prerender-Data\")) {\n          const preRenderedData = args.request.headers.get(\n            \"X-React-Router-Prerender-Data\"\n          );\n          let encoded = preRenderedData ? decodeURI(preRenderedData) : preRenderedData;\n          invariant3(encoded, \"Missing prerendered data for route\");\n          let uint8array = new TextEncoder().encode(encoded);\n          let stream = new ReadableStream({\n            start(controller) {\n              controller.enqueue(uint8array);\n              controller.close();\n            }\n          });\n          let decoded = await decodeViaTurboStream(stream, global);\n          let data2 = decoded.value;\n          invariant3(\n            data2 && route.id in data2,\n            \"Unable to decode prerendered data\"\n          );\n          let result = data2[route.id];\n          invariant3(\"data\" in result, \"Unable to process prerendered data\");\n          return result.data;\n        }\n        let val = await callRouteHandler(route.module.loader, args);\n        return val;\n      } : void 0,\n      action: route.module.action ? (args) => callRouteHandler(route.module.action, args) : void 0,\n      handle: route.module.handle\n    };\n    return route.index ? {\n      index: true,\n      ...commonRoute\n    } : {\n      caseSensitive: route.caseSensitive,\n      children: createStaticHandlerDataRoutes(\n        manifest,\n        future,\n        route.id,\n        routesByParentId\n      ),\n      ...commonRoute\n    };\n  });\n}\n\n// lib/server-runtime/markup.ts\nvar ESCAPE_LOOKUP3 = {\n  \"&\": \"\\\\u0026\",\n  \">\": \"\\\\u003e\",\n  \"<\": \"\\\\u003c\",\n  \"\\u2028\": \"\\\\u2028\",\n  \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX3 = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml2(html) {\n  return html.replace(ESCAPE_REGEX3, (match) => ESCAPE_LOOKUP3[match]);\n}\n\n// lib/server-runtime/serverHandoff.ts\nfunction createServerHandoffString(serverHandoff) {\n  return escapeHtml2(JSON.stringify(serverHandoff));\n}\n\n// lib/server-runtime/dev.ts\nvar globalDevServerHooksKey = \"__reactRouterDevServerHooks\";\nfunction setDevServerHooks(devServerHooks) {\n  globalThis[globalDevServerHooksKey] = devServerHooks;\n}\nfunction getDevServerHooks() {\n  return globalThis[globalDevServerHooksKey];\n}\n\n// lib/server-runtime/single-fetch.ts\nimport { encode } from \"turbo-stream\";\n\n// lib/server-runtime/headers.ts\nimport { splitCookiesString } from \"set-cookie-parser\";\nfunction getDocumentHeaders(build, context) {\n  let boundaryIdx = context.errors ? context.matches.findIndex((m) => context.errors[m.route.id]) : -1;\n  let matches = boundaryIdx >= 0 ? context.matches.slice(0, boundaryIdx + 1) : context.matches;\n  let errorHeaders;\n  if (boundaryIdx >= 0) {\n    let { actionHeaders, actionData, loaderHeaders, loaderData } = context;\n    context.matches.slice(boundaryIdx).some((match) => {\n      let id = match.route.id;\n      if (actionHeaders[id] && (!actionData || !actionData.hasOwnProperty(id))) {\n        errorHeaders = actionHeaders[id];\n      } else if (loaderHeaders[id] && !loaderData.hasOwnProperty(id)) {\n        errorHeaders = loaderHeaders[id];\n      }\n      return errorHeaders != null;\n    });\n  }\n  return matches.reduce((parentHeaders, match, idx) => {\n    let { id } = match.route;\n    let route = build.routes[id];\n    invariant3(route, `Route with id \"${id}\" not found in build`);\n    let routeModule = route.module;\n    let loaderHeaders = context.loaderHeaders[id] || new Headers();\n    let actionHeaders = context.actionHeaders[id] || new Headers();\n    let includeErrorHeaders = errorHeaders != null && idx === matches.length - 1;\n    let includeErrorCookies = includeErrorHeaders && errorHeaders !== loaderHeaders && errorHeaders !== actionHeaders;\n    if (routeModule.headers == null) {\n      let headers2 = new Headers(parentHeaders);\n      if (includeErrorCookies) {\n        prependCookies(errorHeaders, headers2);\n      }\n      prependCookies(actionHeaders, headers2);\n      prependCookies(loaderHeaders, headers2);\n      return headers2;\n    }\n    let headers = new Headers(\n      routeModule.headers ? typeof routeModule.headers === \"function\" ? routeModule.headers({\n        loaderHeaders,\n        parentHeaders,\n        actionHeaders,\n        errorHeaders: includeErrorHeaders ? errorHeaders : void 0\n      }) : routeModule.headers : void 0\n    );\n    if (includeErrorCookies) {\n      prependCookies(errorHeaders, headers);\n    }\n    prependCookies(actionHeaders, headers);\n    prependCookies(loaderHeaders, headers);\n    prependCookies(parentHeaders, headers);\n    return headers;\n  }, new Headers());\n}\nfunction prependCookies(parentHeaders, childHeaders) {\n  let parentSetCookieString = parentHeaders.get(\"Set-Cookie\");\n  if (parentSetCookieString) {\n    let cookies = splitCookiesString(parentSetCookieString);\n    let childCookies = new Set(childHeaders.getSetCookie());\n    cookies.forEach((cookie) => {\n      if (!childCookies.has(cookie)) {\n        childHeaders.append(\"Set-Cookie\", cookie);\n      }\n    });\n  }\n}\n\n// lib/server-runtime/single-fetch.ts\nvar SINGLE_FETCH_REDIRECT_STATUS = 202;\nfunction getSingleFetchDataStrategy2({\n  isActionDataRequest,\n  loadRouteIds\n} = {}) {\n  return async ({ request, matches }) => {\n    if (isActionDataRequest && request.method === \"GET\") {\n      return {};\n    }\n    let matchesToLoad = loadRouteIds ? matches.filter((m) => loadRouteIds.includes(m.route.id)) : matches;\n    let results = await Promise.all(\n      matchesToLoad.map((match) => match.resolve())\n    );\n    return results.reduce(\n      (acc, result, i) => Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n      {}\n    );\n  };\n}\nasync function singleFetchAction(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {\n  try {\n    let handlerRequest = new Request(handlerUrl, {\n      method: request.method,\n      body: request.body,\n      headers: request.headers,\n      signal: request.signal,\n      ...request.body ? { duplex: \"half\" } : void 0\n    });\n    let result = await staticHandler.query(handlerRequest, {\n      requestContext: loadContext,\n      skipLoaderErrorBubbling: true,\n      dataStrategy: getSingleFetchDataStrategy2({\n        isActionDataRequest: true\n      })\n    });\n    if (isResponse(result)) {\n      return {\n        result: getSingleFetchRedirect(\n          result.status,\n          result.headers,\n          build.basename\n        ),\n        headers: result.headers,\n        status: SINGLE_FETCH_REDIRECT_STATUS\n      };\n    }\n    let context = result;\n    let headers = getDocumentHeaders(build, context);\n    if (isRedirectStatusCode(context.statusCode) && headers.has(\"Location\")) {\n      return {\n        result: getSingleFetchRedirect(\n          context.statusCode,\n          headers,\n          build.basename\n        ),\n        headers,\n        status: SINGLE_FETCH_REDIRECT_STATUS\n      };\n    }\n    if (context.errors) {\n      Object.values(context.errors).forEach((err) => {\n        if (!isRouteErrorResponse(err) || err.error) {\n          handleError(err);\n        }\n      });\n      context.errors = sanitizeErrors(context.errors, serverMode);\n    }\n    let singleFetchResult;\n    if (context.errors) {\n      singleFetchResult = { error: Object.values(context.errors)[0] };\n    } else {\n      singleFetchResult = { data: Object.values(context.actionData || {})[0] };\n    }\n    return {\n      result: singleFetchResult,\n      headers,\n      status: context.statusCode\n    };\n  } catch (error) {\n    handleError(error);\n    return {\n      result: { error },\n      headers: new Headers(),\n      status: 500\n    };\n  }\n}\nasync function singleFetchLoaders(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {\n  try {\n    let handlerRequest = new Request(handlerUrl, {\n      headers: request.headers,\n      signal: request.signal\n    });\n    let loadRouteIds = new URL(request.url).searchParams.get(\"_routes\")?.split(\",\") || void 0;\n    let result = await staticHandler.query(handlerRequest, {\n      requestContext: loadContext,\n      skipLoaderErrorBubbling: true,\n      dataStrategy: getSingleFetchDataStrategy2({\n        loadRouteIds\n      })\n    });\n    if (isResponse(result)) {\n      return {\n        result: {\n          [SingleFetchRedirectSymbol]: getSingleFetchRedirect(\n            result.status,\n            result.headers,\n            build.basename\n          )\n        },\n        headers: result.headers,\n        status: SINGLE_FETCH_REDIRECT_STATUS\n      };\n    }\n    let context = result;\n    let headers = getDocumentHeaders(build, context);\n    if (isRedirectStatusCode(context.statusCode) && headers.has(\"Location\")) {\n      return {\n        result: {\n          [SingleFetchRedirectSymbol]: getSingleFetchRedirect(\n            context.statusCode,\n            headers,\n            build.basename\n          )\n        },\n        headers,\n        status: SINGLE_FETCH_REDIRECT_STATUS\n      };\n    }\n    if (context.errors) {\n      Object.values(context.errors).forEach((err) => {\n        if (!isRouteErrorResponse(err) || err.error) {\n          handleError(err);\n        }\n      });\n      context.errors = sanitizeErrors(context.errors, serverMode);\n    }\n    let results = {};\n    let loadedMatches = loadRouteIds ? context.matches.filter(\n      (m) => m.route.loader && loadRouteIds.includes(m.route.id)\n    ) : context.matches;\n    loadedMatches.forEach((m) => {\n      let { id } = m.route;\n      if (context.errors && context.errors.hasOwnProperty(id)) {\n        results[id] = { error: context.errors[id] };\n      } else if (context.loaderData.hasOwnProperty(id)) {\n        results[id] = { data: context.loaderData[id] };\n      }\n    });\n    return {\n      result: results,\n      headers,\n      status: context.statusCode\n    };\n  } catch (error) {\n    handleError(error);\n    return {\n      result: { root: { error } },\n      headers: new Headers(),\n      status: 500\n    };\n  }\n}\nfunction getSingleFetchRedirect(status, headers, basename) {\n  let redirect2 = headers.get(\"Location\");\n  if (basename) {\n    redirect2 = stripBasename(redirect2, basename) || redirect2;\n  }\n  return {\n    redirect: redirect2,\n    status,\n    revalidate: (\n      // Technically X-Remix-Revalidate isn't needed here - that was an implementation\n      // detail of ?_data requests as our way to tell the front end to revalidate when\n      // we didn't have a response body to include that information in.\n      // With single fetch, we tell the front end via this revalidate boolean field.\n      // However, we're respecting it for now because it may be something folks have\n      // used in their own responses\n      // TODO(v3): Consider removing or making this official public API\n      headers.has(\"X-Remix-Revalidate\") || headers.has(\"Set-Cookie\")\n    ),\n    reload: headers.has(\"X-Remix-Reload-Document\"),\n    replace: headers.has(\"X-Remix-Replace\")\n  };\n}\nfunction encodeViaTurboStream(data2, requestSignal, streamTimeout, serverMode) {\n  let controller = new AbortController();\n  let timeoutId = setTimeout(\n    () => controller.abort(new Error(\"Server Timeout\")),\n    typeof streamTimeout === \"number\" ? streamTimeout : 4950\n  );\n  requestSignal.addEventListener(\"abort\", () => clearTimeout(timeoutId));\n  return encode(data2, {\n    signal: controller.signal,\n    plugins: [\n      (value) => {\n        if (value instanceof Error) {\n          let { name, message, stack } = serverMode === \"production\" /* Production */ ? sanitizeError(value, serverMode) : value;\n          return [\"SanitizedError\", name, message, stack];\n        }\n        if (value instanceof ErrorResponseImpl) {\n          let { data: data3, status, statusText } = value;\n          return [\"ErrorResponse\", data3, status, statusText];\n        }\n        if (value && typeof value === \"object\" && SingleFetchRedirectSymbol in value) {\n          return [\"SingleFetchRedirect\", value[SingleFetchRedirectSymbol]];\n        }\n      }\n    ],\n    postPlugins: [\n      (value) => {\n        if (!value) return;\n        if (typeof value !== \"object\") return;\n        return [\n          \"SingleFetchClassInstance\",\n          Object.fromEntries(Object.entries(value))\n        ];\n      },\n      () => [\"SingleFetchFallback\"]\n    ]\n  });\n}\n\n// lib/server-runtime/server.ts\nvar NO_BODY_STATUS_CODES = /* @__PURE__ */ new Set([100, 101, 204, 205, 304]);\nfunction derive(build, mode) {\n  let routes = createRoutes(build.routes);\n  let dataRoutes = createStaticHandlerDataRoutes(build.routes, build.future);\n  let serverMode = isServerMode(mode) ? mode : \"production\" /* Production */;\n  let staticHandler = createStaticHandler(dataRoutes, {\n    basename: build.basename\n  });\n  let errorHandler = build.entry.module.handleError || ((error, { request }) => {\n    if (serverMode !== \"test\" /* Test */ && !request.signal.aborted) {\n      console.error(\n        // @ts-expect-error This is \"private\" from users but intended for internal use\n        isRouteErrorResponse(error) && error.error ? error.error : error\n      );\n    }\n  });\n  return {\n    routes,\n    dataRoutes,\n    serverMode,\n    staticHandler,\n    errorHandler\n  };\n}\nvar createRequestHandler = (build, mode) => {\n  let _build;\n  let routes;\n  let serverMode;\n  let staticHandler;\n  let errorHandler;\n  return async function requestHandler(request, loadContext = {}) {\n    _build = typeof build === \"function\" ? await build() : build;\n    if (typeof build === \"function\") {\n      let derived = derive(_build, mode);\n      routes = derived.routes;\n      serverMode = derived.serverMode;\n      staticHandler = derived.staticHandler;\n      errorHandler = derived.errorHandler;\n    } else if (!routes || !serverMode || !staticHandler || !errorHandler) {\n      let derived = derive(_build, mode);\n      routes = derived.routes;\n      serverMode = derived.serverMode;\n      staticHandler = derived.staticHandler;\n      errorHandler = derived.errorHandler;\n    }\n    let url = new URL(request.url);\n    let normalizedPath = url.pathname.replace(/\\.data$/, \"\").replace(/^\\/_root$/, \"/\");\n    if (normalizedPath !== \"/\" && normalizedPath.endsWith(\"/\")) {\n      normalizedPath = normalizedPath.slice(0, -1);\n    }\n    let params = {};\n    let handleError = (error) => {\n      if (mode === \"development\" /* Development */) {\n        getDevServerHooks()?.processRequestError?.(error);\n      }\n      errorHandler(error, {\n        context: loadContext,\n        params,\n        request\n      });\n    };\n    if (!_build.ssr) {\n      if (_build.prerender.length === 0) {\n        request.headers.set(\"X-React-Router-SPA-Mode\", \"yes\");\n      } else if (!_build.prerender.includes(normalizedPath) && !_build.prerender.includes(normalizedPath + \"/\")) {\n        if (url.pathname.endsWith(\".data\")) {\n          errorHandler(\n            new ErrorResponseImpl(\n              404,\n              \"Not Found\",\n              `Refusing to SSR the path \\`${normalizedPath}\\` because \\`ssr:false\\` is set and the path is not included in the \\`prerender\\` config, so in production the path will be a 404.`\n            ),\n            {\n              context: loadContext,\n              params,\n              request\n            }\n          );\n          return new Response(\"Not Found\", {\n            status: 404,\n            statusText: \"Not Found\"\n          });\n        } else {\n          request.headers.set(\"X-React-Router-SPA-Mode\", \"yes\");\n        }\n      }\n    }\n    let manifestUrl = `${_build.basename ?? \"/\"}/__manifest`.replace(\n      /\\/+/g,\n      \"/\"\n    );\n    if (url.pathname === manifestUrl) {\n      try {\n        let res = await handleManifestRequest(_build, routes, url);\n        return res;\n      } catch (e) {\n        handleError(e);\n        return new Response(\"Unknown Server Error\", { status: 500 });\n      }\n    }\n    let matches = matchServerRoutes(routes, url.pathname, _build.basename);\n    if (matches && matches.length > 0) {\n      Object.assign(params, matches[0].params);\n    }\n    let response;\n    if (url.pathname.endsWith(\".data\")) {\n      let handlerUrl = new URL(request.url);\n      handlerUrl.pathname = normalizedPath;\n      let singleFetchMatches = matchServerRoutes(\n        routes,\n        handlerUrl.pathname,\n        _build.basename\n      );\n      response = await handleSingleFetchRequest(\n        serverMode,\n        _build,\n        staticHandler,\n        request,\n        handlerUrl,\n        loadContext,\n        handleError\n      );\n      if (_build.entry.module.handleDataRequest) {\n        response = await _build.entry.module.handleDataRequest(response, {\n          context: loadContext,\n          params: singleFetchMatches ? singleFetchMatches[0].params : {},\n          request\n        });\n        if (isRedirectResponse(response)) {\n          let result = getSingleFetchRedirect(\n            response.status,\n            response.headers,\n            _build.basename\n          );\n          if (request.method === \"GET\") {\n            result = {\n              [SingleFetchRedirectSymbol]: result\n            };\n          }\n          let headers = new Headers(response.headers);\n          headers.set(\"Content-Type\", \"text/x-script\");\n          return new Response(\n            encodeViaTurboStream(\n              result,\n              request.signal,\n              _build.entry.module.streamTimeout,\n              serverMode\n            ),\n            {\n              status: SINGLE_FETCH_REDIRECT_STATUS,\n              headers\n            }\n          );\n        }\n      }\n    } else if (matches && matches[matches.length - 1].route.module.default == null && matches[matches.length - 1].route.module.ErrorBoundary == null) {\n      response = await handleResourceRequest(\n        serverMode,\n        staticHandler,\n        matches.slice(-1)[0].route.id,\n        request,\n        loadContext,\n        handleError\n      );\n    } else {\n      let criticalCss = mode === \"development\" /* Development */ ? await getDevServerHooks()?.getCriticalCss?.(_build, url.pathname) : void 0;\n      response = await handleDocumentRequest(\n        serverMode,\n        _build,\n        staticHandler,\n        request,\n        loadContext,\n        handleError,\n        criticalCss\n      );\n    }\n    if (request.method === \"HEAD\") {\n      return new Response(null, {\n        headers: response.headers,\n        status: response.status,\n        statusText: response.statusText\n      });\n    }\n    return response;\n  };\n};\nasync function handleManifestRequest(build, routes, url) {\n  let patches = {};\n  if (url.searchParams.has(\"p\")) {\n    for (let path of url.searchParams.getAll(\"p\")) {\n      let matches = matchServerRoutes(routes, path, build.basename);\n      if (matches) {\n        for (let match of matches) {\n          let routeId = match.route.id;\n          let route = build.assets.routes[routeId];\n          if (route) {\n            patches[routeId] = route;\n          }\n        }\n      }\n    }\n    return Response.json(patches, {\n      headers: {\n        \"Cache-Control\": \"public, max-age=31536000, immutable\"\n      }\n    });\n  }\n  return new Response(\"Invalid Request\", { status: 400 });\n}\nasync function handleSingleFetchRequest(serverMode, build, staticHandler, request, handlerUrl, loadContext, handleError) {\n  let { result, headers, status } = request.method !== \"GET\" ? await singleFetchAction(\n    build,\n    serverMode,\n    staticHandler,\n    request,\n    handlerUrl,\n    loadContext,\n    handleError\n  ) : await singleFetchLoaders(\n    build,\n    serverMode,\n    staticHandler,\n    request,\n    handlerUrl,\n    loadContext,\n    handleError\n  );\n  let resultHeaders = new Headers(headers);\n  resultHeaders.set(\"X-Remix-Response\", \"yes\");\n  if (NO_BODY_STATUS_CODES.has(status)) {\n    return new Response(null, { status, headers: resultHeaders });\n  }\n  resultHeaders.set(\"Content-Type\", \"text/x-script\");\n  return new Response(\n    encodeViaTurboStream(\n      result,\n      request.signal,\n      build.entry.module.streamTimeout,\n      serverMode\n    ),\n    {\n      status: status || 200,\n      headers: resultHeaders\n    }\n  );\n}\nasync function handleDocumentRequest(serverMode, build, staticHandler, request, loadContext, handleError, criticalCss) {\n  let isSpaMode = request.headers.has(\"X-React-Router-SPA-Mode\");\n  let context;\n  try {\n    context = await staticHandler.query(request, {\n      requestContext: loadContext\n    });\n  } catch (error) {\n    handleError(error);\n    return new Response(null, { status: 500 });\n  }\n  if (isResponse(context)) {\n    return context;\n  }\n  let headers = getDocumentHeaders(build, context);\n  if (NO_BODY_STATUS_CODES.has(context.statusCode)) {\n    return new Response(null, { status: context.statusCode, headers });\n  }\n  if (context.errors) {\n    Object.values(context.errors).forEach((err) => {\n      if (!isRouteErrorResponse(err) || err.error) {\n        handleError(err);\n      }\n    });\n    context.errors = sanitizeErrors(context.errors, serverMode);\n  }\n  let state = {\n    loaderData: context.loaderData,\n    actionData: context.actionData,\n    errors: serializeErrors2(context.errors, serverMode)\n  };\n  let entryContext = {\n    manifest: build.assets,\n    routeModules: createEntryRouteModules(build.routes),\n    staticHandlerContext: context,\n    criticalCss,\n    serverHandoffString: createServerHandoffString({\n      basename: build.basename,\n      criticalCss,\n      future: build.future,\n      ssr: build.ssr,\n      isSpaMode\n    }),\n    serverHandoffStream: encodeViaTurboStream(\n      state,\n      request.signal,\n      build.entry.module.streamTimeout,\n      serverMode\n    ),\n    renderMeta: {},\n    future: build.future,\n    ssr: build.ssr,\n    isSpaMode,\n    serializeError: (err) => serializeError(err, serverMode)\n  };\n  let handleDocumentRequestFunction = build.entry.module.default;\n  try {\n    return await handleDocumentRequestFunction(\n      request,\n      context.statusCode,\n      headers,\n      entryContext,\n      loadContext\n    );\n  } catch (error) {\n    handleError(error);\n    let errorForSecondRender = error;\n    if (isResponse(error)) {\n      try {\n        let data2 = await unwrapResponse(error);\n        errorForSecondRender = new ErrorResponseImpl(\n          error.status,\n          error.statusText,\n          data2\n        );\n      } catch (e) {\n      }\n    }\n    context = getStaticContextFromError(\n      staticHandler.dataRoutes,\n      context,\n      errorForSecondRender\n    );\n    if (context.errors) {\n      context.errors = sanitizeErrors(context.errors, serverMode);\n    }\n    let state2 = {\n      loaderData: context.loaderData,\n      actionData: context.actionData,\n      errors: serializeErrors2(context.errors, serverMode)\n    };\n    entryContext = {\n      ...entryContext,\n      staticHandlerContext: context,\n      serverHandoffString: createServerHandoffString({\n        basename: build.basename,\n        future: build.future,\n        ssr: build.ssr,\n        isSpaMode\n      }),\n      serverHandoffStream: encodeViaTurboStream(\n        state2,\n        request.signal,\n        build.entry.module.streamTimeout,\n        serverMode\n      ),\n      renderMeta: {}\n    };\n    try {\n      return await handleDocumentRequestFunction(\n        request,\n        context.statusCode,\n        headers,\n        entryContext,\n        loadContext\n      );\n    } catch (error2) {\n      handleError(error2);\n      return returnLastResortErrorResponse(error2, serverMode);\n    }\n  }\n}\nasync function handleResourceRequest(serverMode, staticHandler, routeId, request, loadContext, handleError) {\n  try {\n    let response = await staticHandler.queryRoute(request, {\n      routeId,\n      requestContext: loadContext\n    });\n    if (isResponse(response)) {\n      return response;\n    }\n    if (typeof response === \"string\") {\n      return new Response(response);\n    }\n    return Response.json(response);\n  } catch (error) {\n    if (isResponse(error)) {\n      error.headers.set(\"X-Remix-Catch\", \"yes\");\n      return error;\n    }\n    if (isRouteErrorResponse(error)) {\n      if (error) {\n        handleError(error);\n      }\n      return errorResponseToJson(error, serverMode);\n    }\n    handleError(error);\n    return returnLastResortErrorResponse(error, serverMode);\n  }\n}\nfunction errorResponseToJson(errorResponse, serverMode) {\n  return Response.json(\n    serializeError(\n      // @ts-expect-error This is \"private\" from users but intended for internal use\n      errorResponse.error || new Error(\"Unexpected Server Error\"),\n      serverMode\n    ),\n    {\n      status: errorResponse.status,\n      statusText: errorResponse.statusText,\n      headers: {\n        \"X-Remix-Error\": \"yes\"\n      }\n    }\n  );\n}\nfunction returnLastResortErrorResponse(error, serverMode) {\n  let message = \"Unexpected Server Error\";\n  if (serverMode !== \"production\" /* Production */) {\n    message += `\n\n${String(error)}`;\n  }\n  return new Response(message, {\n    status: 500,\n    headers: {\n      \"Content-Type\": \"text/plain\"\n    }\n  });\n}\nfunction unwrapResponse(response) {\n  let contentType = response.headers.get(\"Content-Type\");\n  return contentType && /\\bapplication\\/json\\b/.test(contentType) ? response.body == null ? null : response.json() : response.text();\n}\n\n// lib/server-runtime/sessions.ts\nfunction flash(name) {\n  return `__flash_${name}__`;\n}\nvar createSession = (initialData = {}, id = \"\") => {\n  let map = new Map(Object.entries(initialData));\n  return {\n    get id() {\n      return id;\n    },\n    get data() {\n      return Object.fromEntries(map);\n    },\n    has(name) {\n      return map.has(name) || map.has(flash(name));\n    },\n    get(name) {\n      if (map.has(name)) return map.get(name);\n      let flashName = flash(name);\n      if (map.has(flashName)) {\n        let value = map.get(flashName);\n        map.delete(flashName);\n        return value;\n      }\n      return void 0;\n    },\n    set(name, value) {\n      map.set(name, value);\n    },\n    flash(name, value) {\n      map.set(flash(name), value);\n    },\n    unset(name) {\n      map.delete(name);\n    }\n  };\n};\nvar isSession = (object) => {\n  return object != null && typeof object.id === \"string\" && typeof object.data !== \"undefined\" && typeof object.has === \"function\" && typeof object.get === \"function\" && typeof object.set === \"function\" && typeof object.flash === \"function\" && typeof object.unset === \"function\";\n};\nfunction createSessionStorage({\n  cookie: cookieArg,\n  createData,\n  readData,\n  updateData,\n  deleteData\n}) {\n  let cookie = isCookie(cookieArg) ? cookieArg : createCookie(cookieArg?.name || \"__session\", cookieArg);\n  warnOnceAboutSigningSessionCookie(cookie);\n  return {\n    async getSession(cookieHeader, options) {\n      let id = cookieHeader && await cookie.parse(cookieHeader, options);\n      let data2 = id && await readData(id);\n      return createSession(data2 || {}, id || \"\");\n    },\n    async commitSession(session, options) {\n      let { id, data: data2 } = session;\n      let expires = options?.maxAge != null ? new Date(Date.now() + options.maxAge * 1e3) : options?.expires != null ? options.expires : cookie.expires;\n      if (id) {\n        await updateData(id, data2, expires);\n      } else {\n        id = await createData(data2, expires);\n      }\n      return cookie.serialize(id, options);\n    },\n    async destroySession(session, options) {\n      await deleteData(session.id);\n      return cookie.serialize(\"\", {\n        ...options,\n        maxAge: void 0,\n        expires: /* @__PURE__ */ new Date(0)\n      });\n    }\n  };\n}\nfunction warnOnceAboutSigningSessionCookie(cookie) {\n  warnOnce(\n    cookie.isSigned,\n    `The \"${cookie.name}\" cookie is not signed, but session cookies should be signed to prevent tampering on the client before they are sent back to the server. See https://remix.run/utils/cookies#signing-cookies for more information.`\n  );\n}\n\n// lib/server-runtime/sessions/cookieStorage.ts\nfunction createCookieSessionStorage({ cookie: cookieArg } = {}) {\n  let cookie = isCookie(cookieArg) ? cookieArg : createCookie(cookieArg?.name || \"__session\", cookieArg);\n  warnOnceAboutSigningSessionCookie(cookie);\n  return {\n    async getSession(cookieHeader, options) {\n      return createSession(\n        cookieHeader && await cookie.parse(cookieHeader, options) || {}\n      );\n    },\n    async commitSession(session, options) {\n      let serializedCookie = await cookie.serialize(session.data, options);\n      if (serializedCookie.length > 4096) {\n        throw new Error(\n          \"Cookie length will exceed browser maximum. Length: \" + serializedCookie.length\n        );\n      }\n      return serializedCookie;\n    },\n    async destroySession(_session, options) {\n      return cookie.serialize(\"\", {\n        ...options,\n        maxAge: void 0,\n        expires: /* @__PURE__ */ new Date(0)\n      });\n    }\n  };\n}\n\n// lib/server-runtime/sessions/memoryStorage.ts\nfunction createMemorySessionStorage({ cookie } = {}) {\n  let map = /* @__PURE__ */ new Map();\n  return createSessionStorage({\n    cookie,\n    async createData(data2, expires) {\n      let id = Math.random().toString(36).substring(2, 10);\n      map.set(id, { data: data2, expires });\n      return id;\n    },\n    async readData(id) {\n      if (map.has(id)) {\n        let { data: data2, expires } = map.get(id);\n        if (!expires || expires > /* @__PURE__ */ new Date()) {\n          return data2;\n        }\n        if (expires) map.delete(id);\n      }\n      return null;\n    },\n    async updateData(id, data2, expires) {\n      map.set(id, { data: data2, expires });\n    },\n    async deleteData(id) {\n      map.delete(id);\n    }\n  });\n}\n\n// lib/href.ts\nfunction href(path, ...args) {\n  let params = args[0];\n  return path.split(\"/\").map((segment) => {\n    const match = segment.match(/^:([\\w-]+)(\\?)?/);\n    if (!match) return segment;\n    const param = match[1];\n    const value = params ? params[param] : void 0;\n    const isRequired = match[2] === void 0;\n    if (isRequired && value === void 0) {\n      throw Error(\n        `Path '${path}' requires param '${param}' but it was not provided`\n      );\n    }\n    return value;\n  }).filter((segment) => segment !== void 0).join(\"/\");\n}\n\n// lib/dom/ssr/errors.ts\nfunction deserializeErrors2(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponseImpl(\n        val.status,\n        val.statusText,\n        val.data,\n        val.internal === true\n      );\n    } else if (val && val.__type === \"Error\") {\n      if (val.__subType) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            let error = new ErrorConstructor(val.message);\n            error.stack = val.stack;\n            serialized[key] = error;\n          } catch (e) {\n          }\n        }\n      }\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        error.stack = val.stack;\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\n\nexport {\n  Action,\n  createBrowserHistory,\n  invariant,\n  createPath,\n  parsePath,\n  matchRoutes,\n  generatePath,\n  matchPath,\n  resolvePath,\n  data,\n  redirect,\n  redirectDocument,\n  replace,\n  ErrorResponseImpl,\n  isRouteErrorResponse,\n  IDLE_NAVIGATION,\n  IDLE_FETCHER,\n  IDLE_BLOCKER,\n  createRouter,\n  DataRouterContext,\n  DataRouterStateContext,\n  ViewTransitionContext,\n  FetchersContext,\n  NavigationContext,\n  LocationContext,\n  RouteContext,\n  useHref,\n  useInRouterContext,\n  useLocation,\n  useNavigationType,\n  useMatch,\n  useNavigate,\n  useOutletContext,\n  useOutlet,\n  useParams,\n  useResolvedPath,\n  useRoutes,\n  useNavigation,\n  useRevalidator,\n  useMatches,\n  useLoaderData,\n  useRouteLoaderData,\n  useActionData,\n  useRouteError,\n  useAsyncValue,\n  useAsyncError,\n  useBlocker,\n  mapRouteProperties,\n  createMemoryRouter,\n  RouterProvider,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  Routes,\n  Await,\n  createRoutesFromChildren,\n  createRoutesFromElements,\n  renderMatches,\n  createSearchParams,\n  SingleFetchRedirectSymbol,\n  getSingleFetchDataStrategy,\n  decodeViaTurboStream,\n  RemixErrorBoundary,\n  createClientRoutesWithHMRRevalidationOptOut,\n  createClientRoutes,\n  shouldHydrateRouteLoader,\n  getPatchRoutesOnNavigationFunction,\n  useFogOFWarDiscovery,\n  FrameworkContext,\n  Links,\n  PrefetchPageLinks,\n  Meta,\n  Scripts,\n  createBrowserRouter,\n  createHashRouter,\n  BrowserRouter,\n  HashRouter,\n  HistoryRouter,\n  Link,\n  NavLink,\n  Form,\n  ScrollRestoration,\n  useLinkClickHandler,\n  useSearchParams,\n  useSubmit,\n  useFormAction,\n  useFetcher,\n  useFetchers,\n  useScrollRestoration,\n  useBeforeUnload,\n  usePrompt,\n  useViewTransitionState,\n  StaticRouter,\n  StaticRouterProvider,\n  createStaticHandler2 as createStaticHandler,\n  createStaticRouter,\n  ServerRouter,\n  createRoutesStub,\n  createCookie,\n  isCookie,\n  ServerMode,\n  setDevServerHooks,\n  createRequestHandler,\n  createSession,\n  isSession,\n  createSessionStorage,\n  createCookieSessionStorage,\n  createMemorySessionStorage,\n  href,\n  deserializeErrors2 as deserializeErrors\n};\n","import React, { useState, useEffect } from 'react';\r\nimport { Layout, Input, Button, Flex, Space, Modal, message } from 'antd';\r\nimport {\r\n    AppstoreAddOutlined,\r\n    ExportOutlined,\r\n    SearchOutlined,\r\n    UserAddOutlined,\r\n    SettingOutlined,\r\n    LogoutOutlined\r\n} from '@ant-design/icons';\r\nimport './ComMain.css';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport Cookies from 'js-cookie';\r\n\r\nconst { Header, Content } = Layout;\r\n\r\nconst UserMain = () => {\r\n    const navigate = useNavigate();\r\n    const [messageApi, contextHolder] = message.useMessage();\r\n    const [keywords, setKeywords] = useState(\"\");\r\n    const [groupList, setGroupList] = useState([]);\r\n    // 新建分组模态框start\r\n    const [newGroupData, setNewGroupData] = useState({});\r\n    const [isNewGroupModalOpen, setIsNewGroupModalOpen] = useState(false);\r\n    // 新建分组模态框end\r\n\r\n    // 新建用户模态框start\r\n    const [newUserData, setNewUserData] = useState({});\r\n    const [isNewUserModalOpen, setIsNewUserModalOpen] = useState(false);\r\n    // 新建用户模态框end\r\n\r\n    // 设置模态框start\r\n    const [settingData, setSettingData] = useState({});\r\n    const [isSettingModalOpen, setIsSettingModalOpen] = useState(false);\r\n    // 设置模态框end\r\n\r\n    const fetchGroup = () => {\r\n\r\n        fetch('/group-list', {\r\n            method: 'GET',\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    let res = [];\r\n                    for (let index = 0; index < d.data.length; index++) {\r\n                        const element = d.data[index];\r\n                        if (element.indexOf(keywords) !== -1) {\r\n                            res.push(element);\r\n                        }\r\n                    }\r\n                    setGroupList(res);\r\n                } else {\r\n                    messageApi.open({\r\n                        type: 'error',\r\n                        content: d.msg,\r\n                    });\r\n                }\r\n            });\r\n    };\r\n\r\n    useEffect(fetchGroup, []);\r\n    const newGroup = () => {\r\n        fetch('/new-group', {\r\n            method: 'POST',\r\n            headers: {\r\n                'Content-Type': 'application/json'\r\n            },\r\n            body: JSON.stringify(newGroupData)\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    setIsNewGroupModalOpen(false);\r\n                    fetchGroup();\r\n                } else {\r\n                    messageApi.open({\r\n                        type: 'error',\r\n                        content: d.msg,\r\n                    });\r\n                }\r\n            });\r\n    };\r\n    const newUser = () => {\r\n        if (newUserData.ipassword !== newUserData.password) {\r\n            messageApi.open({\r\n                type: 'error',\r\n                content: '密码不对应',\r\n            });\r\n            return;\r\n        }\r\n        fetch('/new-user', {\r\n            method: 'POST',\r\n            headers: {\r\n                'Content-Type': 'application/json'\r\n            },\r\n            body: JSON.stringify(newUserData)\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    setIsNewUserModalOpen(false);\r\n                    messageApi.open({\r\n                        type: 'success',\r\n                        content: '新增用户成功!',\r\n                    });\r\n                } else {\r\n                    messageApi.open({\r\n                        type: 'error',\r\n                        content: d.msg,\r\n                    });\r\n                }\r\n            });\r\n    }\r\n    const logout = () => {\r\n        fetch('/logout', {\r\n            method: 'GET'\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    Cookies.remove(\"session_id\");\r\n                    Cookies.remove(\"username\");\r\n                    navigate(\"/\")\r\n                } else {\r\n                    messageApi.open({\r\n                        type: 'error',\r\n                        content: d.msg,\r\n                    });\r\n                }\r\n            });\r\n    };\r\n    const setting = () => {\r\n        if (settingData.inew !== settingData.new) {\r\n            messageApi.open({\r\n                type: 'error',\r\n                content: '密码不对应',\r\n            });\r\n            return;\r\n        }\r\n        fetch('/user-password-update', {\r\n            method: 'POST',\r\n            headers: {\r\n                'Content-Type': 'application/json'\r\n            },\r\n            body: JSON.stringify(settingData)\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    messageApi.open({\r\n                        type: 'success',\r\n                        content: '密码修改成功!',\r\n                    });\r\n                    logout();\r\n                } else {\r\n                    messageApi.open({\r\n                        type: 'error',\r\n                        content: d.msg,\r\n                    });\r\n                }\r\n            });\r\n    }\r\n    return (\r\n        <>\r\n            {contextHolder}\r\n            <Modal title=\"新建分组\" open={isNewGroupModalOpen} onOk={newGroup} onCancel={() => {\r\n                setIsNewGroupModalOpen(false);\r\n            }}>\r\n                <Input placeholder='分组名称' value={newGroupData.groupname} onChange={(e) => {\r\n                    setNewGroupData({\r\n                        groupname: e.target.value\r\n                    })\r\n                }}></Input>\r\n            </Modal>\r\n            <Modal title=\"新用户\" open={isNewUserModalOpen} onOk={newUser} onCancel={() => {\r\n                setIsNewUserModalOpen(false);\r\n            }}>\r\n                <Space direction=\"vertical\" size=\"large\">\r\n                    <Input placeholder='用户名' value={newUserData.username} onChange={(e) => {\r\n                        setNewUserData({\r\n                            ...newUserData,\r\n                            username: e.target.value\r\n                        })\r\n                    }}></Input>\r\n                    <Input.Password placeholder='密码' value={newUserData.password} onChange={(e) => {\r\n                        setNewUserData({\r\n                            ...newUserData,\r\n                            password: e.target.value\r\n                        })\r\n                    }} />\r\n                    <Input.Password placeholder='确认密码' value={newUserData.ipassword} onChange={(e) => {\r\n                        setNewUserData({\r\n                            ...newUserData,\r\n                            ipassword: e.target.value\r\n                        })\r\n                    }} />\r\n                </Space>\r\n            </Modal>\r\n            <Modal title=\"设置\" open={isSettingModalOpen} onOk={setting} onCancel={() => {\r\n                setIsSettingModalOpen(false);\r\n            }}>\r\n                <Space direction=\"vertical\" size=\"large\">\r\n                    <Input.Password placeholder='新密码' value={settingData.new} onChange={(e) => {\r\n                        setSettingData({\r\n                            ...settingData,\r\n                            new: e.target.value\r\n                        })\r\n                    }} />\r\n                    <Input.Password placeholder='确认密码' value={settingData.inew} onChange={(e) => {\r\n                        setSettingData({\r\n                            ...settingData,\r\n                            inew: e.target.value\r\n                        })\r\n                    }} />\r\n                    <Input.Password placeholder='原密码' value={settingData.old} onChange={(e) => {\r\n                        setSettingData({\r\n                            ...settingData,\r\n                            old: e.target.value\r\n                        })\r\n                    }} />\r\n                </Space>\r\n            </Modal>\r\n            <Layout className=\"layout\">\r\n                <Header className=\"header\">\r\n                    <Space>\r\n                        用户主页\r\n                        <Space.Compact style={{ width: '100%' }}>\r\n                            <Input onKeyDown={(k) => {\r\n                                if (k.code === \"Enter\") {\r\n                                    fetchGroup();\r\n                                }\r\n                            }} value={keywords} placeholder=\"关键词\" onChange={(e) => setKeywords(e.target.value)} />\r\n                            <Button onClick={fetchGroup} icon={<SearchOutlined />}>搜索</Button>\r\n                        </Space.Compact>\r\n                        <Button icon={<AppstoreAddOutlined />} onClick={() => {\r\n                            setIsNewGroupModalOpen(true);\r\n                        }}>新建分组</Button>\r\n                        <Button icon={<ExportOutlined />} onClick={() => {\r\n                            window.open(`/export`);\r\n                        }}>导出</Button>\r\n                        <Button icon={<UserAddOutlined />} onClick={() => {\r\n                            setIsNewUserModalOpen(true);\r\n                        }}>新用户</Button>\r\n                        <Button icon={<SettingOutlined />} onClick={() => {\r\n                            setIsSettingModalOpen(true);\r\n                        }}>设置</Button>\r\n                        <Button icon={<LogoutOutlined />} onClick={logout}>登出</Button>\r\n                    </Space>\r\n                </Header>\r\n                <Content className=\"content\">\r\n                    <Flex wrap gap=\"small\">\r\n                        {groupList.map(v => (\r\n                            <Button key={v} onClick={() => {\r\n                                navigate(`/group-main?groupname=${v}`);\r\n                            }}>\r\n                                {v}\r\n                            </Button>\r\n                        ))}\r\n                    </Flex>\r\n                </Content>\r\n            </Layout>\r\n        </>\r\n    );\r\n};\r\n\r\n\r\nexport default UserMain;\r\n","export const getRenderPropValue = propValue => {\n  if (!propValue) {\n    return null;\n  }\n  return typeof propValue === 'function' ? propValue() : propValue;\n};","import { resetComponent } from '../../style';\nimport { initZoomMotion } from '../../style/motion';\nimport getArrowStyle, { getArrowOffsetToken } from '../../style/placementArrow';\nimport { getArrowToken } from '../../style/roundedArrow';\nimport { genStyleHooks, mergeToken, PresetColors } from '../../theme/internal';\nconst genBaseStyle = token => {\n  const {\n    componentCls,\n    popoverColor,\n    titleMinWidth,\n    fontWeightStrong,\n    innerPadding,\n    boxShadowSecondary,\n    colorTextHeading,\n    borderRadiusLG,\n    zIndexPopup,\n    titleMarginBottom,\n    colorBgElevated,\n    popoverBg,\n    titleBorderBottom,\n    innerContentPadding,\n    titlePadding\n  } = token;\n  return [{\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'absolute',\n      top: 0,\n      // use `left` to fix https://github.com/ant-design/ant-design/issues/39195\n      left: {\n        _skip_check_: true,\n        value: 0\n      },\n      zIndex: zIndexPopup,\n      fontWeight: 'normal',\n      whiteSpace: 'normal',\n      textAlign: 'start',\n      cursor: 'auto',\n      userSelect: 'text',\n      // When use `autoArrow`, origin will follow the arrow position\n      '--valid-offset-x': 'var(--arrow-offset-horizontal, var(--arrow-x))',\n      transformOrigin: [`var(--valid-offset-x, 50%)`, `var(--arrow-y, 50%)`].join(' '),\n      '--antd-arrow-background-color': colorBgElevated,\n      width: 'max-content',\n      maxWidth: '100vw',\n      '&-rtl': {\n        direction: 'rtl'\n      },\n      '&-hidden': {\n        display: 'none'\n      },\n      [`${componentCls}-content`]: {\n        position: 'relative'\n      },\n      [`${componentCls}-inner`]: {\n        backgroundColor: popoverBg,\n        backgroundClip: 'padding-box',\n        borderRadius: borderRadiusLG,\n        boxShadow: boxShadowSecondary,\n        padding: innerPadding\n      },\n      [`${componentCls}-title`]: {\n        minWidth: titleMinWidth,\n        marginBottom: titleMarginBottom,\n        color: colorTextHeading,\n        fontWeight: fontWeightStrong,\n        borderBottom: titleBorderBottom,\n        padding: titlePadding\n      },\n      [`${componentCls}-inner-content`]: {\n        color: popoverColor,\n        padding: innerContentPadding\n      }\n    })\n  },\n  // Arrow Style\n  getArrowStyle(token, 'var(--antd-arrow-background-color)'),\n  // Pure Render\n  {\n    [`${componentCls}-pure`]: {\n      position: 'relative',\n      maxWidth: 'none',\n      margin: token.sizePopupArrow,\n      display: 'inline-block',\n      [`${componentCls}-content`]: {\n        display: 'inline-block'\n      }\n    }\n  }];\n};\nconst genColorStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: PresetColors.map(colorKey => {\n      const lightColor = token[`${colorKey}6`];\n      return {\n        [`&${componentCls}-${colorKey}`]: {\n          '--antd-arrow-background-color': lightColor,\n          [`${componentCls}-inner`]: {\n            backgroundColor: lightColor\n          },\n          [`${componentCls}-arrow`]: {\n            background: 'transparent'\n          }\n        }\n      };\n    })\n  };\n};\nexport const prepareComponentToken = token => {\n  const {\n    lineWidth,\n    controlHeight,\n    fontHeight,\n    padding,\n    wireframe,\n    zIndexPopupBase,\n    borderRadiusLG,\n    marginXS,\n    lineType,\n    colorSplit,\n    paddingSM\n  } = token;\n  const titlePaddingBlockDist = controlHeight - fontHeight;\n  const popoverTitlePaddingBlockTop = titlePaddingBlockDist / 2;\n  const popoverTitlePaddingBlockBottom = titlePaddingBlockDist / 2 - lineWidth;\n  const popoverPaddingHorizontal = padding;\n  return Object.assign(Object.assign(Object.assign({\n    titleMinWidth: 177,\n    zIndexPopup: zIndexPopupBase + 30\n  }, getArrowToken(token)), getArrowOffsetToken({\n    contentRadius: borderRadiusLG,\n    limitVerticalRadius: true\n  })), {\n    // internal\n    innerPadding: wireframe ? 0 : 12,\n    titleMarginBottom: wireframe ? 0 : marginXS,\n    titlePadding: wireframe ? `${popoverTitlePaddingBlockTop}px ${popoverPaddingHorizontal}px ${popoverTitlePaddingBlockBottom}px` : 0,\n    titleBorderBottom: wireframe ? `${lineWidth}px ${lineType} ${colorSplit}` : 'none',\n    innerContentPadding: wireframe ? `${paddingSM}px ${popoverPaddingHorizontal}px` : 0\n  });\n};\nexport default genStyleHooks('Popover', token => {\n  const {\n    colorBgElevated,\n    colorText\n  } = token;\n  const popoverToken = mergeToken(token, {\n    popoverBg: colorBgElevated,\n    popoverColor: colorText\n  });\n  return [genBaseStyle(popoverToken), genColorStyle(popoverToken), initZoomMotion(popoverToken, 'zoom-big')];\n}, prepareComponentToken, {\n  resetStyle: false,\n  deprecatedTokens: [['width', 'titleMinWidth'], ['minWidth', 'titleMinWidth']]\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Popup } from 'rc-tooltip';\nimport { getRenderPropValue } from '../_util/getRenderPropValue';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nexport const Overlay = _ref => {\n  let {\n    title,\n    content,\n    prefixCls\n  } = _ref;\n  if (!title && !content) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(React.Fragment, null, title && /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-title`\n  }, title), content && /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-inner-content`\n  }, content));\n};\nexport const RawPurePanel = props => {\n  const {\n    hashId,\n    prefixCls,\n    className,\n    style,\n    placement = 'top',\n    title,\n    content,\n    children\n  } = props;\n  const titleNode = getRenderPropValue(title);\n  const contentNode = getRenderPropValue(content);\n  const cls = classNames(hashId, prefixCls, `${prefixCls}-pure`, `${prefixCls}-placement-${placement}`, className);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: cls,\n    style: style\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-arrow`\n  }), /*#__PURE__*/React.createElement(Popup, Object.assign({}, props, {\n    className: hashId,\n    prefixCls: prefixCls\n  }), children || /*#__PURE__*/React.createElement(Overlay, {\n    prefixCls: prefixCls,\n    title: titleNode,\n    content: contentNode\n  })));\n};\nconst PurePanel = props => {\n  const {\n      prefixCls: customizePrefixCls,\n      className\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"className\"]);\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('popover', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(RawPurePanel, Object.assign({}, restProps, {\n    prefixCls: prefixCls,\n    hashId: hashId,\n    className: classNames(className, cssVarCls)\n  })));\n};\nexport default PurePanel;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { getRenderPropValue } from '../_util/getRenderPropValue';\nimport { getTransitionName } from '../_util/motion';\nimport { cloneElement } from '../_util/reactNode';\nimport Tooltip from '../tooltip';\nimport PurePanel, { Overlay } from './PurePanel';\nimport { useComponentConfig } from '../config-provider/context';\n// CSSINJS\nimport useStyle from './style';\nconst InternalPopover = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a, _b;\n  const {\n      prefixCls: customizePrefixCls,\n      title,\n      content,\n      overlayClassName,\n      placement = 'top',\n      trigger = 'hover',\n      children,\n      mouseEnterDelay = 0.1,\n      mouseLeaveDelay = 0.1,\n      onOpenChange,\n      overlayStyle = {},\n      styles,\n      classNames: popoverClassNames\n    } = props,\n    otherProps = __rest(props, [\"prefixCls\", \"title\", \"content\", \"overlayClassName\", \"placement\", \"trigger\", \"children\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"onOpenChange\", \"overlayStyle\", \"styles\", \"classNames\"]);\n  const {\n    getPrefixCls,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('popover');\n  const prefixCls = getPrefixCls('popover', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const rootPrefixCls = getPrefixCls();\n  const rootClassNames = classNames(overlayClassName, hashId, cssVarCls, contextClassName, contextClassNames.root, popoverClassNames === null || popoverClassNames === void 0 ? void 0 : popoverClassNames.root);\n  const bodyClassNames = classNames(contextClassNames.body, popoverClassNames === null || popoverClassNames === void 0 ? void 0 : popoverClassNames.body);\n  const [open, setOpen] = useMergedState(false, {\n    value: (_a = props.open) !== null && _a !== void 0 ? _a : props.visible,\n    defaultValue: (_b = props.defaultOpen) !== null && _b !== void 0 ? _b : props.defaultVisible\n  });\n  const settingOpen = (value, e) => {\n    setOpen(value, true);\n    onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(value, e);\n  };\n  const onKeyDown = e => {\n    if (e.keyCode === KeyCode.ESC) {\n      settingOpen(false, e);\n    }\n  };\n  const onInternalOpenChange = value => {\n    settingOpen(value);\n  };\n  const titleNode = getRenderPropValue(title);\n  const contentNode = getRenderPropValue(content);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(Tooltip, Object.assign({\n    placement: placement,\n    trigger: trigger,\n    mouseEnterDelay: mouseEnterDelay,\n    mouseLeaveDelay: mouseLeaveDelay\n  }, otherProps, {\n    prefixCls: prefixCls,\n    classNames: {\n      root: rootClassNames,\n      body: bodyClassNames\n    },\n    styles: {\n      root: Object.assign(Object.assign(Object.assign(Object.assign({}, contextStyles.root), contextStyle), overlayStyle), styles === null || styles === void 0 ? void 0 : styles.root),\n      body: Object.assign(Object.assign({}, contextStyles.body), styles === null || styles === void 0 ? void 0 : styles.body)\n    },\n    ref: ref,\n    open: open,\n    onOpenChange: onInternalOpenChange,\n    overlay: titleNode || contentNode ? (/*#__PURE__*/React.createElement(Overlay, {\n      prefixCls: prefixCls,\n      title: titleNode,\n      content: contentNode\n    })) : null,\n    transitionName: getTransitionName(rootPrefixCls, 'zoom-big', otherProps.transitionName),\n    \"data-popover-inject\": true\n  }), cloneElement(children, {\n    onKeyDown: e => {\n      var _a, _b;\n      if (/*#__PURE__*/React.isValidElement(children)) {\n        (_b = children === null || children === void 0 ? void 0 : (_a = children.props).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n      }\n      onKeyDown(e);\n    }\n  })));\n});\nconst Popover = InternalPopover;\nPopover._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n  Popover.displayName = 'Popover';\n}\nexport default Popover;","import { genStyleHooks } from '../../theme/internal';\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n  const {\n    componentCls,\n    iconCls,\n    antCls,\n    zIndexPopup,\n    colorText,\n    colorWarning,\n    marginXXS,\n    marginXS,\n    fontSize,\n    fontWeightStrong,\n    colorTextHeading\n  } = token;\n  return {\n    [componentCls]: {\n      zIndex: zIndexPopup,\n      [`&${antCls}-popover`]: {\n        fontSize\n      },\n      [`${componentCls}-message`]: {\n        marginBottom: marginXS,\n        display: 'flex',\n        flexWrap: 'nowrap',\n        alignItems: 'start',\n        [`> ${componentCls}-message-icon ${iconCls}`]: {\n          color: colorWarning,\n          fontSize,\n          lineHeight: 1,\n          marginInlineEnd: marginXS\n        },\n        [`${componentCls}-title`]: {\n          fontWeight: fontWeightStrong,\n          color: colorTextHeading,\n          '&:only-child': {\n            fontWeight: 'normal'\n          }\n        },\n        [`${componentCls}-description`]: {\n          marginTop: marginXXS,\n          color: colorText\n        }\n      },\n      [`${componentCls}-buttons`]: {\n        textAlign: 'end',\n        whiteSpace: 'nowrap',\n        button: {\n          marginInlineStart: marginXS\n        }\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport const prepareComponentToken = token => {\n  const {\n    zIndexPopupBase\n  } = token;\n  return {\n    zIndexPopup: zIndexPopupBase + 60\n  };\n};\nexport default genStyleHooks('Popconfirm', token => genBaseStyle(token), prepareComponentToken, {\n  resetStyle: false\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport classNames from 'classnames';\nimport ActionButton from '../_util/ActionButton';\nimport { getRenderPropValue } from '../_util/getRenderPropValue';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/buttonHelpers';\nimport { ConfigContext } from '../config-provider';\nimport { useLocale } from '../locale';\nimport defaultLocale from '../locale/en_US';\nimport PopoverPurePanel from '../popover/PurePanel';\nimport useStyle from './style';\nexport const Overlay = props => {\n  const {\n    prefixCls,\n    okButtonProps,\n    cancelButtonProps,\n    title,\n    description,\n    cancelText,\n    okText,\n    okType = 'primary',\n    icon = /*#__PURE__*/React.createElement(ExclamationCircleFilled, null),\n    showCancel = true,\n    close,\n    onConfirm,\n    onCancel,\n    onPopupClick\n  } = props;\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const [contextLocale] = useLocale('Popconfirm', defaultLocale.Popconfirm);\n  const titleNode = getRenderPropValue(title);\n  const descriptionNode = getRenderPropValue(description);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-inner-content`,\n    onClick: onPopupClick\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-message`\n  }, icon && /*#__PURE__*/React.createElement(\"span\", {\n    className: `${prefixCls}-message-icon`\n  }, icon), /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-message-text`\n  }, titleNode && /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-title`\n  }, titleNode), descriptionNode && /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-description`\n  }, descriptionNode))), /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-buttons`\n  }, showCancel && (/*#__PURE__*/React.createElement(Button, Object.assign({\n    onClick: onCancel,\n    size: \"small\"\n  }, cancelButtonProps), cancelText || (contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.cancelText))), /*#__PURE__*/React.createElement(ActionButton, {\n    buttonProps: Object.assign(Object.assign({\n      size: 'small'\n    }, convertLegacyProps(okType)), okButtonProps),\n    actionFn: onConfirm,\n    close: close,\n    prefixCls: getPrefixCls('btn'),\n    quitOnNullishReturnValue: true,\n    emitEvent: true\n  }, okText || (contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.okText))));\n};\nconst PurePanel = props => {\n  const {\n      prefixCls: customizePrefixCls,\n      placement,\n      className,\n      style\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"placement\", \"className\", \"style\"]);\n  const {\n    getPrefixCls\n  } = React.useContext(ConfigContext);\n  const prefixCls = getPrefixCls('popconfirm', customizePrefixCls);\n  const [wrapCSSVar] = useStyle(prefixCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(PopoverPurePanel, {\n    placement: placement,\n    className: classNames(prefixCls, className),\n    style: style,\n    content: /*#__PURE__*/React.createElement(Overlay, Object.assign({\n      prefixCls: prefixCls\n    }, restProps))\n  }));\n};\nexport default PurePanel;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport { useComponentConfig } from '../config-provider/context';\nimport Popover from '../popover';\nimport PurePanel, { Overlay } from './PurePanel';\nimport useStyle from './style';\nconst InternalPopconfirm = /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _a, _b;\n  const {\n      prefixCls: customizePrefixCls,\n      placement = 'top',\n      trigger = 'click',\n      okType = 'primary',\n      icon = /*#__PURE__*/React.createElement(ExclamationCircleFilled, null),\n      children,\n      overlayClassName,\n      onOpenChange,\n      onVisibleChange,\n      overlayStyle,\n      styles,\n      classNames: popconfirmClassNames\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"placement\", \"trigger\", \"okType\", \"icon\", \"children\", \"overlayClassName\", \"onOpenChange\", \"onVisibleChange\", \"overlayStyle\", \"styles\", \"classNames\"]);\n  const {\n    getPrefixCls,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('popconfirm');\n  const [open, setOpen] = useMergedState(false, {\n    value: (_a = props.open) !== null && _a !== void 0 ? _a : props.visible,\n    defaultValue: (_b = props.defaultOpen) !== null && _b !== void 0 ? _b : props.defaultVisible\n  });\n  const settingOpen = (value, e) => {\n    setOpen(value, true);\n    onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(value);\n    onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(value, e);\n  };\n  const close = e => {\n    settingOpen(false, e);\n  };\n  const onConfirm = e => {\n    var _a;\n    return (_a = props.onConfirm) === null || _a === void 0 ? void 0 : _a.call(this, e);\n  };\n  const onCancel = e => {\n    var _a;\n    settingOpen(false, e);\n    (_a = props.onCancel) === null || _a === void 0 ? void 0 : _a.call(this, e);\n  };\n  const onInternalOpenChange = (value, e) => {\n    const {\n      disabled = false\n    } = props;\n    if (disabled) {\n      return;\n    }\n    settingOpen(value, e);\n  };\n  const prefixCls = getPrefixCls('popconfirm', customizePrefixCls);\n  const rootClassNames = classNames(prefixCls, contextClassName, overlayClassName, contextClassNames.root, popconfirmClassNames === null || popconfirmClassNames === void 0 ? void 0 : popconfirmClassNames.root);\n  const bodyClassNames = classNames(contextClassNames.body, popconfirmClassNames === null || popconfirmClassNames === void 0 ? void 0 : popconfirmClassNames.body);\n  const [wrapCSSVar] = useStyle(prefixCls);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(Popover, Object.assign({}, omit(restProps, ['title']), {\n    trigger: trigger,\n    placement: placement,\n    onOpenChange: onInternalOpenChange,\n    open: open,\n    ref: ref,\n    classNames: {\n      root: rootClassNames,\n      body: bodyClassNames\n    },\n    styles: {\n      root: Object.assign(Object.assign(Object.assign(Object.assign({}, contextStyles.root), contextStyle), overlayStyle), styles === null || styles === void 0 ? void 0 : styles.root),\n      body: Object.assign(Object.assign({}, contextStyles.body), styles === null || styles === void 0 ? void 0 : styles.body)\n    },\n    content: /*#__PURE__*/React.createElement(Overlay, Object.assign({\n      okType: okType,\n      icon: icon\n    }, props, {\n      prefixCls: prefixCls,\n      close: close,\n      onConfirm: onConfirm,\n      onCancel: onCancel\n    })),\n    \"data-popover-inject\": true\n  }), children));\n});\nconst Popconfirm = InternalPopconfirm;\n// We don't care debug panel\n/* istanbul ignore next */\nPopconfirm._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n  Popconfirm.displayName = 'Popconfirm';\n}\nexport default Popconfirm;","\"use client\";\n\nimport React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nexport const InternalPanel = /*#__PURE__*/forwardRef((props, ref) => {\n  const {\n    prefixCls,\n    className,\n    children,\n    size,\n    style = {}\n  } = props;\n  const panelClassName = classNames(`${prefixCls}-panel`, {\n    [`${prefixCls}-panel-hidden`]: size === 0\n  }, className);\n  const hasSize = size !== undefined;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: ref,\n    className: panelClassName,\n    style: Object.assign(Object.assign({}, style), {\n      // Use auto when start from ssr\n      flexBasis: hasSize ? size : 'auto',\n      flexGrow: hasSize ? 0 : 1\n    })\n  }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n  InternalPanel.displayName = 'Panel';\n}\nconst Panel = () => null;\nexport default Panel;","var __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction getCollapsible(collapsible) {\n  if (collapsible && typeof collapsible === 'object') {\n    return collapsible;\n  }\n  const mergedCollapsible = !!collapsible;\n  return {\n    start: mergedCollapsible,\n    end: mergedCollapsible\n  };\n}\n/**\n * Convert `children` into `items`.\n */\nexport default function useItems(children) {\n  const items = React.useMemo(() => toArray(children).filter(React.isValidElement).map(node => {\n    const {\n      props\n    } = node;\n    const {\n        collapsible\n      } = props,\n      restProps = __rest(props, [\"collapsible\"]);\n    return Object.assign(Object.assign({}, restProps), {\n      collapsible: getCollapsible(collapsible)\n    });\n  }), [children]);\n  return items;\n}","import React from 'react';\nexport function getPtg(str) {\n  return Number(str.slice(0, -1)) / 100;\n}\nfunction isPtg(itemSize) {\n  return typeof itemSize === 'string' && itemSize.endsWith('%');\n}\n/**\n * Save the size state.\n * Align the size into flex percentage base.\n */\nexport default function useSizes(items, containerSize) {\n  const propSizes = items.map(item => item.size);\n  const itemsCount = items.length;\n  const mergedContainerSize = containerSize || 0;\n  const ptg2px = ptg => ptg * mergedContainerSize;\n  // We do not need care the size state match the `items` length in `useState`.\n  // It will calculate later.\n  const [innerSizes, setInnerSizes] = React.useState(() => items.map(item => item.defaultSize));\n  const sizes = React.useMemo(() => {\n    var _a;\n    const mergedSizes = [];\n    for (let i = 0; i < itemsCount; i += 1) {\n      mergedSizes[i] = (_a = propSizes[i]) !== null && _a !== void 0 ? _a : innerSizes[i];\n    }\n    return mergedSizes;\n  }, [itemsCount, innerSizes, propSizes]);\n  // Post handle the size. Will do:\n  // 1. Convert all the px into percentage if not empty.\n  // 2. Get rest percentage for exist percentage.\n  // 3. Fill the rest percentage into empty item.\n  const postPercentSizes = React.useMemo(() => {\n    let ptgList = [];\n    let emptyCount = 0;\n    // Fill default percentage\n    for (let i = 0; i < itemsCount; i += 1) {\n      const itemSize = sizes[i];\n      if (isPtg(itemSize)) {\n        ptgList[i] = getPtg(itemSize);\n      } else if (itemSize || itemSize === 0) {\n        const num = Number(itemSize);\n        if (!Number.isNaN(num)) {\n          ptgList[i] = num / mergedContainerSize;\n        }\n      } else {\n        emptyCount += 1;\n        ptgList[i] = undefined;\n      }\n    }\n    const totalPtg = ptgList.reduce((acc, ptg) => acc + (ptg || 0), 0);\n    if (totalPtg > 1 || !emptyCount) {\n      // If total percentage is larger than 1, we will scale it down.\n      const scale = 1 / totalPtg;\n      ptgList = ptgList.map(ptg => ptg === undefined ? 0 : ptg * scale);\n    } else {\n      // If total percentage is smaller than 1, we will fill the rest.\n      const avgRest = (1 - totalPtg) / emptyCount;\n      ptgList = ptgList.map(ptg => ptg === undefined ? avgRest : ptg);\n    }\n    return ptgList;\n  }, [sizes, mergedContainerSize]);\n  const postPxSizes = React.useMemo(() => postPercentSizes.map(ptg2px), [postPercentSizes, mergedContainerSize]);\n  const postPercentMinSizes = React.useMemo(() => items.map(item => {\n    if (isPtg(item.min)) {\n      return getPtg(item.min);\n    }\n    return (item.min || 0) / mergedContainerSize;\n  }), [items, mergedContainerSize]);\n  const postPercentMaxSizes = React.useMemo(() => items.map(item => {\n    if (isPtg(item.max)) {\n      return getPtg(item.max);\n    }\n    return (item.max || mergedContainerSize) / mergedContainerSize;\n  }), [items, mergedContainerSize]);\n  // If ssr, we will use the size from developer config first.\n  const panelSizes = React.useMemo(() => containerSize ? postPxSizes : sizes, [postPxSizes, containerSize]);\n  return [panelSizes, postPxSizes, postPercentSizes, postPercentMinSizes, postPercentMaxSizes, setInnerSizes];\n}","// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownOutlined = function DownOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: DownOutlinedSvg\n  }));\n};\n\n/**![down](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4NCAyNTZoLTc1Yy01LjEgMC05LjkgMi41LTEyLjkgNi42TDUxMiA2NTQuMiAyMjcuOSAyNjIuNmMtMy00LjEtNy44LTYuNi0xMi45LTYuNmgtNzVjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDM1Mi42IDQ4Ni4xYzEyLjggMTcuNiAzOSAxNy42IDUxLjcgMGwzNTIuNi00ODYuMWMzLjktNS4zLjEtMTIuNy02LjQtMTIuN3oiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DownOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'DownOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar UpOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\" } }] }, \"name\": \"up\", \"theme\": \"outlined\" };\nexport default UpOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport UpOutlinedSvg from \"@ant-design/icons-svg/es/asn/UpOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar UpOutlined = function UpOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: UpOutlinedSvg\n  }));\n};\n\n/**![up](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg5MC41IDc1NS4zTDUzNy45IDI2OS4yYy0xMi44LTE3LjYtMzktMTcuNi01MS43IDBMMTMzLjUgNzU1LjNBOCA4IDAgMDAxNDAgNzY4aDc1YzUuMSAwIDkuOS0yLjUgMTIuOS02LjZMNTEyIDM2OS44bDI4NC4xIDM5MS42YzMgNC4xIDcuOCA2LjYgMTIuOSA2LjZoNzVjNi41IDAgMTAuMy03LjQgNi41LTEyLjd6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(UpOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'UpOutlined';\n}\nexport default RefIcon;","\"use client\";\n\nimport React, { useState } from 'react';\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport UpOutlined from \"@ant-design/icons/es/icons/UpOutlined\";\nimport classNames from 'classnames';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nfunction getValidNumber(num) {\n  return typeof num === 'number' && !Number.isNaN(num) ? Math.round(num) : 0;\n}\nconst SplitBar = props => {\n  const {\n    prefixCls,\n    vertical,\n    index,\n    active,\n    ariaNow,\n    ariaMin,\n    ariaMax,\n    resizable,\n    startCollapsible,\n    endCollapsible,\n    onOffsetStart,\n    onOffsetUpdate,\n    onOffsetEnd,\n    onCollapse,\n    lazy,\n    containerSize\n  } = props;\n  const splitBarPrefixCls = `${prefixCls}-bar`;\n  // ======================== Resize ========================\n  const [startPos, setStartPos] = useState(null);\n  const [constrainedOffset, setConstrainedOffset] = useState(0);\n  const constrainedOffsetX = vertical ? 0 : constrainedOffset;\n  const constrainedOffsetY = vertical ? constrainedOffset : 0;\n  const onMouseDown = e => {\n    if (resizable && e.currentTarget) {\n      setStartPos([e.pageX, e.pageY]);\n      onOffsetStart(index);\n    }\n  };\n  const onTouchStart = e => {\n    if (resizable && e.touches.length === 1) {\n      const touch = e.touches[0];\n      setStartPos([touch.pageX, touch.pageY]);\n      onOffsetStart(index);\n    }\n  };\n  // Updated constraint calculation\n  const getConstrainedOffset = rawOffset => {\n    const currentPos = containerSize * ariaNow / 100;\n    const newPos = currentPos + rawOffset;\n    // Calculate available space\n    const minAllowed = Math.max(0, containerSize * ariaMin / 100);\n    const maxAllowed = Math.min(containerSize, containerSize * ariaMax / 100);\n    // Constrain new position within bounds\n    const clampedPos = Math.max(minAllowed, Math.min(maxAllowed, newPos));\n    return clampedPos - currentPos;\n  };\n  const handleLazyMove = useEvent((offsetX, offsetY) => {\n    const constrainedOffsetValue = getConstrainedOffset(vertical ? offsetY : offsetX);\n    setConstrainedOffset(constrainedOffsetValue);\n  });\n  const handleLazyEnd = useEvent(() => {\n    onOffsetUpdate(index, constrainedOffsetX, constrainedOffsetY);\n    setConstrainedOffset(0);\n  });\n  React.useEffect(() => {\n    if (startPos) {\n      const onMouseMove = e => {\n        const {\n          pageX,\n          pageY\n        } = e;\n        const offsetX = pageX - startPos[0];\n        const offsetY = pageY - startPos[1];\n        if (lazy) {\n          handleLazyMove(offsetX, offsetY);\n        } else {\n          onOffsetUpdate(index, offsetX, offsetY);\n        }\n      };\n      const onMouseUp = () => {\n        if (lazy) {\n          handleLazyEnd();\n        }\n        setStartPos(null);\n        onOffsetEnd();\n      };\n      const handleTouchMove = e => {\n        if (e.touches.length === 1) {\n          const touch = e.touches[0];\n          const offsetX = touch.pageX - startPos[0];\n          const offsetY = touch.pageY - startPos[1];\n          if (lazy) {\n            handleLazyMove(offsetX, offsetY);\n          } else {\n            onOffsetUpdate(index, offsetX, offsetY);\n          }\n        }\n      };\n      const handleTouchEnd = () => {\n        if (lazy) {\n          handleLazyEnd();\n        }\n        setStartPos(null);\n        onOffsetEnd();\n      };\n      window.addEventListener('touchmove', handleTouchMove);\n      window.addEventListener('touchend', handleTouchEnd);\n      window.addEventListener('mousemove', onMouseMove);\n      window.addEventListener('mouseup', onMouseUp);\n      return () => {\n        window.removeEventListener('mousemove', onMouseMove);\n        window.removeEventListener('mouseup', onMouseUp);\n        window.removeEventListener('touchmove', handleTouchMove);\n        window.removeEventListener('touchend', handleTouchEnd);\n      };\n    }\n  }, [startPos, lazy, vertical, index, containerSize, ariaNow, ariaMin, ariaMax]);\n  const transformStyle = {\n    [`--${splitBarPrefixCls}-preview-offset`]: `${constrainedOffset}px`\n  };\n  // ======================== Render ========================\n  const StartIcon = vertical ? UpOutlined : LeftOutlined;\n  const EndIcon = vertical ? DownOutlined : RightOutlined;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: splitBarPrefixCls,\n    role: \"separator\",\n    \"aria-valuenow\": getValidNumber(ariaNow),\n    \"aria-valuemin\": getValidNumber(ariaMin),\n    \"aria-valuemax\": getValidNumber(ariaMax)\n  }, lazy && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${splitBarPrefixCls}-preview`, {\n      [`${splitBarPrefixCls}-preview-active`]: !!constrainedOffset\n    }),\n    style: transformStyle\n  })), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${splitBarPrefixCls}-dragger`, {\n      [`${splitBarPrefixCls}-dragger-disabled`]: !resizable,\n      [`${splitBarPrefixCls}-dragger-active`]: active\n    }),\n    onMouseDown: onMouseDown,\n    onTouchStart: onTouchStart\n  }), startCollapsible && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${splitBarPrefixCls}-collapse-bar`, `${splitBarPrefixCls}-collapse-bar-start`),\n    onClick: () => onCollapse(index, 'start')\n  }, /*#__PURE__*/React.createElement(StartIcon, {\n    className: classNames(`${splitBarPrefixCls}-collapse-icon`, `${splitBarPrefixCls}-collapse-start`)\n  }))), endCollapsible && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${splitBarPrefixCls}-collapse-bar`, `${splitBarPrefixCls}-collapse-bar-end`),\n    onClick: () => onCollapse(index, 'end')\n  }, /*#__PURE__*/React.createElement(EndIcon, {\n    className: classNames(`${splitBarPrefixCls}-collapse-icon`, `${splitBarPrefixCls}-collapse-end`)\n  }))));\n};\nexport default SplitBar;","import { resetComponent } from '../../style';\nimport { genStyleHooks } from '../../theme/internal';\nconst genRtlStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`&-rtl${componentCls}-horizontal`]: {\n      [`> ${componentCls}-bar`]: {\n        [`${componentCls}-bar-collapse-previous`]: {\n          insetInlineEnd: 0,\n          insetInlineStart: 'unset'\n        },\n        [`${componentCls}-bar-collapse-next`]: {\n          insetInlineEnd: 'unset',\n          insetInlineStart: 0\n        }\n      }\n    },\n    [`&-rtl${componentCls}-vertical`]: {\n      [`> ${componentCls}-bar`]: {\n        [`${componentCls}-bar-collapse-previous`]: {\n          insetInlineEnd: '50%',\n          insetInlineStart: 'unset'\n        },\n        [`${componentCls}-bar-collapse-next`]: {\n          insetInlineEnd: '50%',\n          insetInlineStart: 'unset'\n        }\n      }\n    }\n  };\n};\nconst centerStyle = {\n  position: 'absolute',\n  top: '50%',\n  left: {\n    _skip_check_: true,\n    value: '50%'\n  },\n  transform: 'translate(-50%, -50%)'\n};\nconst genSplitterStyle = token => {\n  const {\n    componentCls,\n    colorFill,\n    splitBarDraggableSize,\n    splitBarSize,\n    splitTriggerSize,\n    controlItemBgHover,\n    controlItemBgActive,\n    controlItemBgActiveHover,\n    prefixCls\n  } = token;\n  const splitBarCls = `${componentCls}-bar`;\n  const splitMaskCls = `${componentCls}-mask`;\n  const splitPanelCls = `${componentCls}-panel`;\n  const halfTriggerSize = token.calc(splitTriggerSize).div(2).equal();\n  const splitterBarPreviewOffsetVar = `${prefixCls}-bar-preview-offset`;\n  const splitterBarPreviewStyle = {\n    position: 'absolute',\n    background: token.colorPrimary,\n    opacity: 0.2,\n    pointerEvents: 'none',\n    transition: 'none',\n    zIndex: 1,\n    display: 'none'\n  };\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      display: 'flex',\n      width: '100%',\n      height: '100%',\n      alignItems: 'stretch',\n      // ======================== SplitBar ========================\n      // Use `>` to avoid conflict with mix layout\n      [`> ${splitBarCls}`]: {\n        flex: 'none',\n        position: 'relative',\n        userSelect: 'none',\n        // ======================= Dragger =======================\n        [`${splitBarCls}-dragger`]: Object.assign(Object.assign({}, centerStyle), {\n          zIndex: 1,\n          // Hover background\n          '&::before': Object.assign({\n            content: '\"\"',\n            background: controlItemBgHover\n          }, centerStyle),\n          // Spinner\n          '&::after': Object.assign({\n            content: '\"\"',\n            background: colorFill\n          }, centerStyle),\n          // Hover\n          [`&:hover:not(${splitBarCls}-dragger-active)`]: {\n            '&::before': {\n              background: controlItemBgActive\n            }\n          },\n          // Active\n          '&-active': {\n            zIndex: 2,\n            '&::before': {\n              background: controlItemBgActiveHover\n            }\n          },\n          // Disabled, not use `pointer-events: none` since still need trigger collapse\n          [`&-disabled${splitBarCls}-dragger`]: {\n            zIndex: 0,\n            '&, &:hover, &-active': {\n              cursor: 'default',\n              '&::before': {\n                background: controlItemBgHover\n              }\n            },\n            '&::after': {\n              display: 'none'\n            }\n          }\n        }),\n        // ======================= Collapse =======================\n        [`${splitBarCls}-collapse-bar`]: Object.assign(Object.assign({}, centerStyle), {\n          zIndex: token.zIndexPopupBase,\n          background: controlItemBgHover,\n          fontSize: token.fontSizeSM,\n          borderRadius: token.borderRadiusXS,\n          color: token.colorText,\n          cursor: 'pointer',\n          opacity: 0,\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center',\n          // Hover\n          '&:hover': {\n            background: controlItemBgActive\n          },\n          // Active\n          '&:active': {\n            background: controlItemBgActiveHover\n          }\n        }),\n        // ======================== Status ========================\n        // Hover\n        '&:hover, &:active': {\n          [`${splitBarCls}-collapse-bar`]: {\n            opacity: 1\n          }\n        }\n      },\n      // =========================== Mask =========================\n      // Util dom for handle cursor\n      [splitMaskCls]: {\n        position: 'fixed',\n        zIndex: token.zIndexPopupBase,\n        inset: 0,\n        '&-horizontal': {\n          cursor: 'col-resize'\n        },\n        '&-vertical': {\n          cursor: 'row-resize'\n        }\n      },\n      // ==========================================================\n      // ==                        Layout                        ==\n      // ==========================================================\n      '&-horizontal': {\n        flexDirection: 'row',\n        [`> ${splitBarCls}`]: {\n          width: 0,\n          // ======================= Preview =======================\n          [`${splitBarCls}-preview`]: Object.assign(Object.assign({\n            height: '100%',\n            width: splitBarSize\n          }, splitterBarPreviewStyle), {\n            [`&${splitBarCls}-preview-active`]: {\n              display: 'block',\n              transform: `translateX(var(--${splitterBarPreviewOffsetVar}))`\n            }\n          }),\n          // ======================= Dragger =======================\n          [`${splitBarCls}-dragger`]: {\n            cursor: 'col-resize',\n            height: '100%',\n            width: splitTriggerSize,\n            '&::before': {\n              height: '100%',\n              width: splitBarSize\n            },\n            '&::after': {\n              height: splitBarDraggableSize,\n              width: splitBarSize\n            }\n          },\n          // ======================= Collapse =======================\n          [`${splitBarCls}-collapse-bar`]: {\n            width: token.fontSizeSM,\n            height: token.controlHeightSM,\n            '&-start': {\n              left: {\n                _skip_check_: true,\n                value: 'auto'\n              },\n              right: {\n                _skip_check_: true,\n                value: halfTriggerSize\n              },\n              transform: 'translateY(-50%)'\n            },\n            '&-end': {\n              left: {\n                _skip_check_: true,\n                value: halfTriggerSize\n              },\n              right: {\n                _skip_check_: true,\n                value: 'auto'\n              },\n              transform: 'translateY(-50%)'\n            }\n          }\n        }\n      },\n      '&-vertical': {\n        flexDirection: 'column',\n        [`> ${splitBarCls}`]: {\n          height: 0,\n          // ======================= Preview =======================\n          [`${splitBarCls}-preview`]: Object.assign(Object.assign({\n            height: splitBarSize,\n            width: '100%'\n          }, splitterBarPreviewStyle), {\n            [`&${splitBarCls}-preview-active`]: {\n              display: 'block',\n              transform: `translateY(var(--${splitterBarPreviewOffsetVar}))`\n            }\n          }),\n          // ======================= Dragger =======================\n          [`${splitBarCls}-dragger`]: {\n            cursor: 'row-resize',\n            width: '100%',\n            height: splitTriggerSize,\n            '&::before': {\n              width: '100%',\n              height: splitBarSize\n            },\n            '&::after': {\n              width: splitBarDraggableSize,\n              height: splitBarSize\n            }\n          },\n          // ======================= Collapse =======================\n          [`${splitBarCls}-collapse-bar`]: {\n            height: token.fontSizeSM,\n            width: token.controlHeightSM,\n            '&-start': {\n              top: 'auto',\n              bottom: halfTriggerSize,\n              transform: 'translateX(-50%)'\n            },\n            '&-end': {\n              top: halfTriggerSize,\n              bottom: 'auto',\n              transform: 'translateX(-50%)'\n            }\n          }\n        }\n      },\n      // ========================= Panels =========================\n      [splitPanelCls]: {\n        overflow: 'auto',\n        padding: '0 1px',\n        scrollbarWidth: 'thin',\n        boxSizing: 'border-box',\n        '&-hidden': {\n          padding: 0,\n          overflow: 'hidden'\n        },\n        [`&:has(${componentCls}:only-child)`]: {\n          overflow: 'hidden'\n        }\n      }\n    }), genRtlStyle(token))\n  };\n};\nexport const prepareComponentToken = token => {\n  var _a;\n  const splitBarSize = token.splitBarSize || 2;\n  const splitTriggerSize = token.splitTriggerSize || 6;\n  // https://github.com/ant-design/ant-design/pull/51223\n  const resizeSpinnerSize = token.resizeSpinnerSize || 20;\n  const splitBarDraggableSize = (_a = token.splitBarDraggableSize) !== null && _a !== void 0 ? _a : resizeSpinnerSize;\n  return {\n    splitBarSize,\n    splitTriggerSize,\n    splitBarDraggableSize,\n    resizeSpinnerSize\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Splitter', token => [genSplitterStyle(token)], prepareComponentToken);","\"use client\";\n\n/* eslint-disable react/no-array-index-key */\nimport React, { useState } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useItems from './hooks/useItems';\nimport useResizable from './hooks/useResizable';\nimport useResize from './hooks/useResize';\nimport useSizes from './hooks/useSizes';\nimport { InternalPanel } from './Panel';\nimport SplitBar from './SplitBar';\nimport useStyle from './style';\nconst Splitter = props => {\n  const {\n    prefixCls: customizePrefixCls,\n    className,\n    style,\n    layout = 'horizontal',\n    children,\n    rootClassName,\n    onResizeStart,\n    onResize,\n    onResizeEnd,\n    lazy\n  } = props;\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('splitter');\n  const prefixCls = getPrefixCls('splitter', customizePrefixCls);\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  // ======================== Direct ========================\n  const isVertical = layout === 'vertical';\n  const isRTL = direction === 'rtl';\n  const reverse = !isVertical && isRTL;\n  // ====================== Items Data ======================\n  const items = useItems(children);\n  // >>> Warning for uncontrolled\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Splitter');\n    let existSize = false;\n    let existUndefinedSize = false;\n    items.forEach(item => {\n      if (item.size !== undefined) {\n        existSize = true;\n      } else {\n        existUndefinedSize = true;\n      }\n    });\n    if (existSize && existUndefinedSize && !onResize) {\n      process.env.NODE_ENV !== \"production\" ? warning(false, 'usage', 'When part of `Splitter.Panel` has `size`, `onResize` is required or change `size` to `defaultSize`.') : void 0;\n    }\n  }\n  // ====================== Container =======================\n  const [containerSize, setContainerSize] = useState();\n  const onContainerResize = size => {\n    const {\n      offsetWidth,\n      offsetHeight\n    } = size;\n    const containerSize = isVertical ? offsetHeight : offsetWidth;\n    // Skip when container has no size, Such as nested in a hidden tab panel\n    // to fix: https://github.com/ant-design/ant-design/issues/51106\n    if (containerSize === 0) {\n      return;\n    }\n    setContainerSize(containerSize);\n  };\n  // ========================= Size =========================\n  const [panelSizes, itemPxSizes, itemPtgSizes, itemPtgMinSizes, itemPtgMaxSizes, updateSizes] = useSizes(items, containerSize);\n  // ====================== Resizable =======================\n  const resizableInfos = useResizable(items, itemPxSizes, isRTL);\n  const [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex] = useResize(items, resizableInfos, itemPtgSizes, containerSize, updateSizes, isRTL);\n  // ======================== Events ========================\n  const onInternalResizeStart = useEvent(index => {\n    onOffsetStart(index);\n    onResizeStart === null || onResizeStart === void 0 ? void 0 : onResizeStart(itemPxSizes);\n  });\n  const onInternalResizeUpdate = useEvent((index, offset) => {\n    const nextSizes = onOffsetUpdate(index, offset);\n    onResize === null || onResize === void 0 ? void 0 : onResize(nextSizes);\n  });\n  const onInternalResizeEnd = useEvent(() => {\n    onOffsetEnd();\n    onResizeEnd === null || onResizeEnd === void 0 ? void 0 : onResizeEnd(itemPxSizes);\n  });\n  const onInternalCollapse = useEvent((index, type) => {\n    const nextSizes = onCollapse(index, type);\n    onResize === null || onResize === void 0 ? void 0 : onResize(nextSizes);\n    onResizeEnd === null || onResizeEnd === void 0 ? void 0 : onResizeEnd(nextSizes);\n  });\n  // ======================== Styles ========================\n  const containerClassName = classNames(prefixCls, className, `${prefixCls}-${layout}`, {\n    [`${prefixCls}-rtl`]: isRTL\n  }, rootClassName, contextClassName, cssVarCls, rootCls, hashId);\n  // ======================== Render ========================\n  const maskCls = `${prefixCls}-mask`;\n  const stackSizes = React.useMemo(() => {\n    const mergedSizes = [];\n    let stack = 0;\n    for (let i = 0; i < items.length; i += 1) {\n      stack += itemPtgSizes[i];\n      mergedSizes.push(stack);\n    }\n    return mergedSizes;\n  }, [itemPtgSizes]);\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onContainerResize\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: mergedStyle,\n    className: containerClassName\n  }, items.map((item, idx) => {\n    // Panel\n    const panel = /*#__PURE__*/React.createElement(InternalPanel, Object.assign({}, item, {\n      prefixCls: prefixCls,\n      size: panelSizes[idx]\n    }));\n    // Split Bar\n    let splitBar = null;\n    const resizableInfo = resizableInfos[idx];\n    if (resizableInfo) {\n      const ariaMinStart = (stackSizes[idx - 1] || 0) + itemPtgMinSizes[idx];\n      const ariaMinEnd = (stackSizes[idx + 1] || 100) - itemPtgMaxSizes[idx + 1];\n      const ariaMaxStart = (stackSizes[idx - 1] || 0) + itemPtgMaxSizes[idx];\n      const ariaMaxEnd = (stackSizes[idx + 1] || 100) - itemPtgMinSizes[idx + 1];\n      splitBar = /*#__PURE__*/React.createElement(SplitBar, {\n        lazy: lazy,\n        index: idx,\n        active: movingIndex === idx,\n        prefixCls: prefixCls,\n        vertical: isVertical,\n        resizable: resizableInfo.resizable,\n        ariaNow: stackSizes[idx] * 100,\n        ariaMin: Math.max(ariaMinStart, ariaMinEnd) * 100,\n        ariaMax: Math.min(ariaMaxStart, ariaMaxEnd) * 100,\n        startCollapsible: resizableInfo.startCollapsible,\n        endCollapsible: resizableInfo.endCollapsible,\n        onOffsetStart: onInternalResizeStart,\n        onOffsetUpdate: (index, offsetX, offsetY) => {\n          let offset = isVertical ? offsetY : offsetX;\n          if (reverse) {\n            offset = -offset;\n          }\n          onInternalResizeUpdate(index, offset);\n        },\n        onOffsetEnd: onInternalResizeEnd,\n        onCollapse: onInternalCollapse,\n        containerSize: containerSize || 0\n      });\n    }\n    return /*#__PURE__*/React.createElement(React.Fragment, {\n      key: `split-panel-${idx}`\n    }, panel, splitBar);\n  }), typeof movingIndex === 'number' && (/*#__PURE__*/React.createElement(\"div\", {\n    \"aria-hidden\": true,\n    className: classNames(maskCls, `${maskCls}-${layout}`)\n  })))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Splitter.displayName = 'Splitter';\n}\nexport default Splitter;","\"use client\";\n\nimport Panel from './Panel';\nimport SplitterComp from './Splitter';\nconst Splitter = SplitterComp;\nSplitter.Panel = Panel;\nexport default Splitter;","import * as React from 'react';\nexport default function useResizable(items, pxSizes, isRTL) {\n  return React.useMemo(() => {\n    const resizeInfos = [];\n    for (let i = 0; i < items.length - 1; i += 1) {\n      const prevItem = items[i];\n      const nextItem = items[i + 1];\n      const prevSize = pxSizes[i];\n      const nextSize = pxSizes[i + 1];\n      const {\n        resizable: prevResizable = true,\n        min: prevMin,\n        collapsible: prevCollapsible\n      } = prevItem;\n      const {\n        resizable: nextResizable = true,\n        min: nextMin,\n        collapsible: nextCollapsible\n      } = nextItem;\n      const mergedResizable =\n      // Both need to be resizable\n      prevResizable && nextResizable && (\n      // Prev is not collapsed and limit min size\n      prevSize !== 0 || !prevMin) && (\n      // Next is not collapsed and limit min size\n      nextSize !== 0 || !nextMin);\n      const startCollapsible =\n      // Self is collapsible\n      prevCollapsible.end && prevSize > 0 ||\n      // Collapsed and can be collapsed\n      nextCollapsible.start && nextSize === 0 && prevSize > 0;\n      const endCollapsible =\n      // Self is collapsible\n      nextCollapsible.start && nextSize > 0 ||\n      // Collapsed and can be collapsed\n      prevCollapsible.end && prevSize === 0 && nextSize > 0;\n      resizeInfos[i] = {\n        resizable: mergedResizable,\n        startCollapsible: !!(isRTL ? endCollapsible : startCollapsible),\n        endCollapsible: !!(isRTL ? startCollapsible : endCollapsible)\n      };\n    }\n    return resizeInfos;\n  }, [pxSizes, items]);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { getPtg } from './useSizes';\n/**\n * Handle user drag resize logic.\n */\nexport default function useResize(items, resizableInfos, percentSizes, containerSize, updateSizes, isRTL) {\n  const limitSizes = items.map(item => [item.min, item.max]);\n  const mergedContainerSize = containerSize || 0;\n  const ptg2px = ptg => ptg * mergedContainerSize;\n  // ======================== Resize ========================\n  function getLimitSize(str, defaultLimit) {\n    if (typeof str === 'string') {\n      return ptg2px(getPtg(str));\n    }\n    return str !== null && str !== void 0 ? str : defaultLimit;\n  }\n  // Real px sizes\n  const [cacheSizes, setCacheSizes] = React.useState([]);\n  const cacheCollapsedSize = React.useRef([]);\n  /**\n   * When start drag, check the direct is `start` or `end`.\n   * This will handle when 2 splitter bar are in the same position.\n   */\n  const [movingIndex, setMovingIndex] = React.useState(null);\n  const getPxSizes = () => percentSizes.map(ptg2px);\n  const onOffsetStart = index => {\n    setCacheSizes(getPxSizes());\n    setMovingIndex({\n      index,\n      confirmed: false\n    });\n  };\n  const onOffsetUpdate = (index, offset) => {\n    var _a;\n    // First time trigger move index update is not sync in the state\n    let confirmedIndex = null;\n    // We need to know what the real index is.\n    if ((!movingIndex || !movingIndex.confirmed) && offset !== 0) {\n      // Search for the real index\n      if (offset > 0) {\n        confirmedIndex = index;\n        setMovingIndex({\n          index,\n          confirmed: true\n        });\n      } else {\n        for (let i = index; i >= 0; i -= 1) {\n          if (cacheSizes[i] > 0 && resizableInfos[i].resizable) {\n            confirmedIndex = i;\n            setMovingIndex({\n              index: i,\n              confirmed: true\n            });\n            break;\n          }\n        }\n      }\n    }\n    const mergedIndex = (_a = confirmedIndex !== null && confirmedIndex !== void 0 ? confirmedIndex : movingIndex === null || movingIndex === void 0 ? void 0 : movingIndex.index) !== null && _a !== void 0 ? _a : index;\n    const numSizes = _toConsumableArray(cacheSizes);\n    const nextIndex = mergedIndex + 1;\n    // Get boundary\n    const startMinSize = getLimitSize(limitSizes[mergedIndex][0], 0);\n    const endMinSize = getLimitSize(limitSizes[nextIndex][0], 0);\n    const startMaxSize = getLimitSize(limitSizes[mergedIndex][1], mergedContainerSize);\n    const endMaxSize = getLimitSize(limitSizes[nextIndex][1], mergedContainerSize);\n    let mergedOffset = offset;\n    // Align with the boundary\n    if (numSizes[mergedIndex] + mergedOffset < startMinSize) {\n      mergedOffset = startMinSize - numSizes[mergedIndex];\n    }\n    if (numSizes[nextIndex] - mergedOffset < endMinSize) {\n      mergedOffset = numSizes[nextIndex] - endMinSize;\n    }\n    if (numSizes[mergedIndex] + mergedOffset > startMaxSize) {\n      mergedOffset = startMaxSize - numSizes[mergedIndex];\n    }\n    if (numSizes[nextIndex] - mergedOffset > endMaxSize) {\n      mergedOffset = numSizes[nextIndex] - endMaxSize;\n    }\n    // Do offset\n    numSizes[mergedIndex] += mergedOffset;\n    numSizes[nextIndex] -= mergedOffset;\n    updateSizes(numSizes);\n    return numSizes;\n  };\n  const onOffsetEnd = () => {\n    setMovingIndex(null);\n  };\n  // ======================= Collapse =======================\n  const onCollapse = (index, type) => {\n    const currentSizes = getPxSizes();\n    const adjustedType = isRTL ? type === 'start' ? 'end' : 'start' : type;\n    const currentIndex = adjustedType === 'start' ? index : index + 1;\n    const targetIndex = adjustedType === 'start' ? index + 1 : index;\n    const currentSize = currentSizes[currentIndex];\n    const targetSize = currentSizes[targetIndex];\n    if (currentSize !== 0 && targetSize !== 0) {\n      // Collapse directly\n      currentSizes[currentIndex] = 0;\n      currentSizes[targetIndex] += currentSize;\n      cacheCollapsedSize.current[index] = currentSize;\n    } else {\n      const totalSize = currentSize + targetSize;\n      const currentSizeMin = getLimitSize(limitSizes[currentIndex][0], 0);\n      const currentSizeMax = getLimitSize(limitSizes[currentIndex][1], mergedContainerSize);\n      const targetSizeMin = getLimitSize(limitSizes[targetIndex][0], 0);\n      const targetSizeMax = getLimitSize(limitSizes[targetIndex][1], mergedContainerSize);\n      const limitStart = Math.max(currentSizeMin, totalSize - targetSizeMax);\n      const limitEnd = Math.min(currentSizeMax, totalSize - targetSizeMin);\n      const halfOffset = (limitEnd - limitStart) / 2;\n      const targetCacheCollapsedSize = cacheCollapsedSize.current[index];\n      const currentCacheCollapsedSize = totalSize - targetCacheCollapsedSize;\n      const shouldUseCache = targetCacheCollapsedSize && targetCacheCollapsedSize <= targetSizeMax && targetCacheCollapsedSize >= targetSizeMin && currentCacheCollapsedSize <= currentSizeMax && currentCacheCollapsedSize >= currentSizeMin;\n      if (shouldUseCache) {\n        currentSizes[targetIndex] = targetCacheCollapsedSize;\n        currentSizes[currentIndex] = currentCacheCollapsedSize;\n      } else {\n        currentSizes[currentIndex] -= halfOffset;\n        currentSizes[targetIndex] += halfOffset;\n      }\n    }\n    updateSizes(currentSizes);\n    return currentSizes;\n  };\n  return [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex === null || movingIndex === void 0 ? void 0 : movingIndex.index];\n}","const extendsObject = function () {\n  const result = Object.assign({}, arguments.length <= 0 ? undefined : arguments[0]);\n  for (let i = 1; i < arguments.length; i++) {\n    const obj = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (obj) {\n      Object.keys(obj).forEach(key => {\n        const val = obj[key];\n        if (val !== undefined) {\n          result[key] = val;\n        }\n      });\n    }\n  }\n  return result;\n};\nexport default extendsObject;","import React from 'react';\nimport { useToken } from '../theme/internal';\nexport const responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nconst getResponsiveMap = token => ({\n  xs: `(max-width: ${token.screenXSMax}px)`,\n  sm: `(min-width: ${token.screenSM}px)`,\n  md: `(min-width: ${token.screenMD}px)`,\n  lg: `(min-width: ${token.screenLG}px)`,\n  xl: `(min-width: ${token.screenXL}px)`,\n  xxl: `(min-width: ${token.screenXXL}px)`\n});\n/**\n * Ensures that the breakpoints token are valid, in good order\n * For each breakpoint : screenMin <= screen <= screenMax and screenMax <= nextScreenMin\n */\nconst validateBreakpoints = token => {\n  const indexableToken = token;\n  const revBreakpoints = [].concat(responsiveArray).reverse();\n  revBreakpoints.forEach((breakpoint, i) => {\n    const breakpointUpper = breakpoint.toUpperCase();\n    const screenMin = `screen${breakpointUpper}Min`;\n    const screen = `screen${breakpointUpper}`;\n    if (!(indexableToken[screenMin] <= indexableToken[screen])) {\n      throw new Error(`${screenMin}<=${screen} fails : !(${indexableToken[screenMin]}<=${indexableToken[screen]})`);\n    }\n    if (i < revBreakpoints.length - 1) {\n      const screenMax = `screen${breakpointUpper}Max`;\n      if (!(indexableToken[screen] <= indexableToken[screenMax])) {\n        throw new Error(`${screen}<=${screenMax} fails : !(${indexableToken[screen]}<=${indexableToken[screenMax]})`);\n      }\n      const nextBreakpointUpperMin = revBreakpoints[i + 1].toUpperCase();\n      const nextScreenMin = `screen${nextBreakpointUpperMin}Min`;\n      if (!(indexableToken[screenMax] <= indexableToken[nextScreenMin])) {\n        throw new Error(`${screenMax}<=${nextScreenMin} fails : !(${indexableToken[screenMax]}<=${indexableToken[nextScreenMin]})`);\n      }\n    }\n  });\n  return token;\n};\nexport default function useResponsiveObserver() {\n  const [, token] = useToken();\n  const responsiveMap = getResponsiveMap(validateBreakpoints(token));\n  // To avoid repeat create instance, we add `useMemo` here.\n  return React.useMemo(() => {\n    const subscribers = new Map();\n    let subUid = -1;\n    let screens = {};\n    return {\n      matchHandlers: {},\n      dispatch(pointMap) {\n        screens = pointMap;\n        subscribers.forEach(func => func(screens));\n        return subscribers.size >= 1;\n      },\n      subscribe(func) {\n        if (!subscribers.size) {\n          this.register();\n        }\n        subUid += 1;\n        subscribers.set(subUid, func);\n        func(screens);\n        return subUid;\n      },\n      unsubscribe(paramToken) {\n        subscribers.delete(paramToken);\n        if (!subscribers.size) {\n          this.unregister();\n        }\n      },\n      unregister() {\n        Object.keys(responsiveMap).forEach(screen => {\n          const matchMediaQuery = responsiveMap[screen];\n          const handler = this.matchHandlers[matchMediaQuery];\n          handler === null || handler === void 0 ? void 0 : handler.mql.removeListener(handler === null || handler === void 0 ? void 0 : handler.listener);\n        });\n        subscribers.clear();\n      },\n      register() {\n        Object.keys(responsiveMap).forEach(screen => {\n          const matchMediaQuery = responsiveMap[screen];\n          const listener = _ref => {\n            let {\n              matches\n            } = _ref;\n            this.dispatch(Object.assign(Object.assign({}, screens), {\n              [screen]: matches\n            }));\n          };\n          const mql = window.matchMedia(matchMediaQuery);\n          mql.addListener(listener);\n          this.matchHandlers[matchMediaQuery] = {\n            mql,\n            listener\n          };\n          listener(mql);\n        });\n      },\n      responsiveMap\n    };\n  }, [token]);\n}\nexport const matchScreen = (screens, screenSizes) => {\n  if (screenSizes && typeof screenSizes === 'object') {\n    for (let i = 0; i < responsiveArray.length; i++) {\n      const breakpoint = responsiveArray[i];\n      if (screens[breakpoint] && screenSizes[breakpoint] !== undefined) {\n        return screenSizes[breakpoint];\n      }\n    }\n  }\n};","\"use client\";\n\nimport * as React from 'react';\nimport { FastColor } from '@ant-design/fast-color';\nimport { useLocale } from '../locale';\nimport { useToken } from '../theme/internal';\nconst Empty = () => {\n  const [, token] = useToken();\n  const [locale] = useLocale('Empty');\n  const bgColor = new FastColor(token.colorBgBase);\n  // Dark Theme need more dark of this\n  const themeStyle = bgColor.toHsl().l < 0.5 ? {\n    opacity: 0.65\n  } : {};\n  return /*#__PURE__*/React.createElement(\"svg\", {\n    style: themeStyle,\n    width: \"184\",\n    height: \"152\",\n    viewBox: \"0 0 184 152\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, /*#__PURE__*/React.createElement(\"title\", null, (locale === null || locale === void 0 ? void 0 : locale.description) || 'Empty'), /*#__PURE__*/React.createElement(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    transform: \"translate(24 31.67)\"\n  }, /*#__PURE__*/React.createElement(\"ellipse\", {\n    fillOpacity: \".8\",\n    fill: \"#F5F5F7\",\n    cx: \"67.797\",\n    cy: \"106.89\",\n    rx: \"67.797\",\n    ry: \"12.668\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",\n    fill: \"#AEB8C2\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n    fill: \"url(#linearGradient-1)\",\n    transform: \"translate(13.56)\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",\n    fill: \"#F5F5F7\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",\n    fill: \"#DCE0E6\"\n  })), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",\n    fill: \"#DCE0E6\"\n  }), /*#__PURE__*/React.createElement(\"g\", {\n    transform: \"translate(149.65 15.383)\",\n    fill: \"#FFF\"\n  }, /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: \"20.654\",\n    cy: \"3.167\",\n    rx: \"2.849\",\n    ry: \"2.815\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"\n  }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Empty.displayName = 'EmptyImage';\n}\nexport default Empty;","\"use client\";\n\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { FastColor } from '@ant-design/fast-color';\nimport { useToken } from '../theme/internal';\nimport { useLocale } from '../locale';\nconst Simple = () => {\n  const [, token] = useToken();\n  const [locale] = useLocale('Empty');\n  const {\n    colorFill,\n    colorFillTertiary,\n    colorFillQuaternary,\n    colorBgContainer\n  } = token;\n  const {\n    borderColor,\n    shadowColor,\n    contentColor\n  } = useMemo(() => ({\n    borderColor: new FastColor(colorFill).onBackground(colorBgContainer).toHexString(),\n    shadowColor: new FastColor(colorFillTertiary).onBackground(colorBgContainer).toHexString(),\n    contentColor: new FastColor(colorFillQuaternary).onBackground(colorBgContainer).toHexString()\n  }), [colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer]);\n  return /*#__PURE__*/React.createElement(\"svg\", {\n    width: \"64\",\n    height: \"41\",\n    viewBox: \"0 0 64 41\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, /*#__PURE__*/React.createElement(\"title\", null, (locale === null || locale === void 0 ? void 0 : locale.description) || 'Empty'), /*#__PURE__*/React.createElement(\"g\", {\n    transform: \"translate(0 1)\",\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, /*#__PURE__*/React.createElement(\"ellipse\", {\n    fill: shadowColor,\n    cx: \"32\",\n    cy: \"33\",\n    rx: \"32\",\n    ry: \"7\"\n  }), /*#__PURE__*/React.createElement(\"g\", {\n    fillRule: \"nonzero\",\n    stroke: borderColor\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n    fill: contentColor\n  }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Simple.displayName = 'SimpleImage';\n}\nexport default Simple;","import { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nconst genSharedEmptyStyle = token => {\n  const {\n    componentCls,\n    margin,\n    marginXS,\n    marginXL,\n    fontSize,\n    lineHeight\n  } = token;\n  return {\n    [componentCls]: {\n      marginInline: marginXS,\n      fontSize,\n      lineHeight,\n      textAlign: 'center',\n      // 原来 &-image 没有父子结构,现在为了外层承担我们的 hashId,改成父子结构\n      [`${componentCls}-image`]: {\n        height: token.emptyImgHeight,\n        marginBottom: marginXS,\n        opacity: token.opacityImage,\n        img: {\n          height: '100%'\n        },\n        svg: {\n          maxWidth: '100%',\n          height: '100%',\n          margin: 'auto'\n        }\n      },\n      [`${componentCls}-description`]: {\n        color: token.colorTextDescription\n      },\n      // 原来 &-footer 没有父子结构,现在为了外层承担我们的 hashId,改成父子结构\n      [`${componentCls}-footer`]: {\n        marginTop: margin\n      },\n      '&-normal': {\n        marginBlock: marginXL,\n        color: token.colorTextDescription,\n        [`${componentCls}-description`]: {\n          color: token.colorTextDescription\n        },\n        [`${componentCls}-image`]: {\n          height: token.emptyImgHeightMD\n        }\n      },\n      '&-small': {\n        marginBlock: marginXS,\n        color: token.colorTextDescription,\n        [`${componentCls}-image`]: {\n          height: token.emptyImgHeightSM\n        }\n      }\n    }\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Empty', token => {\n  const {\n    componentCls,\n    controlHeightLG,\n    calc\n  } = token;\n  const emptyToken = mergeToken(token, {\n    emptyImgCls: `${componentCls}-img`,\n    emptyImgHeight: calc(controlHeightLG).mul(2.5).equal(),\n    emptyImgHeightMD: controlHeightLG,\n    emptyImgHeightSM: calc(controlHeightLG).mul(0.875).equal()\n  });\n  return [genSharedEmptyStyle(emptyToken)];\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { devUseWarning } from '../_util/warning';\nimport { useLocale } from '../locale';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport useStyle from './style';\nimport { useComponentConfig } from '../config-provider/context';\nconst defaultEmptyImg = /*#__PURE__*/React.createElement(DefaultEmptyImg, null);\nconst simpleEmptyImg = /*#__PURE__*/React.createElement(SimpleEmptyImg, null);\nconst Empty = props => {\n  const {\n      className,\n      rootClassName,\n      prefixCls: customizePrefixCls,\n      image = defaultEmptyImg,\n      description,\n      children,\n      imageStyle,\n      style,\n      classNames: emptyClassNames,\n      styles\n    } = props,\n    restProps = __rest(props, [\"className\", \"rootClassName\", \"prefixCls\", \"image\", \"description\", \"children\", \"imageStyle\", \"style\", \"classNames\", \"styles\"]);\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle,\n    classNames: contextClassNames,\n    styles: contextStyles\n  } = useComponentConfig('empty');\n  const prefixCls = getPrefixCls('empty', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const [locale] = useLocale('Empty');\n  const des = typeof description !== 'undefined' ? description : locale === null || locale === void 0 ? void 0 : locale.description;\n  const alt = typeof des === 'string' ? des : 'empty';\n  let imageNode = null;\n  if (typeof image === 'string') {\n    imageNode = /*#__PURE__*/React.createElement(\"img\", {\n      alt: alt,\n      src: image\n    });\n  } else {\n    imageNode = image;\n  }\n  // ============================= Warning ==============================\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Empty');\n    [['imageStyle', 'styles: { image: {} }']].forEach(_ref => {\n      let [deprecatedName, newName] = _ref;\n      warning.deprecated(!(deprecatedName in props), deprecatedName, newName);\n    });\n  }\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({\n    className: classNames(hashId, cssVarCls, prefixCls, contextClassName, {\n      [`${prefixCls}-normal`]: image === simpleEmptyImg,\n      [`${prefixCls}-rtl`]: direction === 'rtl'\n    }, className, rootClassName, contextClassNames.root, emptyClassNames === null || emptyClassNames === void 0 ? void 0 : emptyClassNames.root),\n    style: Object.assign(Object.assign(Object.assign(Object.assign({}, contextStyles.root), contextStyle), styles === null || styles === void 0 ? void 0 : styles.root), style)\n  }, restProps), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-image`, contextClassNames.image, emptyClassNames === null || emptyClassNames === void 0 ? void 0 : emptyClassNames.image),\n    style: Object.assign(Object.assign(Object.assign({}, imageStyle), contextStyles.image), styles === null || styles === void 0 ? void 0 : styles.image)\n  }, imageNode), des && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-description`, contextClassNames.description, emptyClassNames === null || emptyClassNames === void 0 ? void 0 : emptyClassNames.description),\n    style: Object.assign(Object.assign({}, contextStyles.description), styles === null || styles === void 0 ? void 0 : styles.description)\n  }, des)), children && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-footer`, contextClassNames.footer, emptyClassNames === null || emptyClassNames === void 0 ? void 0 : emptyClassNames.footer),\n    style: Object.assign(Object.assign({}, contextStyles.footer), styles === null || styles === void 0 ? void 0 : styles.footer)\n  }, children))));\n};\nEmpty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;\nif (process.env.NODE_ENV !== 'production') {\n  Empty.displayName = 'Empty';\n}\nexport default Empty;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport { ConfigContext } from '.';\nimport Empty from '../empty';\nconst DefaultRenderEmpty = props => {\n  const {\n    componentName\n  } = props;\n  const {\n    getPrefixCls\n  } = useContext(ConfigContext);\n  const prefix = getPrefixCls('empty');\n  switch (componentName) {\n    case 'Table':\n    case 'List':\n      return /*#__PURE__*/React.createElement(Empty, {\n        image: Empty.PRESENTED_IMAGE_SIMPLE\n      });\n    case 'Select':\n    case 'TreeSelect':\n    case 'Cascader':\n    case 'Transfer':\n    case 'Mentions':\n      return /*#__PURE__*/React.createElement(Empty, {\n        image: Empty.PRESENTED_IMAGE_SIMPLE,\n        className: `${prefix}-small`\n      });\n    /**\n     * This type of component should satisfy the nullish coalescing operator(??) on the left-hand side.\n     * to let the component itself implement the logic.\n     * For example `Table.filter`.\n     */\n    case 'Table.filter':\n      // why `null`? legacy react16 node type `undefined` is not allowed.\n      return null;\n    default:\n      // Should never hit if we take all the component into consider.\n      return /*#__PURE__*/React.createElement(Empty, null);\n  }\n};\nexport default DefaultRenderEmpty;","import { createContext } from 'react';\nconst RowContext = /*#__PURE__*/createContext({});\nexport default RowContext;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useResponsiveObserver, { responsiveArray } from '../_util/responsiveObserver';\nimport { ConfigContext } from '../config-provider';\nimport RowContext from './RowContext';\nimport { useRowStyle } from './style';\nconst _RowAligns = ['top', 'middle', 'bottom', 'stretch'];\nconst _RowJustify = ['start', 'end', 'center', 'space-around', 'space-between', 'space-evenly'];\nfunction useMergedPropByScreen(oriProp, screen) {\n  const [prop, setProp] = React.useState(typeof oriProp === 'string' ? oriProp : '');\n  const calcMergedAlignOrJustify = () => {\n    if (typeof oriProp === 'string') {\n      setProp(oriProp);\n    }\n    if (typeof oriProp !== 'object') {\n      return;\n    }\n    for (let i = 0; i < responsiveArray.length; i++) {\n      const breakpoint = responsiveArray[i];\n      // if do not match, do nothing\n      if (!screen[breakpoint]) {\n        continue;\n      }\n      const curVal = oriProp[breakpoint];\n      if (curVal !== undefined) {\n        setProp(curVal);\n        return;\n      }\n    }\n  };\n  React.useEffect(() => {\n    calcMergedAlignOrJustify();\n  }, [JSON.stringify(oriProp), screen]);\n  return prop;\n}\nconst Row = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      justify,\n      align,\n      className,\n      style,\n      children,\n      gutter = 0,\n      wrap\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"justify\", \"align\", \"className\", \"style\", \"children\", \"gutter\", \"wrap\"]);\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const [screens, setScreens] = React.useState({\n    xs: true,\n    sm: true,\n    md: true,\n    lg: true,\n    xl: true,\n    xxl: true\n  });\n  // to save screens info when responsiveObserve callback had been call\n  const [curScreens, setCurScreens] = React.useState({\n    xs: false,\n    sm: false,\n    md: false,\n    lg: false,\n    xl: false,\n    xxl: false\n  });\n  // ================================== calc responsive data ==================================\n  const mergedAlign = useMergedPropByScreen(align, curScreens);\n  const mergedJustify = useMergedPropByScreen(justify, curScreens);\n  const gutterRef = React.useRef(gutter);\n  const responsiveObserver = useResponsiveObserver();\n  // ================================== Effect ==================================\n  React.useEffect(() => {\n    const token = responsiveObserver.subscribe(screen => {\n      setCurScreens(screen);\n      const currentGutter = gutterRef.current || 0;\n      if (!Array.isArray(currentGutter) && typeof currentGutter === 'object' || Array.isArray(currentGutter) && (typeof currentGutter[0] === 'object' || typeof currentGutter[1] === 'object')) {\n        setScreens(screen);\n      }\n    });\n    return () => responsiveObserver.unsubscribe(token);\n  }, []);\n  // ================================== Render ==================================\n  const getGutter = () => {\n    const results = [undefined, undefined];\n    const normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, undefined];\n    normalizedGutter.forEach((g, index) => {\n      if (typeof g === 'object') {\n        for (let i = 0; i < responsiveArray.length; i++) {\n          const breakpoint = responsiveArray[i];\n          if (screens[breakpoint] && g[breakpoint] !== undefined) {\n            results[index] = g[breakpoint];\n            break;\n          }\n        }\n      } else {\n        results[index] = g;\n      }\n    });\n    return results;\n  };\n  const prefixCls = getPrefixCls('row', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useRowStyle(prefixCls);\n  const gutters = getGutter();\n  const classes = classNames(prefixCls, {\n    [`${prefixCls}-no-wrap`]: wrap === false,\n    [`${prefixCls}-${mergedJustify}`]: mergedJustify,\n    [`${prefixCls}-${mergedAlign}`]: mergedAlign,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, hashId, cssVarCls);\n  // Add gutter related style\n  const rowStyle = {};\n  const horizontalGutter = gutters[0] != null && gutters[0] > 0 ? gutters[0] / -2 : undefined;\n  if (horizontalGutter) {\n    rowStyle.marginLeft = horizontalGutter;\n    rowStyle.marginRight = horizontalGutter;\n  }\n  // \"gutters\" is a new array in each rendering phase, it'll make 'React.useMemo' effectless.\n  // So we deconstruct \"gutters\" variable here.\n  const [gutterH, gutterV] = gutters;\n  rowStyle.rowGap = gutterV;\n  const rowContext = React.useMemo(() => ({\n    gutter: [gutterH, gutterV],\n    wrap\n  }), [gutterH, gutterV, wrap]);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(RowContext.Provider, {\n    value: rowContext\n  }, /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n    className: classes,\n    style: Object.assign(Object.assign({}, rowStyle), style),\n    ref: ref\n  }), children)));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Row.displayName = 'Row';\n}\nexport default Row;","\"use client\";\n\nimport { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport useResponsiveObserver from '../../_util/responsiveObserver';\nfunction useBreakpoint() {\n  let refreshOnChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n  const screensRef = useRef({});\n  const forceUpdate = useForceUpdate();\n  const responsiveObserver = useResponsiveObserver();\n  useLayoutEffect(() => {\n    const token = responsiveObserver.subscribe(supportScreens => {\n      screensRef.current = supportScreens;\n      if (refreshOnChange) {\n        forceUpdate();\n      }\n    });\n    return () => responsiveObserver.unsubscribe(token);\n  }, []);\n  return screensRef.current;\n}\nexport default useBreakpoint;","import * as React from 'react';\nexport default function useForceUpdate() {\n  const [, forceUpdate] = React.useReducer(x => x + 1, 0);\n  return forceUpdate;\n}","// This icon file is generated automatically.\nvar DoubleLeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\" } }] }, \"name\": \"double-left\", \"theme\": \"outlined\" };\nexport default DoubleLeftOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: DoubleLeftOutlinedSvg\n  }));\n};\n\n/**![double-left](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI3Mi45IDUxMmwyNjUuNC0zMzkuMWM0LjEtNS4yLjQtMTIuOS02LjMtMTIuOWgtNzcuM2MtNC45IDAtOS42IDIuMy0xMi42IDYuMUwxODYuOCA0OTIuM2EzMS45OSAzMS45OSAwIDAwMCAzOS41bDI1NS4zIDMyNi4xYzMgMy45IDcuNyA2LjEgMTIuNiA2LjFINTMyYzYuNyAwIDEwLjQtNy43IDYuMy0xMi45TDI3Mi45IDUxMnptMzA0IDBsMjY1LjQtMzM5LjFjNC4xLTUuMi40LTEyLjktNi4zLTEyLjloLTc3LjNjLTQuOSAwLTkuNiAyLjMtMTIuNiA2LjFMNDkwLjggNDkyLjNhMzEuOTkgMzEuOTkgMCAwMDAgMzkuNWwyNTUuMyAzMjYuMWMzIDMuOSA3LjcgNi4xIDEyLjYgNi4xSDgzNmM2LjcgMCAxMC40LTcuNyA2LjMtMTIuOUw1NzYuOSA1MTJ6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'DoubleLeftOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DoubleRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\" } }] }, \"name\": \"double-right\", \"theme\": \"outlined\" };\nexport default DoubleRightOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: DoubleRightOutlinedSvg\n  }));\n};\n\n/**![double-right](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUzMy4yIDQ5Mi4zTDI3Ny45IDE2Ni4xYy0zLTMuOS03LjctNi4xLTEyLjYtNi4xSDE4OGMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlMNDQ3LjEgNTEyIDE4MS43IDg1MS4xQTcuOTggNy45OCAwIDAwMTg4IDg2NGg3Ny4zYzQuOSAwIDkuNi0yLjMgMTIuNi02LjFsMjU1LjMtMzI2LjFjOS4xLTExLjcgOS4xLTI3LjkgMC0zOS41em0zMDQgMEw1ODEuOSAxNjYuMWMtMy0zLjktNy43LTYuMS0xMi42LTYuMUg0OTJjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45TDc1MS4xIDUxMiA0ODUuNyA4NTEuMUE3Ljk4IDcuOTggMCAwMDQ5MiA4NjRoNzcuM2M0LjkgMCA5LjYtMi4zIDEyLjYtNi4xbDI1NS4zLTMyNi4xYzkuMS0xMS43IDkuMS0yNy45IDAtMzkuNXoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DoubleRightOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'DoubleRightOutlined';\n}\nexport default RefIcon;","var locale = {\n  // Options\n  items_per_page: '条/页',\n  jump_to: '跳至',\n  jump_to_confirm: '确定',\n  page: '页',\n  // Pagination\n  prev_page: '上一页',\n  next_page: '下一页',\n  prev_5: '向前 5 页',\n  next_5: '向后 5 页',\n  prev_3: '向前 3 页',\n  next_3: '向后 3 页',\n  page_size: '页码'\n};\nexport default locale;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport KEYCODE from \"rc-util/es/KeyCode\";\nimport React from 'react';\nvar defaultPageSizeOptions = [10, 20, 50, 100];\nvar Options = function Options(props) {\n  var _props$pageSizeOption = props.pageSizeOptions,\n    pageSizeOptions = _props$pageSizeOption === void 0 ? defaultPageSizeOptions : _props$pageSizeOption,\n    locale = props.locale,\n    changeSize = props.changeSize,\n    pageSize = props.pageSize,\n    goButton = props.goButton,\n    quickGo = props.quickGo,\n    rootPrefixCls = props.rootPrefixCls,\n    disabled = props.disabled,\n    buildOptionText = props.buildOptionText,\n    showSizeChanger = props.showSizeChanger,\n    sizeChangerRender = props.sizeChangerRender;\n  var _React$useState = React.useState(''),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    goInputText = _React$useState2[0],\n    setGoInputText = _React$useState2[1];\n  var getValidValue = function getValidValue() {\n    return !goInputText || Number.isNaN(goInputText) ? undefined : Number(goInputText);\n  };\n  var mergeBuildOptionText = typeof buildOptionText === 'function' ? buildOptionText : function (value) {\n    return \"\".concat(value, \" \").concat(locale.items_per_page);\n  };\n  var handleChange = function handleChange(e) {\n    setGoInputText(e.target.value);\n  };\n  var handleBlur = function handleBlur(e) {\n    if (goButton || goInputText === '') {\n      return;\n    }\n    setGoInputText('');\n    if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n      return;\n    }\n    quickGo === null || quickGo === void 0 || quickGo(getValidValue());\n  };\n  var go = function go(e) {\n    if (goInputText === '') {\n      return;\n    }\n    if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n      setGoInputText('');\n      quickGo === null || quickGo === void 0 || quickGo(getValidValue());\n    }\n  };\n  var getPageSizeOptions = function getPageSizeOptions() {\n    if (pageSizeOptions.some(function (option) {\n      return option.toString() === pageSize.toString();\n    })) {\n      return pageSizeOptions;\n    }\n    return pageSizeOptions.concat([pageSize]).sort(function (a, b) {\n      var numberA = Number.isNaN(Number(a)) ? 0 : Number(a);\n      var numberB = Number.isNaN(Number(b)) ? 0 : Number(b);\n      return numberA - numberB;\n    });\n  };\n  // ============== cls ==============\n  var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n\n  // ============== render ==============\n\n  if (!showSizeChanger && !quickGo) {\n    return null;\n  }\n  var changeSelect = null;\n  var goInput = null;\n  var gotoButton = null;\n\n  // >>>>> Size Changer\n  if (showSizeChanger && sizeChangerRender) {\n    changeSelect = sizeChangerRender({\n      disabled: disabled,\n      size: pageSize,\n      onSizeChange: function onSizeChange(nextValue) {\n        changeSize === null || changeSize === void 0 || changeSize(Number(nextValue));\n      },\n      'aria-label': locale.page_size,\n      className: \"\".concat(prefixCls, \"-size-changer\"),\n      options: getPageSizeOptions().map(function (opt) {\n        return {\n          label: mergeBuildOptionText(opt),\n          value: opt\n        };\n      })\n    });\n  }\n\n  // >>>>> Quick Go\n  if (quickGo) {\n    if (goButton) {\n      gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n        type: \"button\",\n        onClick: go,\n        onKeyUp: go,\n        disabled: disabled,\n        className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n      }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n        onClick: go,\n        onKeyUp: go\n      }, goButton);\n    }\n    goInput = /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-quick-jumper\")\n    }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n      disabled: disabled,\n      type: \"text\",\n      value: goInputText,\n      onChange: handleChange,\n      onKeyUp: go,\n      onBlur: handleBlur,\n      \"aria-label\": locale.page\n    }), locale.page, gotoButton);\n  }\n  return /*#__PURE__*/React.createElement(\"li\", {\n    className: prefixCls\n  }, changeSelect, goInput);\n};\nif (process.env.NODE_ENV !== 'production') {\n  Options.displayName = 'Options';\n}\nexport default Options;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n/* eslint react/prop-types: 0 */\nimport classNames from 'classnames';\nimport React from 'react';\nvar Pager = function Pager(props) {\n  var rootPrefixCls = props.rootPrefixCls,\n    page = props.page,\n    active = props.active,\n    className = props.className,\n    showTitle = props.showTitle,\n    onClick = props.onClick,\n    onKeyPress = props.onKeyPress,\n    itemRender = props.itemRender;\n  var prefixCls = \"\".concat(rootPrefixCls, \"-item\");\n  var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(page), _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), \"\".concat(prefixCls, \"-disabled\"), !page), className);\n  var handleClick = function handleClick() {\n    onClick(page);\n  };\n  var handleKeyPress = function handleKeyPress(e) {\n    onKeyPress(e, onClick, page);\n  };\n  var pager = itemRender(page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n    rel: \"nofollow\"\n  }, page));\n  return pager ? /*#__PURE__*/React.createElement(\"li\", {\n    title: showTitle ? String(page) : null,\n    className: cls,\n    onClick: handleClick,\n    onKeyDown: handleKeyPress,\n    tabIndex: 0\n  }, pager) : null;\n};\nif (process.env.NODE_ENV !== 'production') {\n  Pager.displayName = 'Pager';\n}\nexport default Pager;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport warning from \"rc-util/es/warning\";\nimport React, { useEffect } from 'react';\nimport zhCN from \"./locale/zh_CN\";\nimport Options from \"./Options\";\nimport Pager from \"./Pager\";\nvar defaultItemRender = function defaultItemRender(page, type, element) {\n  return element;\n};\nfunction noop() {}\nfunction isInteger(v) {\n  var value = Number(v);\n  return typeof value === 'number' && !Number.isNaN(value) && isFinite(value) && Math.floor(value) === value;\n}\nfunction calculatePage(p, pageSize, total) {\n  var _pageSize = typeof p === 'undefined' ? pageSize : p;\n  return Math.floor((total - 1) / _pageSize) + 1;\n}\nvar Pagination = function Pagination(props) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-pagination' : _props$prefixCls,\n    _props$selectPrefixCl = props.selectPrefixCls,\n    selectPrefixCls = _props$selectPrefixCl === void 0 ? 'rc-select' : _props$selectPrefixCl,\n    className = props.className,\n    currentProp = props.current,\n    _props$defaultCurrent = props.defaultCurrent,\n    defaultCurrent = _props$defaultCurrent === void 0 ? 1 : _props$defaultCurrent,\n    _props$total = props.total,\n    total = _props$total === void 0 ? 0 : _props$total,\n    pageSizeProp = props.pageSize,\n    _props$defaultPageSiz = props.defaultPageSize,\n    defaultPageSize = _props$defaultPageSiz === void 0 ? 10 : _props$defaultPageSiz,\n    _props$onChange = props.onChange,\n    onChange = _props$onChange === void 0 ? noop : _props$onChange,\n    hideOnSinglePage = props.hideOnSinglePage,\n    align = props.align,\n    _props$showPrevNextJu = props.showPrevNextJumpers,\n    showPrevNextJumpers = _props$showPrevNextJu === void 0 ? true : _props$showPrevNextJu,\n    showQuickJumper = props.showQuickJumper,\n    showLessItems = props.showLessItems,\n    _props$showTitle = props.showTitle,\n    showTitle = _props$showTitle === void 0 ? true : _props$showTitle,\n    _props$onShowSizeChan = props.onShowSizeChange,\n    onShowSizeChange = _props$onShowSizeChan === void 0 ? noop : _props$onShowSizeChan,\n    _props$locale = props.locale,\n    locale = _props$locale === void 0 ? zhCN : _props$locale,\n    style = props.style,\n    _props$totalBoundaryS = props.totalBoundaryShowSizeChanger,\n    totalBoundaryShowSizeChanger = _props$totalBoundaryS === void 0 ? 50 : _props$totalBoundaryS,\n    disabled = props.disabled,\n    simple = props.simple,\n    showTotal = props.showTotal,\n    _props$showSizeChange = props.showSizeChanger,\n    showSizeChanger = _props$showSizeChange === void 0 ? total > totalBoundaryShowSizeChanger : _props$showSizeChange,\n    sizeChangerRender = props.sizeChangerRender,\n    pageSizeOptions = props.pageSizeOptions,\n    _props$itemRender = props.itemRender,\n    itemRender = _props$itemRender === void 0 ? defaultItemRender : _props$itemRender,\n    jumpPrevIcon = props.jumpPrevIcon,\n    jumpNextIcon = props.jumpNextIcon,\n    prevIcon = props.prevIcon,\n    nextIcon = props.nextIcon;\n  var paginationRef = React.useRef(null);\n  var _useMergedState = useMergedState(10, {\n      value: pageSizeProp,\n      defaultValue: defaultPageSize\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    pageSize = _useMergedState2[0],\n    setPageSize = _useMergedState2[1];\n  var _useMergedState3 = useMergedState(1, {\n      value: currentProp,\n      defaultValue: defaultCurrent,\n      postState: function postState(c) {\n        return Math.max(1, Math.min(c, calculatePage(undefined, pageSize, total)));\n      }\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    current = _useMergedState4[0],\n    setCurrent = _useMergedState4[1];\n  var _React$useState = React.useState(current),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    internalInputVal = _React$useState2[0],\n    setInternalInputVal = _React$useState2[1];\n  useEffect(function () {\n    setInternalInputVal(current);\n  }, [current]);\n  var hasOnChange = onChange !== noop;\n  var hasCurrent = ('current' in props);\n  if (process.env.NODE_ENV !== 'production') {\n    warning(hasCurrent ? hasOnChange : true, 'You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n  }\n  var jumpPrevPage = Math.max(1, current - (showLessItems ? 3 : 5));\n  var jumpNextPage = Math.min(calculatePage(undefined, pageSize, total), current + (showLessItems ? 3 : 5));\n  function getItemIcon(icon, label) {\n    var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n      type: \"button\",\n      \"aria-label\": label,\n      className: \"\".concat(prefixCls, \"-item-link\")\n    });\n    if (typeof icon === 'function') {\n      iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n    }\n    return iconNode;\n  }\n  function getValidValue(e) {\n    var inputValue = e.target.value;\n    var allPages = calculatePage(undefined, pageSize, total);\n    var value;\n    if (inputValue === '') {\n      value = inputValue;\n    } else if (Number.isNaN(Number(inputValue))) {\n      value = internalInputVal;\n    } else if (inputValue >= allPages) {\n      value = allPages;\n    } else {\n      value = Number(inputValue);\n    }\n    return value;\n  }\n  function isValid(page) {\n    return isInteger(page) && page !== current && isInteger(total) && total > 0;\n  }\n  var shouldDisplayQuickJumper = total > pageSize ? showQuickJumper : false;\n\n  /**\n   * prevent \"up arrow\" key reseting cursor position within textbox\n   * @see https://stackoverflow.com/a/1081114\n   */\n  function handleKeyDown(event) {\n    if (event.keyCode === KeyCode.UP || event.keyCode === KeyCode.DOWN) {\n      event.preventDefault();\n    }\n  }\n  function handleKeyUp(event) {\n    var value = getValidValue(event);\n    if (value !== internalInputVal) {\n      setInternalInputVal(value);\n    }\n    switch (event.keyCode) {\n      case KeyCode.ENTER:\n        handleChange(value);\n        break;\n      case KeyCode.UP:\n        handleChange(value - 1);\n        break;\n      case KeyCode.DOWN:\n        handleChange(value + 1);\n        break;\n      default:\n        break;\n    }\n  }\n  function handleBlur(event) {\n    handleChange(getValidValue(event));\n  }\n  function changePageSize(size) {\n    var newCurrent = calculatePage(size, pageSize, total);\n    var nextCurrent = current > newCurrent && newCurrent !== 0 ? newCurrent : current;\n    setPageSize(size);\n    setInternalInputVal(nextCurrent);\n    onShowSizeChange === null || onShowSizeChange === void 0 || onShowSizeChange(current, size);\n    setCurrent(nextCurrent);\n    onChange === null || onChange === void 0 || onChange(nextCurrent, size);\n  }\n  function handleChange(page) {\n    if (isValid(page) && !disabled) {\n      var currentPage = calculatePage(undefined, pageSize, total);\n      var newPage = page;\n      if (page > currentPage) {\n        newPage = currentPage;\n      } else if (page < 1) {\n        newPage = 1;\n      }\n      if (newPage !== internalInputVal) {\n        setInternalInputVal(newPage);\n      }\n      setCurrent(newPage);\n      onChange === null || onChange === void 0 || onChange(newPage, pageSize);\n      return newPage;\n    }\n    return current;\n  }\n  var hasPrev = current > 1;\n  var hasNext = current < calculatePage(undefined, pageSize, total);\n  function prevHandle() {\n    if (hasPrev) handleChange(current - 1);\n  }\n  function nextHandle() {\n    if (hasNext) handleChange(current + 1);\n  }\n  function jumpPrevHandle() {\n    handleChange(jumpPrevPage);\n  }\n  function jumpNextHandle() {\n    handleChange(jumpNextPage);\n  }\n  function runIfEnter(event, callback) {\n    if (event.key === 'Enter' || event.charCode === KeyCode.ENTER || event.keyCode === KeyCode.ENTER) {\n      for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        restParams[_key - 2] = arguments[_key];\n      }\n      callback.apply(void 0, restParams);\n    }\n  }\n  function runIfEnterPrev(event) {\n    runIfEnter(event, prevHandle);\n  }\n  function runIfEnterNext(event) {\n    runIfEnter(event, nextHandle);\n  }\n  function runIfEnterJumpPrev(event) {\n    runIfEnter(event, jumpPrevHandle);\n  }\n  function runIfEnterJumpNext(event) {\n    runIfEnter(event, jumpNextHandle);\n  }\n  function renderPrev(prevPage) {\n    var prevButton = itemRender(prevPage, 'prev', getItemIcon(prevIcon, 'prev page'));\n    return /*#__PURE__*/React.isValidElement(prevButton) ? /*#__PURE__*/React.cloneElement(prevButton, {\n      disabled: !hasPrev\n    }) : prevButton;\n  }\n  function renderNext(nextPage) {\n    var nextButton = itemRender(nextPage, 'next', getItemIcon(nextIcon, 'next page'));\n    return /*#__PURE__*/React.isValidElement(nextButton) ? /*#__PURE__*/React.cloneElement(nextButton, {\n      disabled: !hasNext\n    }) : nextButton;\n  }\n  function handleGoTO(event) {\n    if (event.type === 'click' || event.keyCode === KeyCode.ENTER) {\n      handleChange(internalInputVal);\n    }\n  }\n  var jumpPrev = null;\n  var dataOrAriaAttributeProps = pickAttrs(props, {\n    aria: true,\n    data: true\n  });\n  var totalText = showTotal && /*#__PURE__*/React.createElement(\"li\", {\n    className: \"\".concat(prefixCls, \"-total-text\")\n  }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n  var jumpNext = null;\n  var allPages = calculatePage(undefined, pageSize, total);\n\n  // ================== Render ==================\n  // When hideOnSinglePage is true and there is only 1 page, hide the pager\n  if (hideOnSinglePage && total <= pageSize) {\n    return null;\n  }\n  var pagerList = [];\n  var pagerProps = {\n    rootPrefixCls: prefixCls,\n    onClick: handleChange,\n    onKeyPress: runIfEnter,\n    showTitle: showTitle,\n    itemRender: itemRender,\n    page: -1\n  };\n  var prevPage = current - 1 > 0 ? current - 1 : 0;\n  var nextPage = current + 1 < allPages ? current + 1 : allPages;\n  var goButton = showQuickJumper && showQuickJumper.goButton;\n\n  // ================== Simple ==================\n  // FIXME: ts type\n  var isReadOnly = _typeof(simple) === 'object' ? simple.readOnly : !simple;\n  var gotoButton = goButton;\n  var simplePager = null;\n  if (simple) {\n    // ====== Simple quick jump ======\n    if (goButton) {\n      if (typeof goButton === 'boolean') {\n        gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n          type: \"button\",\n          onClick: handleGoTO,\n          onKeyUp: handleGoTO\n        }, locale.jump_to_confirm);\n      } else {\n        gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n          onClick: handleGoTO,\n          onKeyUp: handleGoTO\n        }, goButton);\n      }\n      gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n        title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n        className: \"\".concat(prefixCls, \"-simple-pager\")\n      }, gotoButton);\n    }\n    simplePager = /*#__PURE__*/React.createElement(\"li\", {\n      title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n      className: \"\".concat(prefixCls, \"-simple-pager\")\n    }, isReadOnly ? internalInputVal : /*#__PURE__*/React.createElement(\"input\", {\n      type: \"text\",\n      \"aria-label\": locale.jump_to,\n      value: internalInputVal,\n      disabled: disabled,\n      onKeyDown: handleKeyDown,\n      onKeyUp: handleKeyUp,\n      onChange: handleKeyUp,\n      onBlur: handleBlur,\n      size: 3\n    }), /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-slash\")\n    }, \"/\"), allPages);\n  }\n\n  // ====================== Normal ======================\n  var pageBufferSize = showLessItems ? 1 : 2;\n  if (allPages <= 3 + pageBufferSize * 2) {\n    if (!allPages) {\n      pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: \"noPager\",\n        page: 1,\n        className: \"\".concat(prefixCls, \"-item-disabled\")\n      })));\n    }\n    for (var i = 1; i <= allPages; i += 1) {\n      pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: i,\n        page: i,\n        active: current === i\n      })));\n    }\n  } else {\n    var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n    var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n    var jumpPrevContent = itemRender(jumpPrevPage, 'jump-prev', getItemIcon(jumpPrevIcon, 'prev page'));\n    var jumpNextContent = itemRender(jumpNextPage, 'jump-next', getItemIcon(jumpNextIcon, 'next page'));\n    if (showPrevNextJumpers) {\n      jumpPrev = jumpPrevContent ? /*#__PURE__*/React.createElement(\"li\", {\n        title: showTitle ? prevItemTitle : null,\n        key: \"prev\",\n        onClick: jumpPrevHandle,\n        tabIndex: 0,\n        onKeyDown: runIfEnterJumpPrev,\n        className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n      }, jumpPrevContent) : null;\n      jumpNext = jumpNextContent ? /*#__PURE__*/React.createElement(\"li\", {\n        title: showTitle ? nextItemTitle : null,\n        key: \"next\",\n        onClick: jumpNextHandle,\n        tabIndex: 0,\n        onKeyDown: runIfEnterJumpNext,\n        className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n      }, jumpNextContent) : null;\n    }\n    var left = Math.max(1, current - pageBufferSize);\n    var right = Math.min(current + pageBufferSize, allPages);\n    if (current - 1 <= pageBufferSize) {\n      right = 1 + pageBufferSize * 2;\n    }\n    if (allPages - current <= pageBufferSize) {\n      left = allPages - pageBufferSize * 2;\n    }\n    for (var _i = left; _i <= right; _i += 1) {\n      pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: _i,\n        page: _i,\n        active: current === _i\n      })));\n    }\n    if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n      pagerList[0] = /*#__PURE__*/React.cloneElement(pagerList[0], {\n        className: classNames(\"\".concat(prefixCls, \"-item-after-jump-prev\"), pagerList[0].props.className)\n      });\n      pagerList.unshift(jumpPrev);\n    }\n    if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n      var lastOne = pagerList[pagerList.length - 1];\n      pagerList[pagerList.length - 1] = /*#__PURE__*/React.cloneElement(lastOne, {\n        className: classNames(\"\".concat(prefixCls, \"-item-before-jump-next\"), lastOne.props.className)\n      });\n      pagerList.push(jumpNext);\n    }\n    if (left !== 1) {\n      pagerList.unshift( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: 1,\n        page: 1\n      })));\n    }\n    if (right !== allPages) {\n      pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n        key: allPages,\n        page: allPages\n      })));\n    }\n  }\n  var prev = renderPrev(prevPage);\n  if (prev) {\n    var prevDisabled = !hasPrev || !allPages;\n    prev = /*#__PURE__*/React.createElement(\"li\", {\n      title: showTitle ? locale.prev_page : null,\n      onClick: prevHandle,\n      tabIndex: prevDisabled ? null : 0,\n      onKeyDown: runIfEnterPrev,\n      className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n      \"aria-disabled\": prevDisabled\n    }, prev);\n  }\n  var next = renderNext(nextPage);\n  if (next) {\n    var nextDisabled, nextTabIndex;\n    if (simple) {\n      nextDisabled = !hasNext;\n      nextTabIndex = hasPrev ? 0 : null;\n    } else {\n      nextDisabled = !hasNext || !allPages;\n      nextTabIndex = nextDisabled ? null : 0;\n    }\n    next = /*#__PURE__*/React.createElement(\"li\", {\n      title: showTitle ? locale.next_page : null,\n      onClick: nextHandle,\n      tabIndex: nextTabIndex,\n      onKeyDown: runIfEnterNext,\n      className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n      \"aria-disabled\": nextDisabled\n    }, next);\n  }\n  var cls = classNames(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-start\"), align === 'start'), \"\".concat(prefixCls, \"-center\"), align === 'center'), \"\".concat(prefixCls, \"-end\"), align === 'end'), \"\".concat(prefixCls, \"-simple\"), simple), \"\".concat(prefixCls, \"-disabled\"), disabled));\n  return /*#__PURE__*/React.createElement(\"ul\", _extends({\n    className: cls,\n    style: style,\n    ref: paginationRef\n  }, dataOrAriaAttributeProps), totalText, prev, simple ? simplePager : pagerList, next, /*#__PURE__*/React.createElement(Options, {\n    locale: locale,\n    rootPrefixCls: prefixCls,\n    disabled: disabled,\n    selectPrefixCls: selectPrefixCls,\n    changeSize: changePageSize,\n    pageSize: pageSize,\n    pageSizeOptions: pageSizeOptions,\n    quickGo: shouldDisplayQuickJumper ? handleChange : null,\n    goButton: gotoButton,\n    showSizeChanger: showSizeChanger,\n    sizeChangerRender: sizeChangerRender\n  }));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Pagination.displayName = 'Pagination';\n}\nexport default Pagination;","import * as React from 'react';\nimport classNames from 'classnames';\nvar TransBtn = function TransBtn(props) {\n  var className = props.className,\n    customizeIcon = props.customizeIcon,\n    customizeIconProps = props.customizeIconProps,\n    children = props.children,\n    _onMouseDown = props.onMouseDown,\n    onClick = props.onClick;\n  var icon = typeof customizeIcon === 'function' ? customizeIcon(customizeIconProps) : customizeIcon;\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: className,\n    onMouseDown: function onMouseDown(event) {\n      event.preventDefault();\n      _onMouseDown === null || _onMouseDown === void 0 || _onMouseDown(event);\n    },\n    style: {\n      userSelect: 'none',\n      WebkitUserSelect: 'none'\n    },\n    unselectable: \"on\",\n    onClick: onClick,\n    \"aria-hidden\": true\n  }, icon !== undefined ? icon : /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(className.split(/\\s+/).map(function (cls) {\n      return \"\".concat(cls, \"-icon\");\n    }))\n  }, children));\n};\nexport default TransBtn;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport TransBtn from \"../TransBtn\";\nimport React from 'react';\nexport var useAllowClear = function useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {\n  var disabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n  var mergedSearchValue = arguments.length > 6 ? arguments[6] : undefined;\n  var mode = arguments.length > 7 ? arguments[7] : undefined;\n  var mergedClearIcon = React.useMemo(function () {\n    if (_typeof(allowClear) === 'object') {\n      return allowClear.clearIcon;\n    }\n    if (clearIcon) {\n      return clearIcon;\n    }\n  }, [allowClear, clearIcon]);\n  var mergedAllowClear = React.useMemo(function () {\n    if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '')) {\n      return true;\n    }\n    return false;\n  }, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);\n  return {\n    allowClear: mergedAllowClear,\n    clearIcon: /*#__PURE__*/React.createElement(TransBtn, {\n      className: \"\".concat(prefixCls, \"-clear\"),\n      onMouseDown: onClearMouseDown,\n      customizeIcon: mergedClearIcon\n    }, \"\\xD7\")\n  };\n};","/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport * as React from 'react';\nexport var BaseSelectContext = /*#__PURE__*/React.createContext(null);\nexport default function useBaseProps() {\n  return React.useContext(BaseSelectContext);\n}","import * as React from 'react';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock() {\n  var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n  var lockRef = React.useRef(null);\n  var timeoutRef = React.useRef(null);\n\n  // Clean up\n  React.useEffect(function () {\n    return function () {\n      window.clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  function doLock(locked) {\n    if (locked || lockRef.current === null) {\n      lockRef.current = locked;\n    }\n    window.clearTimeout(timeoutRef.current);\n    timeoutRef.current = window.setTimeout(function () {\n      lockRef.current = null;\n    }, duration);\n  }\n  return [function () {\n    return lockRef.current;\n  }, doLock];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\n// Use shared variable to save bundle size\nvar UNDEFINED = undefined;\nfunction InternalItem(props, ref) {\n  var prefixCls = props.prefixCls,\n    invalidate = props.invalidate,\n    item = props.item,\n    renderItem = props.renderItem,\n    responsive = props.responsive,\n    responsiveDisabled = props.responsiveDisabled,\n    registerSize = props.registerSize,\n    itemKey = props.itemKey,\n    className = props.className,\n    style = props.style,\n    children = props.children,\n    display = props.display,\n    order = props.order,\n    _props$component = props.component,\n    Component = _props$component === void 0 ? 'div' : _props$component,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var mergedHidden = responsive && !display;\n\n  // ================================ Effect ================================\n  function internalRegisterSize(width) {\n    registerSize(itemKey, width);\n  }\n  React.useEffect(function () {\n    return function () {\n      internalRegisterSize(null);\n    };\n  }, []);\n\n  // ================================ Render ================================\n  var childNode = renderItem && item !== UNDEFINED ? renderItem(item, {\n    index: order\n  }) : children;\n  var overflowStyle;\n  if (!invalidate) {\n    overflowStyle = {\n      opacity: mergedHidden ? 0 : 1,\n      height: mergedHidden ? 0 : UNDEFINED,\n      overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n      order: responsive ? order : UNDEFINED,\n      pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n      position: mergedHidden ? 'absolute' : UNDEFINED\n    };\n  }\n  var overflowProps = {};\n  if (mergedHidden) {\n    overflowProps['aria-hidden'] = true;\n  }\n  var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n    className: classNames(!invalidate && prefixCls, className),\n    style: _objectSpread(_objectSpread({}, overflowStyle), style)\n  }, overflowProps, restProps, {\n    ref: ref\n  }), childNode);\n  if (responsive) {\n    itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n      onResize: function onResize(_ref) {\n        var offsetWidth = _ref.offsetWidth;\n        internalRegisterSize(offsetWidth);\n      },\n      disabled: responsiveDisabled\n    }, itemNode);\n  }\n  return itemNode;\n}\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport channelUpdate from \"./channelUpdate\";\n/**\n * Batcher for record any `useEffectState` need update.\n */\nexport function useBatcher() {\n  // Updater Trigger\n  var updateFuncRef = React.useRef(null);\n\n  // Notify update\n  var notifyEffectUpdate = function notifyEffectUpdate(callback) {\n    if (!updateFuncRef.current) {\n      updateFuncRef.current = [];\n      channelUpdate(function () {\n        unstable_batchedUpdates(function () {\n          updateFuncRef.current.forEach(function (fn) {\n            fn();\n          });\n          updateFuncRef.current = null;\n        });\n      });\n    }\n    updateFuncRef.current.push(callback);\n  };\n  return notifyEffectUpdate;\n}\n\n/**\n * Trigger state update by `useLayoutEffect` to save perf.\n */\nexport default function useEffectState(notifyEffectUpdate, defaultValue) {\n  // Value\n  var _React$useState = React.useState(defaultValue),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    stateValue = _React$useState2[0],\n    setStateValue = _React$useState2[1];\n\n  // Set State\n  var setEffectVal = useEvent(function (nextValue) {\n    notifyEffectUpdate(function () {\n      setStateValue(nextValue);\n    });\n  });\n  return [stateValue, setEffectVal];\n}","import raf from \"rc-util/es/raf\";\nexport default function channelUpdate(callback) {\n  if (typeof MessageChannel === 'undefined') {\n    raf(callback);\n  } else {\n    var channel = new MessageChannel();\n    channel.port1.onmessage = function () {\n      return callback();\n    };\n    channel.port2.postMessage(undefined);\n  }\n}","import React from 'react';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n  _excluded2 = [\"className\"],\n  _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from \"./Item\";\nimport { OverflowContext } from \"./context\";\nvar InternalRawItem = function InternalRawItem(props, ref) {\n  var context = React.useContext(OverflowContext);\n\n  // Render directly when context not provided\n  if (!context) {\n    var _props$component = props.component,\n      Component = _props$component === void 0 ? 'div' : _props$component,\n      _restProps = _objectWithoutProperties(props, _excluded);\n    return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n      ref: ref\n    }));\n  }\n  var contextClassName = context.className,\n    restContext = _objectWithoutProperties(context, _excluded2);\n  var className = props.className,\n    restProps = _objectWithoutProperties(props, _excluded3);\n\n  // Do not pass context to sub item to avoid multiple measure\n  return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n    value: null\n  }, /*#__PURE__*/React.createElement(Item, _extends({\n    ref: ref,\n    className: classNames(contextClassName, className)\n  }, restContext, restProps)));\n};\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from \"./Item\";\nimport useEffectState, { useBatcher } from \"./hooks/useEffectState\";\nimport RawItem from \"./RawItem\";\nimport { OverflowContext } from \"./context\";\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\nexport { OverflowContext } from \"./context\";\nfunction defaultRenderRest(omittedItems) {\n  return \"+ \".concat(omittedItems.length, \" ...\");\n}\nfunction Overflow(props, ref) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n    _props$data = props.data,\n    data = _props$data === void 0 ? [] : _props$data,\n    renderItem = props.renderItem,\n    renderRawItem = props.renderRawItem,\n    itemKey = props.itemKey,\n    _props$itemWidth = props.itemWidth,\n    itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n    ssr = props.ssr,\n    style = props.style,\n    className = props.className,\n    maxCount = props.maxCount,\n    renderRest = props.renderRest,\n    renderRawRest = props.renderRawRest,\n    suffix = props.suffix,\n    _props$component = props.component,\n    Component = _props$component === void 0 ? 'div' : _props$component,\n    itemComponent = props.itemComponent,\n    onVisibleChange = props.onVisibleChange,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var fullySSR = ssr === 'full';\n  var notifyEffectUpdate = useBatcher();\n  var _useEffectState = useEffectState(notifyEffectUpdate, null),\n    _useEffectState2 = _slicedToArray(_useEffectState, 2),\n    containerWidth = _useEffectState2[0],\n    setContainerWidth = _useEffectState2[1];\n  var mergedContainerWidth = containerWidth || 0;\n  var _useEffectState3 = useEffectState(notifyEffectUpdate, new Map()),\n    _useEffectState4 = _slicedToArray(_useEffectState3, 2),\n    itemWidths = _useEffectState4[0],\n    setItemWidths = _useEffectState4[1];\n  var _useEffectState5 = useEffectState(notifyEffectUpdate, 0),\n    _useEffectState6 = _slicedToArray(_useEffectState5, 2),\n    prevRestWidth = _useEffectState6[0],\n    setPrevRestWidth = _useEffectState6[1];\n  var _useEffectState7 = useEffectState(notifyEffectUpdate, 0),\n    _useEffectState8 = _slicedToArray(_useEffectState7, 2),\n    restWidth = _useEffectState8[0],\n    setRestWidth = _useEffectState8[1];\n  var _useEffectState9 = useEffectState(notifyEffectUpdate, 0),\n    _useEffectState10 = _slicedToArray(_useEffectState9, 2),\n    suffixWidth = _useEffectState10[0],\n    setSuffixWidth = _useEffectState10[1];\n  var _useState = useState(null),\n    _useState2 = _slicedToArray(_useState, 2),\n    suffixFixedStart = _useState2[0],\n    setSuffixFixedStart = _useState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    displayCount = _useState4[0],\n    setDisplayCount = _useState4[1];\n  var mergedDisplayCount = React.useMemo(function () {\n    if (displayCount === null && fullySSR) {\n      return Number.MAX_SAFE_INTEGER;\n    }\n    return displayCount || 0;\n  }, [displayCount, containerWidth]);\n  var _useState5 = useState(false),\n    _useState6 = _slicedToArray(_useState5, 2),\n    restReady = _useState6[0],\n    setRestReady = _useState6[1];\n  var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n\n  // Always use the max width to avoid blink\n  var mergedRestWidth = Math.max(prevRestWidth, restWidth);\n\n  // ================================= Data =================================\n  var isResponsive = maxCount === RESPONSIVE;\n  var shouldResponsive = data.length && isResponsive;\n  var invalidate = maxCount === INVALIDATE;\n\n  /**\n   * When is `responsive`, we will always render rest node to get the real width of it for calculation\n   */\n  var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n  var mergedData = useMemo(function () {\n    var items = data;\n    if (shouldResponsive) {\n      if (containerWidth === null && fullySSR) {\n        items = data;\n      } else {\n        items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n      }\n    } else if (typeof maxCount === 'number') {\n      items = data.slice(0, maxCount);\n    }\n    return items;\n  }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n  var omittedItems = useMemo(function () {\n    if (shouldResponsive) {\n      return data.slice(mergedDisplayCount + 1);\n    }\n    return data.slice(mergedData.length);\n  }, [data, mergedData, shouldResponsive, mergedDisplayCount]);\n\n  // ================================= Item =================================\n  var getKey = useCallback(function (item, index) {\n    var _ref;\n    if (typeof itemKey === 'function') {\n      return itemKey(item);\n    }\n    return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n  }, [itemKey]);\n  var mergedRenderItem = useCallback(renderItem || function (item) {\n    return item;\n  }, [renderItem]);\n  function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n    // React 18 will sync render even when the value is same in some case.\n    // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n    // ref: https://github.com/ant-design/ant-design/issues/36559\n    if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n      return;\n    }\n    setDisplayCount(count);\n    if (!notReady) {\n      setRestReady(count < data.length - 1);\n      onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(count);\n    }\n    if (suffixFixedStartVal !== undefined) {\n      setSuffixFixedStart(suffixFixedStartVal);\n    }\n  }\n\n  // ================================= Size =================================\n  function onOverflowResize(_, element) {\n    setContainerWidth(element.clientWidth);\n  }\n  function registerSize(key, width) {\n    setItemWidths(function (origin) {\n      var clone = new Map(origin);\n      if (width === null) {\n        clone.delete(key);\n      } else {\n        clone.set(key, width);\n      }\n      return clone;\n    });\n  }\n  function registerOverflowSize(_, width) {\n    setRestWidth(width);\n    setPrevRestWidth(restWidth);\n  }\n  function registerSuffixSize(_, width) {\n    setSuffixWidth(width);\n  }\n\n  // ================================ Effect ================================\n  function getItemWidth(index) {\n    return itemWidths.get(getKey(mergedData[index], index));\n  }\n  useLayoutEffect(function () {\n    if (mergedContainerWidth && typeof mergedRestWidth === 'number' && mergedData) {\n      var totalWidth = suffixWidth;\n      var len = mergedData.length;\n      var lastIndex = len - 1;\n\n      // When data count change to 0, reset this since not loop will reach\n      if (!len) {\n        updateDisplayCount(0, null);\n        return;\n      }\n      for (var i = 0; i < len; i += 1) {\n        var currentItemWidth = getItemWidth(i);\n\n        // Fully will always render\n        if (fullySSR) {\n          currentItemWidth = currentItemWidth || 0;\n        }\n\n        // Break since data not ready\n        if (currentItemWidth === undefined) {\n          updateDisplayCount(i - 1, undefined, true);\n          break;\n        }\n\n        // Find best match\n        totalWidth += currentItemWidth;\n        if (\n        // Only one means `totalWidth` is the final width\n        lastIndex === 0 && totalWidth <= mergedContainerWidth ||\n        // Last two width will be the final width\n        i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n          // Additional check if match the end\n          updateDisplayCount(lastIndex, null);\n          break;\n        } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n          // Can not hold all the content to show rest\n          updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n          break;\n        }\n      }\n      if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n        setSuffixFixedStart(null);\n      }\n    }\n  }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]);\n\n  // ================================ Render ================================\n  var displayRest = restReady && !!omittedItems.length;\n  var suffixStyle = {};\n  if (suffixFixedStart !== null && shouldResponsive) {\n    suffixStyle = {\n      position: 'absolute',\n      left: suffixFixedStart,\n      top: 0\n    };\n  }\n  var itemSharedProps = {\n    prefixCls: itemPrefixCls,\n    responsive: shouldResponsive,\n    component: itemComponent,\n    invalidate: invalidate\n  };\n\n  // >>>>> Choice render fun by `renderRawItem`\n  var internalRenderItemNode = renderRawItem ? function (item, index) {\n    var key = getKey(item, index);\n    return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n      key: key,\n      value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n        order: index,\n        item: item,\n        itemKey: key,\n        registerSize: registerSize,\n        display: index <= mergedDisplayCount\n      })\n    }, renderRawItem(item, index));\n  } : function (item, index) {\n    var key = getKey(item, index);\n    return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n      order: index,\n      key: key,\n      item: item,\n      renderItem: mergedRenderItem,\n      itemKey: key,\n      registerSize: registerSize,\n      display: index <= mergedDisplayCount\n    }));\n  };\n\n  // >>>>> Rest node\n  var restContextProps = {\n    order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n    className: \"\".concat(itemPrefixCls, \"-rest\"),\n    registerSize: registerOverflowSize,\n    display: displayRest\n  };\n  var mergedRenderRest = renderRest || defaultRenderRest;\n  var restNode = renderRawRest ? /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n    value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n  }, renderRawRest(omittedItems)) : /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n  var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n    className: classNames(!invalidate && prefixCls, className),\n    style: style,\n    ref: ref\n  }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n    responsive: isResponsive,\n    responsiveDisabled: !shouldResponsive,\n    order: mergedDisplayCount,\n    className: \"\".concat(itemPrefixCls, \"-suffix\"),\n    registerSize: registerSuffixSize,\n    display: true,\n    style: suffixStyle\n  }), suffix));\n  return isResponsive ? /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onOverflowResize,\n    disabled: !shouldResponsive\n  }, overflowNode) : overflowNode;\n}\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE;\n\n// Convert to generic type\nexport default ForwardOverflow;","import Overflow from \"./Overflow\";\nexport default Overflow;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { warning } from \"rc-util/es/warning\";\nvar Input = function Input(props, ref) {\n  var _inputNode2;\n  var prefixCls = props.prefixCls,\n    id = props.id,\n    inputElement = props.inputElement,\n    disabled = props.disabled,\n    tabIndex = props.tabIndex,\n    autoFocus = props.autoFocus,\n    autoComplete = props.autoComplete,\n    editable = props.editable,\n    activeDescendantId = props.activeDescendantId,\n    value = props.value,\n    maxLength = props.maxLength,\n    _onKeyDown = props.onKeyDown,\n    _onMouseDown = props.onMouseDown,\n    _onChange = props.onChange,\n    onPaste = props.onPaste,\n    _onCompositionStart = props.onCompositionStart,\n    _onCompositionEnd = props.onCompositionEnd,\n    _onBlur = props.onBlur,\n    open = props.open,\n    attrs = props.attrs;\n  var inputNode = inputElement || /*#__PURE__*/React.createElement(\"input\", null);\n  var _inputNode = inputNode,\n    originRef = _inputNode.ref,\n    originProps = _inputNode.props;\n  var onOriginKeyDown = originProps.onKeyDown,\n    onOriginChange = originProps.onChange,\n    onOriginMouseDown = originProps.onMouseDown,\n    onOriginCompositionStart = originProps.onCompositionStart,\n    onOriginCompositionEnd = originProps.onCompositionEnd,\n    onOriginBlur = originProps.onBlur,\n    style = originProps.style;\n  warning(!('maxLength' in inputNode.props), \"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled.\");\n  inputNode = /*#__PURE__*/React.cloneElement(inputNode, _objectSpread(_objectSpread(_objectSpread({\n    type: 'search'\n  }, originProps), {}, {\n    // Override over origin props\n    id: id,\n    ref: composeRef(ref, originRef),\n    disabled: disabled,\n    tabIndex: tabIndex,\n    autoComplete: autoComplete || 'off',\n    autoFocus: autoFocus,\n    className: classNames(\"\".concat(prefixCls, \"-selection-search-input\"), (_inputNode2 = inputNode) === null || _inputNode2 === void 0 || (_inputNode2 = _inputNode2.props) === null || _inputNode2 === void 0 ? void 0 : _inputNode2.className),\n    role: 'combobox',\n    'aria-expanded': open || false,\n    'aria-haspopup': 'listbox',\n    'aria-owns': \"\".concat(id, \"_list\"),\n    'aria-autocomplete': 'list',\n    'aria-controls': \"\".concat(id, \"_list\"),\n    'aria-activedescendant': open ? activeDescendantId : undefined\n  }, attrs), {}, {\n    value: editable ? value : '',\n    maxLength: maxLength,\n    readOnly: !editable,\n    unselectable: !editable ? 'on' : null,\n    style: _objectSpread(_objectSpread({}, style), {}, {\n      opacity: editable ? null : 0\n    }),\n    onKeyDown: function onKeyDown(event) {\n      _onKeyDown(event);\n      if (onOriginKeyDown) {\n        onOriginKeyDown(event);\n      }\n    },\n    onMouseDown: function onMouseDown(event) {\n      _onMouseDown(event);\n      if (onOriginMouseDown) {\n        onOriginMouseDown(event);\n      }\n    },\n    onChange: function onChange(event) {\n      _onChange(event);\n      if (onOriginChange) {\n        onOriginChange(event);\n      }\n    },\n    onCompositionStart: function onCompositionStart(event) {\n      _onCompositionStart(event);\n      if (onOriginCompositionStart) {\n        onOriginCompositionStart(event);\n      }\n    },\n    onCompositionEnd: function onCompositionEnd(event) {\n      _onCompositionEnd(event);\n      if (onOriginCompositionEnd) {\n        onOriginCompositionEnd(event);\n      }\n    },\n    onPaste: onPaste,\n    onBlur: function onBlur(event) {\n      _onBlur(event);\n      if (onOriginBlur) {\n        onOriginBlur(event);\n      }\n    }\n  }));\n  return inputNode;\n};\nvar RefInput = /*#__PURE__*/React.forwardRef(Input);\nif (process.env.NODE_ENV !== 'production') {\n  RefInput.displayName = 'Input';\n}\nexport default RefInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function toArray(value) {\n  if (Array.isArray(value)) {\n    return value;\n  }\n  return value !== undefined ? [value] : [];\n}\nexport var isClient = typeof window !== 'undefined' && window.document && window.document.documentElement;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;\nexport function hasValue(value) {\n  return value !== undefined && value !== null;\n}\n\n/** combo mode no value judgment function */\nexport function isComboNoValue(value) {\n  return !value && value !== 0;\n}\nfunction isTitleType(title) {\n  return ['string', 'number'].includes(_typeof(title));\n}\nexport function getTitle(item) {\n  var title = undefined;\n  if (item) {\n    if (isTitleType(item.title)) {\n      title = item.title.toString();\n    } else if (isTitleType(item.label)) {\n      title = item.label.toString();\n    }\n  }\n  return title;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Overflow from 'rc-overflow';\nimport TransBtn from \"../TransBtn\";\nimport Input from \"./Input\";\nimport useLayoutEffect from \"../hooks/useLayoutEffect\";\nimport { getTitle } from \"../utils/commonUtil\";\nfunction itemKey(value) {\n  var _value$key;\n  return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;\n}\nvar onPreventMouseDown = function onPreventMouseDown(event) {\n  event.preventDefault();\n  event.stopPropagation();\n};\nvar SelectSelector = function SelectSelector(props) {\n  var id = props.id,\n    prefixCls = props.prefixCls,\n    values = props.values,\n    open = props.open,\n    searchValue = props.searchValue,\n    autoClearSearchValue = props.autoClearSearchValue,\n    inputRef = props.inputRef,\n    placeholder = props.placeholder,\n    disabled = props.disabled,\n    mode = props.mode,\n    showSearch = props.showSearch,\n    autoFocus = props.autoFocus,\n    autoComplete = props.autoComplete,\n    activeDescendantId = props.activeDescendantId,\n    tabIndex = props.tabIndex,\n    removeIcon = props.removeIcon,\n    maxTagCount = props.maxTagCount,\n    maxTagTextLength = props.maxTagTextLength,\n    _props$maxTagPlacehol = props.maxTagPlaceholder,\n    maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function (omittedValues) {\n      return \"+ \".concat(omittedValues.length, \" ...\");\n    } : _props$maxTagPlacehol,\n    tagRender = props.tagRender,\n    onToggleOpen = props.onToggleOpen,\n    onRemove = props.onRemove,\n    onInputChange = props.onInputChange,\n    onInputPaste = props.onInputPaste,\n    onInputKeyDown = props.onInputKeyDown,\n    onInputMouseDown = props.onInputMouseDown,\n    onInputCompositionStart = props.onInputCompositionStart,\n    onInputCompositionEnd = props.onInputCompositionEnd,\n    onInputBlur = props.onInputBlur;\n  var measureRef = React.useRef(null);\n  var _useState = useState(0),\n    _useState2 = _slicedToArray(_useState, 2),\n    inputWidth = _useState2[0],\n    setInputWidth = _useState2[1];\n  var _useState3 = useState(false),\n    _useState4 = _slicedToArray(_useState3, 2),\n    focused = _useState4[0],\n    setFocused = _useState4[1];\n  var selectionPrefixCls = \"\".concat(prefixCls, \"-selection\");\n\n  // ===================== Search ======================\n  var inputValue = open || mode === 'multiple' && autoClearSearchValue === false || mode === 'tags' ? searchValue : '';\n  var inputEditable = mode === 'tags' || mode === 'multiple' && autoClearSearchValue === false || showSearch && (open || focused);\n\n  // We measure width and set to the input immediately\n  useLayoutEffect(function () {\n    setInputWidth(measureRef.current.scrollWidth);\n  }, [inputValue]);\n\n  // ===================== Render ======================\n  // >>> Render Selector Node. Includes Item & Rest\n  var defaultRenderSelector = function defaultRenderSelector(item, content, itemDisabled, closable, onClose) {\n    return /*#__PURE__*/React.createElement(\"span\", {\n      title: getTitle(item),\n      className: classNames(\"\".concat(selectionPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(selectionPrefixCls, \"-item-disabled\"), itemDisabled))\n    }, /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(selectionPrefixCls, \"-item-content\")\n    }, content), closable && /*#__PURE__*/React.createElement(TransBtn, {\n      className: \"\".concat(selectionPrefixCls, \"-item-remove\"),\n      onMouseDown: onPreventMouseDown,\n      onClick: onClose,\n      customizeIcon: removeIcon\n    }, \"\\xD7\"));\n  };\n  var customizeRenderSelector = function customizeRenderSelector(value, content, itemDisabled, closable, onClose, isMaxTag) {\n    var onMouseDown = function onMouseDown(e) {\n      onPreventMouseDown(e);\n      onToggleOpen(!open);\n    };\n    return /*#__PURE__*/React.createElement(\"span\", {\n      onMouseDown: onMouseDown\n    }, tagRender({\n      label: content,\n      value: value,\n      disabled: itemDisabled,\n      closable: closable,\n      onClose: onClose,\n      isMaxTag: !!isMaxTag\n    }));\n  };\n  var renderItem = function renderItem(valueItem) {\n    var itemDisabled = valueItem.disabled,\n      label = valueItem.label,\n      value = valueItem.value;\n    var closable = !disabled && !itemDisabled;\n    var displayLabel = label;\n    if (typeof maxTagTextLength === 'number') {\n      if (typeof label === 'string' || typeof label === 'number') {\n        var strLabel = String(displayLabel);\n        if (strLabel.length > maxTagTextLength) {\n          displayLabel = \"\".concat(strLabel.slice(0, maxTagTextLength), \"...\");\n        }\n      }\n    }\n    var onClose = function onClose(event) {\n      if (event) {\n        event.stopPropagation();\n      }\n      onRemove(valueItem);\n    };\n    return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);\n  };\n  var renderRest = function renderRest(omittedValues) {\n    // https://github.com/ant-design/ant-design/issues/48930\n    if (!values.length) {\n      return null;\n    }\n    var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n    return typeof tagRender === 'function' ? customizeRenderSelector(undefined, content, false, false, undefined, true) : defaultRenderSelector({\n      title: content\n    }, content, false);\n  };\n\n  // >>> Input Node\n  var inputNode = /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(selectionPrefixCls, \"-search\"),\n    style: {\n      width: inputWidth\n    },\n    onFocus: function onFocus() {\n      setFocused(true);\n    },\n    onBlur: function onBlur() {\n      setFocused(false);\n    }\n  }, /*#__PURE__*/React.createElement(Input, {\n    ref: inputRef,\n    open: open,\n    prefixCls: prefixCls,\n    id: id,\n    inputElement: null,\n    disabled: disabled,\n    autoFocus: autoFocus,\n    autoComplete: autoComplete,\n    editable: inputEditable,\n    activeDescendantId: activeDescendantId,\n    value: inputValue,\n    onKeyDown: onInputKeyDown,\n    onMouseDown: onInputMouseDown,\n    onChange: onInputChange,\n    onPaste: onInputPaste,\n    onCompositionStart: onInputCompositionStart,\n    onCompositionEnd: onInputCompositionEnd,\n    onBlur: onInputBlur,\n    tabIndex: tabIndex,\n    attrs: pickAttrs(props, true)\n  }), /*#__PURE__*/React.createElement(\"span\", {\n    ref: measureRef,\n    className: \"\".concat(selectionPrefixCls, \"-search-mirror\"),\n    \"aria-hidden\": true\n  }, inputValue, \"\\xA0\"));\n\n  // >>> Selections\n  var selectionNode = /*#__PURE__*/React.createElement(Overflow, {\n    prefixCls: \"\".concat(selectionPrefixCls, \"-overflow\"),\n    data: values,\n    renderItem: renderItem,\n    renderRest: renderRest,\n    suffix: inputNode,\n    itemKey: itemKey,\n    maxCount: maxTagCount\n  });\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(selectionPrefixCls, \"-wrap\")\n  }, selectionNode, !values.length && !inputValue && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(selectionPrefixCls, \"-placeholder\")\n  }, placeholder));\n};\nexport default SelectSelector;","/* eslint-disable react-hooks/rules-of-hooks */\nimport * as React from 'react';\nimport { isBrowserClient } from \"../utils/commonUtil\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nexport default function useLayoutEffect(effect, deps) {\n  // Never happen in test env\n  if (isBrowserClient) {\n    /* istanbul ignore next */\n    React.useLayoutEffect(effect, deps);\n  } else {\n    React.useEffect(effect, deps);\n  }\n}\n/* eslint-enable */","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Input from \"./Input\";\nimport { getTitle } from \"../utils/commonUtil\";\nvar SingleSelector = function SingleSelector(props) {\n  var inputElement = props.inputElement,\n    prefixCls = props.prefixCls,\n    id = props.id,\n    inputRef = props.inputRef,\n    disabled = props.disabled,\n    autoFocus = props.autoFocus,\n    autoComplete = props.autoComplete,\n    activeDescendantId = props.activeDescendantId,\n    mode = props.mode,\n    open = props.open,\n    values = props.values,\n    placeholder = props.placeholder,\n    tabIndex = props.tabIndex,\n    showSearch = props.showSearch,\n    searchValue = props.searchValue,\n    activeValue = props.activeValue,\n    maxLength = props.maxLength,\n    onInputKeyDown = props.onInputKeyDown,\n    onInputMouseDown = props.onInputMouseDown,\n    onInputChange = props.onInputChange,\n    onInputPaste = props.onInputPaste,\n    onInputCompositionStart = props.onInputCompositionStart,\n    onInputCompositionEnd = props.onInputCompositionEnd,\n    onInputBlur = props.onInputBlur,\n    title = props.title;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    inputChanged = _React$useState2[0],\n    setInputChanged = _React$useState2[1];\n  var combobox = mode === 'combobox';\n  var inputEditable = combobox || showSearch;\n  var item = values[0];\n  var inputValue = searchValue || '';\n  if (combobox && activeValue && !inputChanged) {\n    inputValue = activeValue;\n  }\n  React.useEffect(function () {\n    if (combobox) {\n      setInputChanged(false);\n    }\n  }, [combobox, activeValue]);\n\n  // Not show text when closed expect combobox mode\n  var hasTextInput = mode !== 'combobox' && !open && !showSearch ? false : !!inputValue;\n\n  // Get title of selection item\n  var selectionTitle = title === undefined ? getTitle(item) : title;\n  var placeholderNode = React.useMemo(function () {\n    if (item) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-selection-placeholder\"),\n      style: hasTextInput ? {\n        visibility: 'hidden'\n      } : undefined\n    }, placeholder);\n  }, [item, hasTextInput, placeholder, prefixCls]);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-selection-wrap\")\n  }, /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-selection-search\")\n  }, /*#__PURE__*/React.createElement(Input, {\n    ref: inputRef,\n    prefixCls: prefixCls,\n    id: id,\n    open: open,\n    inputElement: inputElement,\n    disabled: disabled,\n    autoFocus: autoFocus,\n    autoComplete: autoComplete,\n    editable: inputEditable,\n    activeDescendantId: activeDescendantId,\n    value: inputValue,\n    onKeyDown: onInputKeyDown,\n    onMouseDown: onInputMouseDown,\n    onChange: function onChange(e) {\n      setInputChanged(true);\n      onInputChange(e);\n    },\n    onPaste: onInputPaste,\n    onCompositionStart: onInputCompositionStart,\n    onCompositionEnd: onInputCompositionEnd,\n    onBlur: onInputBlur,\n    tabIndex: tabIndex,\n    attrs: pickAttrs(props, true),\n    maxLength: combobox ? maxLength : undefined\n  })), !combobox && item ? /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-selection-item\"),\n    title: selectionTitle\n    // 当 Select 已经选中选项时,还需 selection 隐藏但留在原地占位\n    // https://github.com/ant-design/ant-design/issues/27688\n    // https://github.com/ant-design/ant-design/issues/41530\n    ,\n    style: hasTextInput ? {\n      visibility: 'hidden'\n    } : undefined\n  }, item.label) : null, placeholderNode);\n};\nexport default SingleSelector;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\n\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport useLock from \"../hooks/useLock\";\nimport { isValidateOpenKey } from \"../utils/keyUtil\";\nimport MultipleSelector from \"./MultipleSelector\";\nimport SingleSelector from \"./SingleSelector\";\nvar Selector = function Selector(props, ref) {\n  var inputRef = useRef(null);\n  var compositionStatusRef = useRef(false);\n  var prefixCls = props.prefixCls,\n    open = props.open,\n    mode = props.mode,\n    showSearch = props.showSearch,\n    tokenWithEnter = props.tokenWithEnter,\n    disabled = props.disabled,\n    prefix = props.prefix,\n    autoClearSearchValue = props.autoClearSearchValue,\n    onSearch = props.onSearch,\n    onSearchSubmit = props.onSearchSubmit,\n    onToggleOpen = props.onToggleOpen,\n    onInputKeyDown = props.onInputKeyDown,\n    onInputBlur = props.onInputBlur,\n    domRef = props.domRef;\n\n  // ======================= Ref =======================\n  React.useImperativeHandle(ref, function () {\n    return {\n      focus: function focus(options) {\n        inputRef.current.focus(options);\n      },\n      blur: function blur() {\n        inputRef.current.blur();\n      }\n    };\n  });\n\n  // ====================== Input ======================\n  var _useLock = useLock(0),\n    _useLock2 = _slicedToArray(_useLock, 2),\n    getInputMouseDown = _useLock2[0],\n    setInputMouseDown = _useLock2[1];\n  var onInternalInputKeyDown = function onInternalInputKeyDown(event) {\n    var which = event.which;\n\n    // Compatible with multiple lines in TextArea\n    var isTextAreaElement = inputRef.current instanceof HTMLTextAreaElement;\n    if (!isTextAreaElement && open && (which === KeyCode.UP || which === KeyCode.DOWN)) {\n      event.preventDefault();\n    }\n    if (onInputKeyDown) {\n      onInputKeyDown(event);\n    }\n    if (which === KeyCode.ENTER && mode === 'tags' && !compositionStatusRef.current && !open) {\n      // When menu isn't open, OptionList won't trigger a value change\n      // So when enter is pressed, the tag's input value should be emitted here to let selector know\n      onSearchSubmit === null || onSearchSubmit === void 0 || onSearchSubmit(event.target.value);\n    }\n    // Move within the text box\n    if (isTextAreaElement && !open && ~[KeyCode.UP, KeyCode.DOWN, KeyCode.LEFT, KeyCode.RIGHT].indexOf(which)) {\n      return;\n    }\n    if (isValidateOpenKey(which)) {\n      onToggleOpen(true);\n    }\n  };\n\n  /**\n   * We can not use `findDOMNode` sine it will get warning,\n   * have to use timer to check if is input element.\n   */\n  var onInternalInputMouseDown = function onInternalInputMouseDown() {\n    setInputMouseDown(true);\n  };\n\n  // When paste come, ignore next onChange\n  var pastedTextRef = useRef(null);\n  var triggerOnSearch = function triggerOnSearch(value) {\n    if (onSearch(value, true, compositionStatusRef.current) !== false) {\n      onToggleOpen(true);\n    }\n  };\n  var onInputCompositionStart = function onInputCompositionStart() {\n    compositionStatusRef.current = true;\n  };\n  var onInputCompositionEnd = function onInputCompositionEnd(e) {\n    compositionStatusRef.current = false;\n\n    // Trigger search again to support `tokenSeparators` with typewriting\n    if (mode !== 'combobox') {\n      triggerOnSearch(e.target.value);\n    }\n  };\n  var onInputChange = function onInputChange(event) {\n    var value = event.target.value;\n\n    // Pasted text should replace back to origin content\n    if (tokenWithEnter && pastedTextRef.current && /[\\r\\n]/.test(pastedTextRef.current)) {\n      // CRLF will be treated as a single space for input element\n      var replacedText = pastedTextRef.current.replace(/[\\r\\n]+$/, '').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n      value = value.replace(replacedText, pastedTextRef.current);\n    }\n    pastedTextRef.current = null;\n    triggerOnSearch(value);\n  };\n  var onInputPaste = function onInputPaste(e) {\n    var clipboardData = e.clipboardData;\n    var value = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');\n    pastedTextRef.current = value || '';\n  };\n  var onClick = function onClick(_ref) {\n    var target = _ref.target;\n    if (target !== inputRef.current) {\n      // Should focus input if click the selector\n      var isIE = document.body.style.msTouchAction !== undefined;\n      if (isIE) {\n        setTimeout(function () {\n          inputRef.current.focus();\n        });\n      } else {\n        inputRef.current.focus();\n      }\n    }\n  };\n  var onMouseDown = function onMouseDown(event) {\n    var inputMouseDown = getInputMouseDown();\n\n    // when mode is combobox and it is disabled, don't prevent default behavior\n    // https://github.com/ant-design/ant-design/issues/37320\n    // https://github.com/ant-design/ant-design/issues/48281\n    if (event.target !== inputRef.current && !inputMouseDown && !(mode === 'combobox' && disabled)) {\n      event.preventDefault();\n    }\n    if (mode !== 'combobox' && (!showSearch || !inputMouseDown) || !open) {\n      if (open && autoClearSearchValue !== false) {\n        onSearch('', true, false);\n      }\n      onToggleOpen();\n    }\n  };\n\n  // ================= Inner Selector ==================\n  var sharedProps = {\n    inputRef: inputRef,\n    onInputKeyDown: onInternalInputKeyDown,\n    onInputMouseDown: onInternalInputMouseDown,\n    onInputChange: onInputChange,\n    onInputPaste: onInputPaste,\n    onInputCompositionStart: onInputCompositionStart,\n    onInputCompositionEnd: onInputCompositionEnd,\n    onInputBlur: onInputBlur\n  };\n  var selectNode = mode === 'multiple' || mode === 'tags' ? /*#__PURE__*/React.createElement(MultipleSelector, _extends({}, props, sharedProps)) : /*#__PURE__*/React.createElement(SingleSelector, _extends({}, props, sharedProps));\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: domRef,\n    className: \"\".concat(prefixCls, \"-selector\"),\n    onClick: onClick,\n    onMouseDown: onMouseDown\n  }, prefix && /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-prefix\")\n  }, prefix), selectNode);\n};\nvar ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);\nif (process.env.NODE_ENV !== 'production') {\n  ForwardSelector.displayName = 'Selector';\n}\nexport default ForwardSelector;","import KeyCode from \"rc-util/es/KeyCode\";\n\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode) {\n  return (\n    // Undefined for Edge bug:\n    // https://github.com/ant-design/ant-design/issues/51292\n    currentKeyCode &&\n    // Other keys\n    ![\n    // System function button\n    KeyCode.ESC, KeyCode.SHIFT, KeyCode.BACKSPACE, KeyCode.TAB, KeyCode.WIN_KEY, KeyCode.ALT, KeyCode.META, KeyCode.WIN_KEY_RIGHT, KeyCode.CTRL, KeyCode.SEMICOLON, KeyCode.EQUALS, KeyCode.CAPS_LOCK, KeyCode.CONTEXT_MENU,\n    // F1-F12\n    KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12].includes(currentKeyCode)\n  );\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"disabled\", \"visible\", \"children\", \"popupElement\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"direction\", \"placement\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"getPopupContainer\", \"empty\", \"getTriggerDOMNode\", \"onPopupVisibleChange\", \"onPopupMouseEnter\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar getBuiltInPlacements = function getBuiltInPlacements(dropdownMatchSelectWidth) {\n  // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n  var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n  return {\n    bottomLeft: {\n      points: ['tl', 'bl'],\n      offset: [0, 4],\n      overflow: {\n        adjustX: adjustX,\n        adjustY: 1\n      },\n      htmlRegion: 'scroll'\n    },\n    bottomRight: {\n      points: ['tr', 'br'],\n      offset: [0, 4],\n      overflow: {\n        adjustX: adjustX,\n        adjustY: 1\n      },\n      htmlRegion: 'scroll'\n    },\n    topLeft: {\n      points: ['bl', 'tl'],\n      offset: [0, -4],\n      overflow: {\n        adjustX: adjustX,\n        adjustY: 1\n      },\n      htmlRegion: 'scroll'\n    },\n    topRight: {\n      points: ['br', 'tr'],\n      offset: [0, -4],\n      overflow: {\n        adjustX: adjustX,\n        adjustY: 1\n      },\n      htmlRegion: 'scroll'\n    }\n  };\n};\nvar SelectTrigger = function SelectTrigger(props, ref) {\n  var prefixCls = props.prefixCls,\n    disabled = props.disabled,\n    visible = props.visible,\n    children = props.children,\n    popupElement = props.popupElement,\n    animation = props.animation,\n    transitionName = props.transitionName,\n    dropdownStyle = props.dropdownStyle,\n    dropdownClassName = props.dropdownClassName,\n    _props$direction = props.direction,\n    direction = _props$direction === void 0 ? 'ltr' : _props$direction,\n    placement = props.placement,\n    builtinPlacements = props.builtinPlacements,\n    dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n    dropdownRender = props.dropdownRender,\n    dropdownAlign = props.dropdownAlign,\n    getPopupContainer = props.getPopupContainer,\n    empty = props.empty,\n    getTriggerDOMNode = props.getTriggerDOMNode,\n    onPopupVisibleChange = props.onPopupVisibleChange,\n    onPopupMouseEnter = props.onPopupMouseEnter,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n  var popupNode = popupElement;\n  if (dropdownRender) {\n    popupNode = dropdownRender(popupElement);\n  }\n  var mergedBuiltinPlacements = React.useMemo(function () {\n    return builtinPlacements || getBuiltInPlacements(dropdownMatchSelectWidth);\n  }, [builtinPlacements, dropdownMatchSelectWidth]);\n\n  // ===================== Motion ======================\n  var mergedTransitionName = animation ? \"\".concat(dropdownPrefixCls, \"-\").concat(animation) : transitionName;\n\n  // =================== Popup Width ===================\n  var isNumberPopupWidth = typeof dropdownMatchSelectWidth === 'number';\n  var stretch = React.useMemo(function () {\n    if (isNumberPopupWidth) {\n      return null;\n    }\n    return dropdownMatchSelectWidth === false ? 'minWidth' : 'width';\n  }, [dropdownMatchSelectWidth, isNumberPopupWidth]);\n  var popupStyle = dropdownStyle;\n  if (isNumberPopupWidth) {\n    popupStyle = _objectSpread(_objectSpread({}, popupStyle), {}, {\n      width: dropdownMatchSelectWidth\n    });\n  }\n\n  // ======================= Ref =======================\n  var triggerPopupRef = React.useRef(null);\n  React.useImperativeHandle(ref, function () {\n    return {\n      getPopupElement: function getPopupElement() {\n        var _triggerPopupRef$curr;\n        return (_triggerPopupRef$curr = triggerPopupRef.current) === null || _triggerPopupRef$curr === void 0 ? void 0 : _triggerPopupRef$curr.popupElement;\n      }\n    };\n  });\n  return /*#__PURE__*/React.createElement(Trigger, _extends({}, restProps, {\n    showAction: onPopupVisibleChange ? ['click'] : [],\n    hideAction: onPopupVisibleChange ? ['click'] : [],\n    popupPlacement: placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft'),\n    builtinPlacements: mergedBuiltinPlacements,\n    prefixCls: dropdownPrefixCls,\n    popupTransitionName: mergedTransitionName,\n    popup: /*#__PURE__*/React.createElement(\"div\", {\n      onMouseEnter: onPopupMouseEnter\n    }, popupNode),\n    ref: triggerPopupRef,\n    stretch: stretch,\n    popupAlign: dropdownAlign,\n    popupVisible: visible,\n    getPopupContainer: getPopupContainer,\n    popupClassName: classNames(dropdownClassName, _defineProperty({}, \"\".concat(dropdownPrefixCls, \"-empty\"), empty)),\n    popupStyle: popupStyle,\n    getTriggerDOMNode: getTriggerDOMNode,\n    onPopupVisibleChange: onPopupVisibleChange\n  }), children);\n};\nvar RefSelectTrigger = /*#__PURE__*/React.forwardRef(SelectTrigger);\nif (process.env.NODE_ENV !== 'production') {\n  RefSelectTrigger.displayName = 'SelectTrigger';\n}\nexport default RefSelectTrigger;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nfunction getKey(data, index) {\n  var key = data.key;\n  var value;\n  if ('value' in data) {\n    value = data.value;\n  }\n  if (key !== null && key !== undefined) {\n    return key;\n  }\n  if (value !== undefined) {\n    return value;\n  }\n  return \"rc-index-key-\".concat(index);\n}\nexport function isValidCount(value) {\n  return typeof value !== 'undefined' && !Number.isNaN(value);\n}\nexport function fillFieldNames(fieldNames, childrenAsData) {\n  var _ref = fieldNames || {},\n    label = _ref.label,\n    value = _ref.value,\n    options = _ref.options,\n    groupLabel = _ref.groupLabel;\n  var mergedLabel = label || (childrenAsData ? 'children' : 'label');\n  return {\n    label: mergedLabel,\n    value: value || 'value',\n    options: options || 'options',\n    groupLabel: groupLabel || mergedLabel\n  };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions(options) {\n  var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n    fieldNames = _ref2.fieldNames,\n    childrenAsData = _ref2.childrenAsData;\n  var flattenList = [];\n  var _fillFieldNames = fillFieldNames(fieldNames, false),\n    fieldLabel = _fillFieldNames.label,\n    fieldValue = _fillFieldNames.value,\n    fieldOptions = _fillFieldNames.options,\n    groupLabel = _fillFieldNames.groupLabel;\n  function dig(list, isGroupOption) {\n    if (!Array.isArray(list)) {\n      return;\n    }\n    list.forEach(function (data) {\n      if (isGroupOption || !(fieldOptions in data)) {\n        var value = data[fieldValue];\n\n        // Option\n        flattenList.push({\n          key: getKey(data, flattenList.length),\n          groupOption: isGroupOption,\n          data: data,\n          label: data[fieldLabel],\n          value: value\n        });\n      } else {\n        var grpLabel = data[groupLabel];\n        if (grpLabel === undefined && childrenAsData) {\n          grpLabel = data.label;\n        }\n\n        // Option Group\n        flattenList.push({\n          key: getKey(data, flattenList.length),\n          group: true,\n          data: data,\n          label: grpLabel\n        });\n        dig(data[fieldOptions], true);\n      }\n    });\n  }\n  dig(options, false);\n  return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption(option) {\n  var newOption = _objectSpread({}, option);\n  if (!('props' in newOption)) {\n    Object.defineProperty(newOption, 'props', {\n      get: function get() {\n        warning(false, 'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.');\n        return newOption;\n      }\n    });\n  }\n  return newOption;\n}\nexport var getSeparatedContent = function getSeparatedContent(text, tokens, end) {\n  if (!tokens || !tokens.length) {\n    return null;\n  }\n  var match = false;\n  var separate = function separate(str, _ref3) {\n    var _ref4 = _toArray(_ref3),\n      token = _ref4[0],\n      restTokens = _ref4.slice(1);\n    if (!token) {\n      return [str];\n    }\n    var list = str.split(token);\n    match = match || list.length > 1;\n    return list.reduce(function (prevList, unitStr) {\n      return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate(unitStr, restTokens)));\n    }, []).filter(Boolean);\n  };\n  var list = separate(text, tokens);\n  if (match) {\n    return typeof end !== 'undefined' ? list.slice(0, end) : list;\n  } else {\n    return null;\n  }\n};","import * as React from 'react';\n\n// Use any here since we do not get the type during compilation\n\nvar SelectContext = /*#__PURE__*/React.createContext(null);\nexport default SelectContext;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nexport default function Polite(props) {\n  var visible = props.visible,\n    values = props.values;\n  if (!visible) {\n    return null;\n  }\n\n  // Only cut part of values since it's a screen reader\n  var MAX_COUNT = 50;\n  return /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-live\": \"polite\",\n    style: {\n      width: 0,\n      height: 0,\n      position: 'absolute',\n      overflow: 'hidden',\n      opacity: 0\n    }\n  }, \"\".concat(values.slice(0, MAX_COUNT).map(function (_ref) {\n    var label = _ref.label,\n      value = _ref.value;\n    return ['number', 'string'].includes(_typeof(label)) ? label : value;\n  }).join(', ')), values.length > MAX_COUNT ? ', ...' : null);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"showSearch\", \"tagRender\", \"direction\", \"omitDomProps\", \"displayValues\", \"onDisplayValuesChange\", \"emptyOptions\", \"notFoundContent\", \"onClear\", \"mode\", \"disabled\", \"loading\", \"getInputElement\", \"getRawInputElement\", \"open\", \"defaultOpen\", \"onDropdownVisibleChange\", \"activeValue\", \"onActiveValueChange\", \"activeDescendantId\", \"searchValue\", \"autoClearSearchValue\", \"onSearch\", \"onSearchSplit\", \"tokenSeparators\", \"allowClear\", \"prefix\", \"suffixIcon\", \"clearIcon\", \"OptionList\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"placement\", \"builtinPlacements\", \"getPopupContainer\", \"showAction\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\"];\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useAllowClear } from \"../hooks/useAllowClear\";\nimport { BaseSelectContext } from \"../hooks/useBaseProps\";\nimport useDelayReset from \"../hooks/useDelayReset\";\nimport useLock from \"../hooks/useLock\";\nimport useSelectTriggerControl from \"../hooks/useSelectTriggerControl\";\nimport Selector from \"../Selector\";\nimport SelectTrigger from \"../SelectTrigger\";\nimport TransBtn from \"../TransBtn\";\nimport { getSeparatedContent, isValidCount } from \"../utils/valueUtil\";\nimport SelectContext from \"../SelectContext\";\nimport Polite from \"./Polite\";\nvar DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex'];\nexport var isMultiple = function isMultiple(mode) {\n  return mode === 'tags' || mode === 'multiple';\n};\nvar BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _customizeRawInputEle;\n  var id = props.id,\n    prefixCls = props.prefixCls,\n    className = props.className,\n    showSearch = props.showSearch,\n    tagRender = props.tagRender,\n    direction = props.direction,\n    omitDomProps = props.omitDomProps,\n    displayValues = props.displayValues,\n    onDisplayValuesChange = props.onDisplayValuesChange,\n    emptyOptions = props.emptyOptions,\n    _props$notFoundConten = props.notFoundContent,\n    notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n    onClear = props.onClear,\n    mode = props.mode,\n    disabled = props.disabled,\n    loading = props.loading,\n    getInputElement = props.getInputElement,\n    getRawInputElement = props.getRawInputElement,\n    open = props.open,\n    defaultOpen = props.defaultOpen,\n    onDropdownVisibleChange = props.onDropdownVisibleChange,\n    activeValue = props.activeValue,\n    onActiveValueChange = props.onActiveValueChange,\n    activeDescendantId = props.activeDescendantId,\n    searchValue = props.searchValue,\n    autoClearSearchValue = props.autoClearSearchValue,\n    onSearch = props.onSearch,\n    onSearchSplit = props.onSearchSplit,\n    tokenSeparators = props.tokenSeparators,\n    allowClear = props.allowClear,\n    prefix = props.prefix,\n    suffixIcon = props.suffixIcon,\n    clearIcon = props.clearIcon,\n    OptionList = props.OptionList,\n    animation = props.animation,\n    transitionName = props.transitionName,\n    dropdownStyle = props.dropdownStyle,\n    dropdownClassName = props.dropdownClassName,\n    dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n    dropdownRender = props.dropdownRender,\n    dropdownAlign = props.dropdownAlign,\n    placement = props.placement,\n    builtinPlacements = props.builtinPlacements,\n    getPopupContainer = props.getPopupContainer,\n    _props$showAction = props.showAction,\n    showAction = _props$showAction === void 0 ? [] : _props$showAction,\n    onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    onKeyUp = props.onKeyUp,\n    onKeyDown = props.onKeyDown,\n    onMouseDown = props.onMouseDown,\n    restProps = _objectWithoutProperties(props, _excluded);\n\n  // ============================== MISC ==============================\n  var multiple = isMultiple(mode);\n  var mergedShowSearch = (showSearch !== undefined ? showSearch : multiple) || mode === 'combobox';\n  var domProps = _objectSpread({}, restProps);\n  DEFAULT_OMIT_PROPS.forEach(function (propName) {\n    delete domProps[propName];\n  });\n  omitDomProps === null || omitDomProps === void 0 || omitDomProps.forEach(function (propName) {\n    delete domProps[propName];\n  });\n\n  // ============================= Mobile =============================\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    mobile = _React$useState2[0],\n    setMobile = _React$useState2[1];\n  React.useEffect(function () {\n    // Only update on the client side\n    setMobile(isMobile());\n  }, []);\n\n  // ============================== Refs ==============================\n  var containerRef = React.useRef(null);\n  var selectorDomRef = React.useRef(null);\n  var triggerRef = React.useRef(null);\n  var selectorRef = React.useRef(null);\n  var listRef = React.useRef(null);\n  var blurRef = React.useRef(false);\n\n  /** Used for component focused management */\n  var _useDelayReset = useDelayReset(),\n    _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n    mockFocused = _useDelayReset2[0],\n    setMockFocused = _useDelayReset2[1],\n    cancelSetMockFocused = _useDelayReset2[2];\n\n  // =========================== Imperative ===========================\n  React.useImperativeHandle(ref, function () {\n    var _selectorRef$current, _selectorRef$current2;\n    return {\n      focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,\n      blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,\n      scrollTo: function scrollTo(arg) {\n        var _listRef$current;\n        return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);\n      },\n      nativeElement: containerRef.current || selectorDomRef.current\n    };\n  });\n\n  // ========================== Search Value ==========================\n  var mergedSearchValue = React.useMemo(function () {\n    var _displayValues$;\n    if (mode !== 'combobox') {\n      return searchValue;\n    }\n    var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;\n    return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n  }, [searchValue, mode, displayValues]);\n\n  // ========================== Custom Input ==========================\n  // Only works in `combobox`\n  var customizeInputElement = mode === 'combobox' && typeof getInputElement === 'function' && getInputElement() || null;\n\n  // Used for customize replacement for `rc-cascader`\n  var customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();\n  var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 || (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);\n\n  // ============================== Open ==============================\n  // SSR not support Portal which means we need delay `open` for the first time render\n  var _React$useState3 = React.useState(false),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    rendered = _React$useState4[0],\n    setRendered = _React$useState4[1];\n  useLayoutEffect(function () {\n    setRendered(true);\n  }, []);\n  var _useMergedState = useMergedState(false, {\n      defaultValue: defaultOpen,\n      value: open\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    innerOpen = _useMergedState2[0],\n    setInnerOpen = _useMergedState2[1];\n  var mergedOpen = rendered ? innerOpen : false;\n\n  // Not trigger `open` in `combobox` when `notFoundContent` is empty\n  var emptyListContent = !notFoundContent && emptyOptions;\n  if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n    mergedOpen = false;\n  }\n  var triggerOpen = emptyListContent ? false : mergedOpen;\n  var onToggleOpen = React.useCallback(function (newOpen) {\n    var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n    if (!disabled) {\n      setInnerOpen(nextOpen);\n      if (mergedOpen !== nextOpen) {\n        onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 || onDropdownVisibleChange(nextOpen);\n      }\n    }\n  }, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);\n\n  // ============================= Search =============================\n  var tokenWithEnter = React.useMemo(function () {\n    return (tokenSeparators || []).some(function (tokenSeparator) {\n      return ['\\n', '\\r\\n'].includes(tokenSeparator);\n    });\n  }, [tokenSeparators]);\n  var _ref = React.useContext(SelectContext) || {},\n    maxCount = _ref.maxCount,\n    rawValues = _ref.rawValues;\n  var onInternalSearch = function onInternalSearch(searchText, fromTyping, isCompositing) {\n    if (multiple && isValidCount(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount) {\n      return;\n    }\n    var ret = true;\n    var newSearchText = searchText;\n    onActiveValueChange === null || onActiveValueChange === void 0 || onActiveValueChange(null);\n    var separatedList = getSeparatedContent(searchText, tokenSeparators, isValidCount(maxCount) ? maxCount - rawValues.size : undefined);\n\n    // Check if match the `tokenSeparators`\n    var patchLabels = isCompositing ? null : separatedList;\n\n    // Ignore combobox since it's not split-able\n    if (mode !== 'combobox' && patchLabels) {\n      newSearchText = '';\n      onSearchSplit === null || onSearchSplit === void 0 || onSearchSplit(patchLabels);\n\n      // Should close when paste finish\n      onToggleOpen(false);\n\n      // Tell Selector that break next actions\n      ret = false;\n    }\n    if (onSearch && mergedSearchValue !== newSearchText) {\n      onSearch(newSearchText, {\n        source: fromTyping ? 'typing' : 'effect'\n      });\n    }\n    return ret;\n  };\n\n  // Only triggered when menu is closed & mode is tags\n  // If menu is open, OptionList will take charge\n  // If mode isn't tags, press enter is not meaningful when you can't see any option\n  var onInternalSearchSubmit = function onInternalSearchSubmit(searchText) {\n    // prevent empty tags from appearing when you click the Enter button\n    if (!searchText || !searchText.trim()) {\n      return;\n    }\n    onSearch(searchText, {\n      source: 'submit'\n    });\n  };\n\n  // Close will clean up single mode search text\n  React.useEffect(function () {\n    if (!mergedOpen && !multiple && mode !== 'combobox') {\n      onInternalSearch('', false, false);\n    }\n  }, [mergedOpen]);\n\n  // ============================ Disabled ============================\n  // Close dropdown & remove focus state when disabled change\n  React.useEffect(function () {\n    if (innerOpen && disabled) {\n      setInnerOpen(false);\n    }\n\n    // After onBlur is triggered, the focused does not need to be reset\n    if (disabled && !blurRef.current) {\n      setMockFocused(false);\n    }\n  }, [disabled]);\n\n  // ============================ Keyboard ============================\n  /**\n   * We record input value here to check if can press to clean up by backspace\n   * - null: Key is not down, this is reset by key up\n   * - true: Search text is empty when first time backspace down\n   * - false: Search text is not empty when first time backspace down\n   */\n  var _useLock = useLock(),\n    _useLock2 = _slicedToArray(_useLock, 2),\n    getClearLock = _useLock2[0],\n    setClearLock = _useLock2[1];\n  var keyLockRef = React.useRef(false);\n\n  // KeyDown\n  var onInternalKeyDown = function onInternalKeyDown(event) {\n    var clearLock = getClearLock();\n    var key = event.key;\n    var isEnterKey = key === 'Enter';\n    if (isEnterKey) {\n      // Do not submit form when type in the input\n      if (mode !== 'combobox') {\n        event.preventDefault();\n      }\n\n      // We only manage open state here, close logic should handle by list component\n      if (!mergedOpen) {\n        onToggleOpen(true);\n      }\n    }\n    setClearLock(!!mergedSearchValue);\n\n    // Remove value by `backspace`\n    if (key === 'Backspace' && !clearLock && multiple && !mergedSearchValue && displayValues.length) {\n      var cloneDisplayValues = _toConsumableArray(displayValues);\n      var removedDisplayValue = null;\n      for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n        var current = cloneDisplayValues[i];\n        if (!current.disabled) {\n          cloneDisplayValues.splice(i, 1);\n          removedDisplayValue = current;\n          break;\n        }\n      }\n      if (removedDisplayValue) {\n        onDisplayValuesChange(cloneDisplayValues, {\n          type: 'remove',\n          values: [removedDisplayValue]\n        });\n      }\n    }\n    for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      rest[_key - 1] = arguments[_key];\n    }\n    if (mergedOpen && (!isEnterKey || !keyLockRef.current)) {\n      var _listRef$current2;\n      // Lock the Enter key after it is pressed to avoid repeated triggering of the onChange event.\n      if (isEnterKey) {\n        keyLockRef.current = true;\n      }\n      (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.onKeyDown.apply(_listRef$current2, [event].concat(rest));\n    }\n    onKeyDown === null || onKeyDown === void 0 || onKeyDown.apply(void 0, [event].concat(rest));\n  };\n\n  // KeyUp\n  var onInternalKeyUp = function onInternalKeyUp(event) {\n    for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      rest[_key2 - 1] = arguments[_key2];\n    }\n    if (mergedOpen) {\n      var _listRef$current3;\n      (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.onKeyUp.apply(_listRef$current3, [event].concat(rest));\n    }\n    if (event.key === 'Enter') {\n      keyLockRef.current = false;\n    }\n    onKeyUp === null || onKeyUp === void 0 || onKeyUp.apply(void 0, [event].concat(rest));\n  };\n\n  // ============================ Selector ============================\n  var onSelectorRemove = function onSelectorRemove(val) {\n    var newValues = displayValues.filter(function (i) {\n      return i !== val;\n    });\n    onDisplayValuesChange(newValues, {\n      type: 'remove',\n      values: [val]\n    });\n  };\n  var onInputBlur = function onInputBlur() {\n    // Unlock the Enter key after the input blur; otherwise, the Enter key needs to be pressed twice to trigger the correct effect.\n    keyLockRef.current = false;\n  };\n\n  // ========================== Focus / Blur ==========================\n  /** Record real focus status */\n  var focusRef = React.useRef(false);\n  var onContainerFocus = function onContainerFocus() {\n    setMockFocused(true);\n    if (!disabled) {\n      if (onFocus && !focusRef.current) {\n        onFocus.apply(void 0, arguments);\n      }\n\n      // `showAction` should handle `focus` if set\n      if (showAction.includes('focus')) {\n        onToggleOpen(true);\n      }\n    }\n    focusRef.current = true;\n  };\n  var onContainerBlur = function onContainerBlur() {\n    blurRef.current = true;\n    setMockFocused(false, function () {\n      focusRef.current = false;\n      blurRef.current = false;\n      onToggleOpen(false);\n    });\n    if (disabled) {\n      return;\n    }\n    if (mergedSearchValue) {\n      // `tags` mode should move `searchValue` into values\n      if (mode === 'tags') {\n        onSearch(mergedSearchValue, {\n          source: 'submit'\n        });\n      } else if (mode === 'multiple') {\n        // `multiple` mode only clean the search value but not trigger event\n        onSearch('', {\n          source: 'blur'\n        });\n      }\n    }\n    if (onBlur) {\n      onBlur.apply(void 0, arguments);\n    }\n  };\n\n  // Give focus back of Select\n  var activeTimeoutIds = [];\n  React.useEffect(function () {\n    return function () {\n      activeTimeoutIds.forEach(function (timeoutId) {\n        return clearTimeout(timeoutId);\n      });\n      activeTimeoutIds.splice(0, activeTimeoutIds.length);\n    };\n  }, []);\n  var onInternalMouseDown = function onInternalMouseDown(event) {\n    var _triggerRef$current;\n    var target = event.target;\n    var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();\n\n    // We should give focus back to selector if clicked item is not focusable\n    if (popupElement && popupElement.contains(target)) {\n      var timeoutId = setTimeout(function () {\n        var index = activeTimeoutIds.indexOf(timeoutId);\n        if (index !== -1) {\n          activeTimeoutIds.splice(index, 1);\n        }\n        cancelSetMockFocused();\n        if (!mobile && !popupElement.contains(document.activeElement)) {\n          var _selectorRef$current3;\n          (_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 || _selectorRef$current3.focus();\n        }\n      });\n      activeTimeoutIds.push(timeoutId);\n    }\n    for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      restArgs[_key3 - 1] = arguments[_key3];\n    }\n    onMouseDown === null || onMouseDown === void 0 || onMouseDown.apply(void 0, [event].concat(restArgs));\n  };\n\n  // ============================ Dropdown ============================\n  var _React$useState5 = React.useState({}),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    forceUpdate = _React$useState6[1];\n  // We need force update here since popup dom is render async\n  function onPopupMouseEnter() {\n    forceUpdate({});\n  }\n\n  // Used for raw custom input trigger\n  var onTriggerVisibleChange;\n  if (customizeRawInputElement) {\n    onTriggerVisibleChange = function onTriggerVisibleChange(newOpen) {\n      onToggleOpen(newOpen);\n    };\n  }\n\n  // Close when click on non-select element\n  useSelectTriggerControl(function () {\n    var _triggerRef$current2;\n    return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];\n  }, triggerOpen, onToggleOpen, !!customizeRawInputElement);\n\n  // ============================ Context =============================\n  var baseSelectContext = React.useMemo(function () {\n    return _objectSpread(_objectSpread({}, props), {}, {\n      notFoundContent: notFoundContent,\n      open: mergedOpen,\n      triggerOpen: triggerOpen,\n      id: id,\n      showSearch: mergedShowSearch,\n      multiple: multiple,\n      toggleOpen: onToggleOpen\n    });\n  }, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);\n\n  // ==================================================================\n  // ==                            Render                            ==\n  // ==================================================================\n\n  // ============================= Arrow ==============================\n  var showSuffixIcon = !!suffixIcon || loading;\n  var arrowNode;\n  if (showSuffixIcon) {\n    arrowNode = /*#__PURE__*/React.createElement(TransBtn, {\n      className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n      customizeIcon: suffixIcon,\n      customizeIconProps: {\n        loading: loading,\n        searchValue: mergedSearchValue,\n        open: mergedOpen,\n        focused: mockFocused,\n        showSearch: mergedShowSearch\n      }\n    });\n  }\n\n  // ============================= Clear ==============================\n  var onClearMouseDown = function onClearMouseDown() {\n    var _selectorRef$current4;\n    onClear === null || onClear === void 0 || onClear();\n    (_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 || _selectorRef$current4.focus();\n    onDisplayValuesChange([], {\n      type: 'clear',\n      values: displayValues\n    });\n    onInternalSearch('', false, false);\n  };\n  var _useAllowClear = useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode),\n    mergedAllowClear = _useAllowClear.allowClear,\n    clearNode = _useAllowClear.clearIcon;\n\n  // =========================== OptionList ===========================\n  var optionList = /*#__PURE__*/React.createElement(OptionList, {\n    ref: listRef\n  });\n\n  // ============================= Select =============================\n  var mergedClassName = classNames(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-focused\"), mockFocused), \"\".concat(prefixCls, \"-multiple\"), multiple), \"\".concat(prefixCls, \"-single\"), !multiple), \"\".concat(prefixCls, \"-allow-clear\"), allowClear), \"\".concat(prefixCls, \"-show-arrow\"), showSuffixIcon), \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(prefixCls, \"-loading\"), loading), \"\".concat(prefixCls, \"-open\"), mergedOpen), \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch));\n\n  // >>> Selector\n  var selectorNode = /*#__PURE__*/React.createElement(SelectTrigger, {\n    ref: triggerRef,\n    disabled: disabled,\n    prefixCls: prefixCls,\n    visible: triggerOpen,\n    popupElement: optionList,\n    animation: animation,\n    transitionName: transitionName,\n    dropdownStyle: dropdownStyle,\n    dropdownClassName: dropdownClassName,\n    direction: direction,\n    dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n    dropdownRender: dropdownRender,\n    dropdownAlign: dropdownAlign,\n    placement: placement,\n    builtinPlacements: builtinPlacements,\n    getPopupContainer: getPopupContainer,\n    empty: emptyOptions,\n    getTriggerDOMNode: function getTriggerDOMNode(node) {\n      return (\n        // TODO: This is workaround and should be removed in `rc-select`\n        // And use new standard `nativeElement` for ref.\n        // But we should update `rc-resize-observer` first.\n        selectorDomRef.current || node\n      );\n    },\n    onPopupVisibleChange: onTriggerVisibleChange,\n    onPopupMouseEnter: onPopupMouseEnter\n  }, customizeRawInputElement ? ( /*#__PURE__*/React.cloneElement(customizeRawInputElement, {\n    ref: customizeRawInputRef\n  })) : /*#__PURE__*/React.createElement(Selector, _extends({}, props, {\n    domRef: selectorDomRef,\n    prefixCls: prefixCls,\n    inputElement: customizeInputElement,\n    ref: selectorRef,\n    id: id,\n    prefix: prefix,\n    showSearch: mergedShowSearch,\n    autoClearSearchValue: autoClearSearchValue,\n    mode: mode,\n    activeDescendantId: activeDescendantId,\n    tagRender: tagRender,\n    values: displayValues,\n    open: mergedOpen,\n    onToggleOpen: onToggleOpen,\n    activeValue: activeValue,\n    searchValue: mergedSearchValue,\n    onSearch: onInternalSearch,\n    onSearchSubmit: onInternalSearchSubmit,\n    onRemove: onSelectorRemove,\n    tokenWithEnter: tokenWithEnter,\n    onInputBlur: onInputBlur\n  })));\n\n  // >>> Render\n  var renderNode;\n\n  // Render raw\n  if (customizeRawInputElement) {\n    renderNode = selectorNode;\n  } else {\n    renderNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n      className: mergedClassName\n    }, domProps, {\n      ref: containerRef,\n      onMouseDown: onInternalMouseDown,\n      onKeyDown: onInternalKeyDown,\n      onKeyUp: onInternalKeyUp,\n      onFocus: onContainerFocus,\n      onBlur: onContainerBlur\n    }), /*#__PURE__*/React.createElement(Polite, {\n      visible: mockFocused && !mergedOpen,\n      values: displayValues\n    }), selectorNode, arrowNode, mergedAllowClear && clearNode);\n  }\n  return /*#__PURE__*/React.createElement(BaseSelectContext.Provider, {\n    value: baseSelectContext\n  }, renderNode);\n});\n\n// Set display name for dev\nif (process.env.NODE_ENV !== 'production') {\n  BaseSelect.displayName = 'BaseSelect';\n}\nexport default BaseSelect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset() {\n  var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    bool = _React$useState2[0],\n    setBool = _React$useState2[1];\n  var delayRef = React.useRef(null);\n  var cancelLatest = function cancelLatest() {\n    window.clearTimeout(delayRef.current);\n  };\n  React.useEffect(function () {\n    return cancelLatest;\n  }, []);\n  var delaySetBool = function delaySetBool(value, callback) {\n    cancelLatest();\n    delayRef.current = window.setTimeout(function () {\n      setBool(value);\n      if (callback) {\n        callback();\n      }\n    }, timeout);\n  };\n  return [bool, delaySetBool, cancelLatest];\n}","import * as React from 'react';\nexport default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {\n  var propsRef = React.useRef(null);\n  propsRef.current = {\n    open: open,\n    triggerOpen: triggerOpen,\n    customizedTrigger: customizedTrigger\n  };\n  React.useEffect(function () {\n    function onGlobalMouseDown(event) {\n      var _propsRef$current;\n      // If trigger is customized, Trigger will take control of popupVisible\n      if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {\n        return;\n      }\n      var target = event.target;\n      if (target.shadowRoot && event.composed) {\n        target = event.composedPath()[0] || target;\n      }\n      if (propsRef.current.open && elements().filter(function (element) {\n        return element;\n      }).every(function (element) {\n        return !element.contains(target) && element !== target;\n      })) {\n        // Should trigger close\n        propsRef.current.triggerOpen(false);\n      }\n    }\n    window.addEventListener('mousedown', onGlobalMouseDown);\n    return function () {\n      return window.removeEventListener('mousedown', onGlobalMouseDown);\n    };\n  }, []);\n}","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar OptGroup = function OptGroup() {\n  return null;\n};\nOptGroup.isSelectOptGroup = true;\nexport default OptGroup;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar Option = function Option() {\n  return null;\n};\nOption.isSelectOption = true;\nexport default Option;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport classNames from 'classnames';\n/**\n * Fill component to provided the scroll content real height.\n */\nvar Filler = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var height = _ref.height,\n    offsetY = _ref.offsetY,\n    offsetX = _ref.offsetX,\n    children = _ref.children,\n    prefixCls = _ref.prefixCls,\n    onInnerResize = _ref.onInnerResize,\n    innerProps = _ref.innerProps,\n    rtl = _ref.rtl,\n    extra = _ref.extra;\n  var outerStyle = {};\n  var innerStyle = {\n    display: 'flex',\n    flexDirection: 'column'\n  };\n  if (offsetY !== undefined) {\n    // Not set `width` since this will break `sticky: right`\n    outerStyle = {\n      height: height,\n      position: 'relative',\n      overflow: 'hidden'\n    };\n    innerStyle = _objectSpread(_objectSpread({}, innerStyle), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({\n      transform: \"translateY(\".concat(offsetY, \"px)\")\n    }, rtl ? 'marginRight' : 'marginLeft', -offsetX), \"position\", 'absolute'), \"left\", 0), \"right\", 0), \"top\", 0));\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    style: outerStyle\n  }, /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: function onResize(_ref2) {\n      var offsetHeight = _ref2.offsetHeight;\n      if (offsetHeight && onInnerResize) {\n        onInnerResize();\n      }\n    }\n  }, /*#__PURE__*/React.createElement(\"div\", _extends({\n    style: innerStyle,\n    className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-holder-inner\"), prefixCls)),\n    ref: ref\n  }, innerProps), children, extra)));\n});\nFiller.displayName = 'Filler';\nexport default Filler;","import * as React from 'react';\nexport function Item(_ref) {\n  var children = _ref.children,\n    setRef = _ref.setRef;\n  var refFunc = React.useCallback(function (node) {\n    setRef(node);\n  }, []);\n  return /*#__PURE__*/React.cloneElement(children, {\n    ref: refFunc\n  });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { findListDiffIndex } from \"../utils/algorithmUtil\";\nexport default function useDiffItem(data, getKey, onDiff) {\n  var _React$useState = React.useState(data),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    prevData = _React$useState2[0],\n    setPrevData = _React$useState2[1];\n  var _React$useState3 = React.useState(null),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    diffItem = _React$useState4[0],\n    setDiffItem = _React$useState4[1];\n  React.useEffect(function () {\n    var diff = findListDiffIndex(prevData || [], data || [], getKey);\n    if ((diff === null || diff === void 0 ? void 0 : diff.index) !== undefined) {\n      onDiff === null || onDiff === void 0 || onDiff(diff.index);\n      setDiffItem(data[diff.index]);\n    }\n    setPrevData(data);\n  }, [data]);\n  return [diffItem];\n}","/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n  var beforeCount = start - min;\n  var afterCount = max - start;\n  var balanceCount = Math.min(beforeCount, afterCount) * 2;\n\n  // Balance\n  if (index <= balanceCount) {\n    var stepIndex = Math.floor(index / 2);\n    if (index % 2) {\n      return start + stepIndex + 1;\n    }\n    return start - stepIndex;\n  }\n\n  // One is out of range\n  if (beforeCount > afterCount) {\n    return start - (index - afterCount);\n  }\n  return start + (index - beforeCount);\n}\n\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n  var originLen = originList.length;\n  var targetLen = targetList.length;\n  var shortList;\n  var longList;\n  if (originLen === 0 && targetLen === 0) {\n    return null;\n  }\n  if (originLen < targetLen) {\n    shortList = originList;\n    longList = targetList;\n  } else {\n    shortList = targetList;\n    longList = originList;\n  }\n  var notExistKey = {\n    __EMPTY_ITEM__: true\n  };\n  function getItemKey(item) {\n    if (item !== undefined) {\n      return getKey(item);\n    }\n    return notExistKey;\n  }\n\n  // Loop to find diff one\n  var diffIndex = null;\n  var multiple = Math.abs(originLen - targetLen) !== 1;\n  for (var i = 0; i < longList.length; i += 1) {\n    var shortKey = getItemKey(shortList[i]);\n    var longKey = getItemKey(longList[i]);\n    if (shortKey !== longKey) {\n      diffIndex = i;\n      multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n      break;\n    }\n  }\n  return diffIndex === null ? null : {\n    index: diffIndex,\n    multiple: multiple\n  };\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar isFF = (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;","import { useRef } from 'react';\nexport default (function (isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight) {\n  // Do lock for a wheel when scrolling\n  var lockRef = useRef(false);\n  var lockTimeoutRef = useRef(null);\n  function lockScroll() {\n    clearTimeout(lockTimeoutRef.current);\n    lockRef.current = true;\n    lockTimeoutRef.current = setTimeout(function () {\n      lockRef.current = false;\n    }, 50);\n  }\n\n  // Pass to ref since global add is in closure\n  var scrollPingRef = useRef({\n    top: isScrollAtTop,\n    bottom: isScrollAtBottom,\n    left: isScrollAtLeft,\n    right: isScrollAtRight\n  });\n  scrollPingRef.current.top = isScrollAtTop;\n  scrollPingRef.current.bottom = isScrollAtBottom;\n  scrollPingRef.current.left = isScrollAtLeft;\n  scrollPingRef.current.right = isScrollAtRight;\n  return function (isHorizontal, delta) {\n    var smoothOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var originScroll = isHorizontal ?\n    // Pass origin wheel when on the left\n    delta < 0 && scrollPingRef.current.left ||\n    // Pass origin wheel when on the right\n    delta > 0 && scrollPingRef.current.right // Pass origin wheel when on the top\n    : delta < 0 && scrollPingRef.current.top ||\n    // Pass origin wheel when on the bottom\n    delta > 0 && scrollPingRef.current.bottom;\n    if (smoothOffset && originScroll) {\n      // No need lock anymore when it's smooth offset from touchMove interval\n      clearTimeout(lockTimeoutRef.current);\n      lockRef.current = false;\n    } else if (!originScroll || lockRef.current) {\n      lockScroll();\n    }\n    return !lockRef.current && originScroll;\n  };\n});","import raf from \"rc-util/es/raf\";\nimport { useRef } from 'react';\nimport isFF from \"../utils/isFirefox\";\nimport useOriginScroll from \"./useOriginScroll\";\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, horizontalScroll,\n/***\n * Return `true` when you need to prevent default event\n */\nonWheelDelta) {\n  var offsetRef = useRef(0);\n  var nextFrameRef = useRef(null);\n\n  // Firefox patch\n  var wheelValueRef = useRef(null);\n  var isMouseScrollRef = useRef(false);\n\n  // Scroll status sync\n  var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);\n  function onWheelY(e, deltaY) {\n    raf.cancel(nextFrameRef.current);\n\n    // Do nothing when scroll at the edge, Skip check when is in scroll\n    if (originScroll(false, deltaY)) return;\n\n    // Skip if nest List has handled this event\n    var event = e;\n    if (!event._virtualHandled) {\n      event._virtualHandled = true;\n    } else {\n      return;\n    }\n    offsetRef.current += deltaY;\n    wheelValueRef.current = deltaY;\n\n    // Proxy of scroll events\n    if (!isFF) {\n      event.preventDefault();\n    }\n    nextFrameRef.current = raf(function () {\n      // Patch a multiple for Firefox to fix wheel number too small\n      // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n      var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n      onWheelDelta(offsetRef.current * patchMultiple, false);\n      offsetRef.current = 0;\n    });\n  }\n  function onWheelX(event, deltaX) {\n    onWheelDelta(deltaX, true);\n    if (!isFF) {\n      event.preventDefault();\n    }\n  }\n\n  // Check for which direction does wheel do. `sx` means `shift + wheel`\n  var wheelDirectionRef = useRef(null);\n  var wheelDirectionCleanRef = useRef(null);\n  function onWheel(event) {\n    if (!inVirtual) return;\n\n    // Wait for 2 frame to clean direction\n    raf.cancel(wheelDirectionCleanRef.current);\n    wheelDirectionCleanRef.current = raf(function () {\n      wheelDirectionRef.current = null;\n    }, 2);\n    var deltaX = event.deltaX,\n      deltaY = event.deltaY,\n      shiftKey = event.shiftKey;\n    var mergedDeltaX = deltaX;\n    var mergedDeltaY = deltaY;\n    if (wheelDirectionRef.current === 'sx' || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {\n      mergedDeltaX = deltaY;\n      mergedDeltaY = 0;\n      wheelDirectionRef.current = 'sx';\n    }\n    var absX = Math.abs(mergedDeltaX);\n    var absY = Math.abs(mergedDeltaY);\n    if (wheelDirectionRef.current === null) {\n      wheelDirectionRef.current = horizontalScroll && absX > absY ? 'x' : 'y';\n    }\n    if (wheelDirectionRef.current === 'y') {\n      onWheelY(event, mergedDeltaY);\n    } else {\n      onWheelX(event, mergedDeltaX);\n    }\n  }\n\n  // A patch for firefox\n  function onFireFoxScroll(event) {\n    if (!inVirtual) return;\n    isMouseScrollRef.current = event.detail === wheelValueRef.current;\n  }\n  return [onWheel, onFireFoxScroll];\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// Firefox has low performance of map.\nvar CacheMap = /*#__PURE__*/function () {\n  function CacheMap() {\n    _classCallCheck(this, CacheMap);\n    _defineProperty(this, \"maps\", void 0);\n    // Used for cache key\n    // `useMemo` no need to update if `id` not change\n    _defineProperty(this, \"id\", 0);\n    _defineProperty(this, \"diffKeys\", new Set());\n    this.maps = Object.create(null);\n  }\n  _createClass(CacheMap, [{\n    key: \"set\",\n    value: function set(key, value) {\n      this.maps[key] = value;\n      this.id += 1;\n      this.diffKeys.add(key);\n    }\n  }, {\n    key: \"get\",\n    value: function get(key) {\n      return this.maps[key];\n    }\n\n    /**\n     * CacheMap will record the key changed.\n     * To help to know what's update in the next render.\n     */\n  }, {\n    key: \"resetRecord\",\n    value: function resetRecord() {\n      this.diffKeys.clear();\n    }\n  }, {\n    key: \"getRecord\",\n    value: function getRecord() {\n      return this.diffKeys;\n    }\n  }]);\n  return CacheMap;\n}();\nexport default CacheMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport CacheMap from \"../utils/CacheMap\";\nfunction parseNumber(value) {\n  var num = parseFloat(value);\n  return isNaN(num) ? 0 : num;\n}\nexport default function useHeights(getKey, onItemAdd, onItemRemove) {\n  var _React$useState = React.useState(0),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    updatedMark = _React$useState2[0],\n    setUpdatedMark = _React$useState2[1];\n  var instanceRef = useRef(new Map());\n  var heightsRef = useRef(new CacheMap());\n  var promiseIdRef = useRef(0);\n  function cancelRaf() {\n    promiseIdRef.current += 1;\n  }\n  function collectHeight() {\n    var sync = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    cancelRaf();\n    var doCollect = function doCollect() {\n      var changed = false;\n      instanceRef.current.forEach(function (element, key) {\n        if (element && element.offsetParent) {\n          var htmlElement = findDOMNode(element);\n          var offsetHeight = htmlElement.offsetHeight;\n          var _getComputedStyle = getComputedStyle(htmlElement),\n            marginTop = _getComputedStyle.marginTop,\n            marginBottom = _getComputedStyle.marginBottom;\n          var marginTopNum = parseNumber(marginTop);\n          var marginBottomNum = parseNumber(marginBottom);\n          var totalHeight = offsetHeight + marginTopNum + marginBottomNum;\n          if (heightsRef.current.get(key) !== totalHeight) {\n            heightsRef.current.set(key, totalHeight);\n            changed = true;\n          }\n        }\n      });\n\n      // Always trigger update mark to tell parent that should re-calculate heights when resized\n      if (changed) {\n        setUpdatedMark(function (c) {\n          return c + 1;\n        });\n      }\n    };\n    if (sync) {\n      doCollect();\n    } else {\n      promiseIdRef.current += 1;\n      var id = promiseIdRef.current;\n      Promise.resolve().then(function () {\n        if (id === promiseIdRef.current) {\n          doCollect();\n        }\n      });\n    }\n  }\n  function setInstanceRef(item, instance) {\n    var key = getKey(item);\n    var origin = instanceRef.current.get(key);\n    if (instance) {\n      instanceRef.current.set(key, instance);\n      collectHeight();\n    } else {\n      instanceRef.current.delete(key);\n    }\n\n    // Instance changed\n    if (!origin !== !instance) {\n      if (instance) {\n        onItemAdd === null || onItemAdd === void 0 || onItemAdd(item);\n      } else {\n        onItemRemove === null || onItemRemove === void 0 || onItemRemove(item);\n      }\n    }\n  }\n  useEffect(function () {\n    return cancelRaf;\n  }, []);\n  return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];\n}","import useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { useRef } from 'react';\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n  var touchedRef = useRef(false);\n  var touchXRef = useRef(0);\n  var touchYRef = useRef(0);\n  var elementRef = useRef(null);\n\n  // Smooth scroll\n  var intervalRef = useRef(null);\n\n  /* eslint-disable prefer-const */\n  var cleanUpEvents;\n  var onTouchMove = function onTouchMove(e) {\n    if (touchedRef.current) {\n      var currentX = Math.ceil(e.touches[0].pageX);\n      var currentY = Math.ceil(e.touches[0].pageY);\n      var offsetX = touchXRef.current - currentX;\n      var offsetY = touchYRef.current - currentY;\n      var _isHorizontal = Math.abs(offsetX) > Math.abs(offsetY);\n      if (_isHorizontal) {\n        touchXRef.current = currentX;\n      } else {\n        touchYRef.current = currentY;\n      }\n      var scrollHandled = callback(_isHorizontal, _isHorizontal ? offsetX : offsetY, false, e);\n      if (scrollHandled) {\n        e.preventDefault();\n      }\n\n      // Smooth interval\n      clearInterval(intervalRef.current);\n      if (scrollHandled) {\n        intervalRef.current = setInterval(function () {\n          if (_isHorizontal) {\n            offsetX *= SMOOTH_PTG;\n          } else {\n            offsetY *= SMOOTH_PTG;\n          }\n          var offset = Math.floor(_isHorizontal ? offsetX : offsetY);\n          if (!callback(_isHorizontal, offset, true) || Math.abs(offset) <= 0.1) {\n            clearInterval(intervalRef.current);\n          }\n        }, 16);\n      }\n    }\n  };\n  var onTouchEnd = function onTouchEnd() {\n    touchedRef.current = false;\n    cleanUpEvents();\n  };\n  var onTouchStart = function onTouchStart(e) {\n    cleanUpEvents();\n    if (e.touches.length === 1 && !touchedRef.current) {\n      touchedRef.current = true;\n      touchXRef.current = Math.ceil(e.touches[0].pageX);\n      touchYRef.current = Math.ceil(e.touches[0].pageY);\n      elementRef.current = e.target;\n      elementRef.current.addEventListener('touchmove', onTouchMove, {\n        passive: false\n      });\n      elementRef.current.addEventListener('touchend', onTouchEnd, {\n        passive: true\n      });\n    }\n  };\n  cleanUpEvents = function cleanUpEvents() {\n    if (elementRef.current) {\n      elementRef.current.removeEventListener('touchmove', onTouchMove);\n      elementRef.current.removeEventListener('touchend', onTouchEnd);\n    }\n  };\n  useLayoutEffect(function () {\n    if (inVirtual) {\n      listRef.current.addEventListener('touchstart', onTouchStart, {\n        passive: true\n      });\n    }\n    return function () {\n      var _listRef$current;\n      (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.removeEventListener('touchstart', onTouchStart);\n      cleanUpEvents();\n      clearInterval(intervalRef.current);\n    };\n  }, [inVirtual]);\n}","import raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nfunction smoothScrollOffset(offset) {\n  return Math.floor(Math.pow(offset, 0.5));\n}\nexport function getPageXY(e, horizontal) {\n  var obj = 'touches' in e ? e.touches[0] : e;\n  return obj[horizontal ? 'pageX' : 'pageY'] - window[horizontal ? 'scrollX' : 'scrollY'];\n}\nexport default function useScrollDrag(inVirtual, componentRef, onScrollOffset) {\n  React.useEffect(function () {\n    var ele = componentRef.current;\n    if (inVirtual && ele) {\n      var mouseDownLock = false;\n      var rafId;\n      var _offset;\n      var stopScroll = function stopScroll() {\n        raf.cancel(rafId);\n      };\n      var continueScroll = function continueScroll() {\n        stopScroll();\n        rafId = raf(function () {\n          onScrollOffset(_offset);\n          continueScroll();\n        });\n      };\n      var onMouseDown = function onMouseDown(e) {\n        // Skip if element set draggable\n        if (e.target.draggable) {\n          return;\n        }\n        // Skip if nest List has handled this event\n        var event = e;\n        if (!event._virtualHandled) {\n          event._virtualHandled = true;\n          mouseDownLock = true;\n        }\n      };\n      var onMouseUp = function onMouseUp() {\n        mouseDownLock = false;\n        stopScroll();\n      };\n      var onMouseMove = function onMouseMove(e) {\n        if (mouseDownLock) {\n          var mouseY = getPageXY(e, false);\n          var _ele$getBoundingClien = ele.getBoundingClientRect(),\n            top = _ele$getBoundingClien.top,\n            bottom = _ele$getBoundingClien.bottom;\n          if (mouseY <= top) {\n            var diff = top - mouseY;\n            _offset = -smoothScrollOffset(diff);\n            continueScroll();\n          } else if (mouseY >= bottom) {\n            var _diff = mouseY - bottom;\n            _offset = smoothScrollOffset(_diff);\n            continueScroll();\n          } else {\n            stopScroll();\n          }\n        }\n      };\n      ele.addEventListener('mousedown', onMouseDown);\n      ele.ownerDocument.addEventListener('mouseup', onMouseUp);\n      ele.ownerDocument.addEventListener('mousemove', onMouseMove);\n      return function () {\n        ele.removeEventListener('mousedown', onMouseDown);\n        ele.ownerDocument.removeEventListener('mouseup', onMouseUp);\n        ele.ownerDocument.removeEventListener('mousemove', onMouseMove);\n        stopScroll();\n      };\n    }\n  }, [inVirtual]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { getPageXY } from \"./hooks/useScrollDrag\";\nvar ScrollBar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    rtl = props.rtl,\n    scrollOffset = props.scrollOffset,\n    scrollRange = props.scrollRange,\n    onStartMove = props.onStartMove,\n    onStopMove = props.onStopMove,\n    onScroll = props.onScroll,\n    horizontal = props.horizontal,\n    spinSize = props.spinSize,\n    containerSize = props.containerSize,\n    style = props.style,\n    propsThumbStyle = props.thumbStyle,\n    showScrollBar = props.showScrollBar;\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    dragging = _React$useState2[0],\n    setDragging = _React$useState2[1];\n  var _React$useState3 = React.useState(null),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    pageXY = _React$useState4[0],\n    setPageXY = _React$useState4[1];\n  var _React$useState5 = React.useState(null),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    startTop = _React$useState6[0],\n    setStartTop = _React$useState6[1];\n  var isLTR = !rtl;\n\n  // ========================= Refs =========================\n  var scrollbarRef = React.useRef();\n  var thumbRef = React.useRef();\n\n  // ======================= Visible ========================\n  var _React$useState7 = React.useState(showScrollBar),\n    _React$useState8 = _slicedToArray(_React$useState7, 2),\n    visible = _React$useState8[0],\n    setVisible = _React$useState8[1];\n  var visibleTimeoutRef = React.useRef();\n  var delayHidden = function delayHidden() {\n    if (showScrollBar === true || showScrollBar === false) return;\n    clearTimeout(visibleTimeoutRef.current);\n    setVisible(true);\n    visibleTimeoutRef.current = setTimeout(function () {\n      setVisible(false);\n    }, 3000);\n  };\n\n  // ======================== Range =========================\n  var enableScrollRange = scrollRange - containerSize || 0;\n  var enableOffsetRange = containerSize - spinSize || 0;\n\n  // ========================= Top ==========================\n  var top = React.useMemo(function () {\n    if (scrollOffset === 0 || enableScrollRange === 0) {\n      return 0;\n    }\n    var ptg = scrollOffset / enableScrollRange;\n    return ptg * enableOffsetRange;\n  }, [scrollOffset, enableScrollRange, enableOffsetRange]);\n\n  // ====================== Container =======================\n  var onContainerMouseDown = function onContainerMouseDown(e) {\n    e.stopPropagation();\n    e.preventDefault();\n  };\n\n  // ======================== Thumb =========================\n  var stateRef = React.useRef({\n    top: top,\n    dragging: dragging,\n    pageY: pageXY,\n    startTop: startTop\n  });\n  stateRef.current = {\n    top: top,\n    dragging: dragging,\n    pageY: pageXY,\n    startTop: startTop\n  };\n  var onThumbMouseDown = function onThumbMouseDown(e) {\n    setDragging(true);\n    setPageXY(getPageXY(e, horizontal));\n    setStartTop(stateRef.current.top);\n    onStartMove();\n    e.stopPropagation();\n    e.preventDefault();\n  };\n\n  // ======================== Effect ========================\n\n  // React make event as passive, but we need to preventDefault\n  // Add event on dom directly instead.\n  // ref: https://github.com/facebook/react/issues/9809\n  React.useEffect(function () {\n    var onScrollbarTouchStart = function onScrollbarTouchStart(e) {\n      e.preventDefault();\n    };\n    var scrollbarEle = scrollbarRef.current;\n    var thumbEle = thumbRef.current;\n    scrollbarEle.addEventListener('touchstart', onScrollbarTouchStart, {\n      passive: false\n    });\n    thumbEle.addEventListener('touchstart', onThumbMouseDown, {\n      passive: false\n    });\n    return function () {\n      scrollbarEle.removeEventListener('touchstart', onScrollbarTouchStart);\n      thumbEle.removeEventListener('touchstart', onThumbMouseDown);\n    };\n  }, []);\n\n  // Pass to effect\n  var enableScrollRangeRef = React.useRef();\n  enableScrollRangeRef.current = enableScrollRange;\n  var enableOffsetRangeRef = React.useRef();\n  enableOffsetRangeRef.current = enableOffsetRange;\n  React.useEffect(function () {\n    if (dragging) {\n      var moveRafId;\n      var onMouseMove = function onMouseMove(e) {\n        var _stateRef$current = stateRef.current,\n          stateDragging = _stateRef$current.dragging,\n          statePageY = _stateRef$current.pageY,\n          stateStartTop = _stateRef$current.startTop;\n        raf.cancel(moveRafId);\n        var rect = scrollbarRef.current.getBoundingClientRect();\n        var scale = containerSize / (horizontal ? rect.width : rect.height);\n        if (stateDragging) {\n          var offset = (getPageXY(e, horizontal) - statePageY) * scale;\n          var newTop = stateStartTop;\n          if (!isLTR && horizontal) {\n            newTop -= offset;\n          } else {\n            newTop += offset;\n          }\n          var tmpEnableScrollRange = enableScrollRangeRef.current;\n          var tmpEnableOffsetRange = enableOffsetRangeRef.current;\n          var ptg = tmpEnableOffsetRange ? newTop / tmpEnableOffsetRange : 0;\n          var newScrollTop = Math.ceil(ptg * tmpEnableScrollRange);\n          newScrollTop = Math.max(newScrollTop, 0);\n          newScrollTop = Math.min(newScrollTop, tmpEnableScrollRange);\n          moveRafId = raf(function () {\n            onScroll(newScrollTop, horizontal);\n          });\n        }\n      };\n      var onMouseUp = function onMouseUp() {\n        setDragging(false);\n        onStopMove();\n      };\n      window.addEventListener('mousemove', onMouseMove, {\n        passive: true\n      });\n      window.addEventListener('touchmove', onMouseMove, {\n        passive: true\n      });\n      window.addEventListener('mouseup', onMouseUp, {\n        passive: true\n      });\n      window.addEventListener('touchend', onMouseUp, {\n        passive: true\n      });\n      return function () {\n        window.removeEventListener('mousemove', onMouseMove);\n        window.removeEventListener('touchmove', onMouseMove);\n        window.removeEventListener('mouseup', onMouseUp);\n        window.removeEventListener('touchend', onMouseUp);\n        raf.cancel(moveRafId);\n      };\n    }\n  }, [dragging]);\n  React.useEffect(function () {\n    delayHidden();\n    return function () {\n      clearTimeout(visibleTimeoutRef.current);\n    };\n  }, [scrollOffset]);\n\n  // ====================== Imperative ======================\n  React.useImperativeHandle(ref, function () {\n    return {\n      delayHidden: delayHidden\n    };\n  });\n\n  // ======================== Render ========================\n  var scrollbarPrefixCls = \"\".concat(prefixCls, \"-scrollbar\");\n  var containerStyle = {\n    position: 'absolute',\n    visibility: visible ? null : 'hidden'\n  };\n  var thumbStyle = {\n    position: 'absolute',\n    background: 'rgba(0, 0, 0, 0.5)',\n    borderRadius: 99,\n    cursor: 'pointer',\n    userSelect: 'none'\n  };\n  if (horizontal) {\n    // Container\n    containerStyle.height = 8;\n    containerStyle.left = 0;\n    containerStyle.right = 0;\n    containerStyle.bottom = 0;\n\n    // Thumb\n    thumbStyle.height = '100%';\n    thumbStyle.width = spinSize;\n    if (isLTR) {\n      thumbStyle.left = top;\n    } else {\n      thumbStyle.right = top;\n    }\n  } else {\n    // Container\n    containerStyle.width = 8;\n    containerStyle.top = 0;\n    containerStyle.bottom = 0;\n    if (isLTR) {\n      containerStyle.right = 0;\n    } else {\n      containerStyle.left = 0;\n    }\n\n    // Thumb\n    thumbStyle.width = '100%';\n    thumbStyle.height = spinSize;\n    thumbStyle.top = top;\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: scrollbarRef,\n    className: classNames(scrollbarPrefixCls, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-horizontal\"), horizontal), \"\".concat(scrollbarPrefixCls, \"-vertical\"), !horizontal), \"\".concat(scrollbarPrefixCls, \"-visible\"), visible)),\n    style: _objectSpread(_objectSpread({}, containerStyle), style),\n    onMouseDown: onContainerMouseDown,\n    onMouseMove: delayHidden\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: thumbRef,\n    className: classNames(\"\".concat(scrollbarPrefixCls, \"-thumb\"), _defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-thumb-moving\"), dragging)),\n    style: _objectSpread(_objectSpread({}, thumbStyle), propsThumbStyle),\n    onMouseDown: onThumbMouseDown\n  }));\n});\nif (process.env.NODE_ENV !== 'production') {\n  ScrollBar.displayName = 'ScrollBar';\n}\nexport default ScrollBar;","var MIN_SIZE = 20;\nexport function getSpinSize() {\n  var containerSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  var scrollRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var baseSize = containerSize / scrollRange * containerSize;\n  if (isNaN(baseSize)) {\n    baseSize = 0;\n  }\n  baseSize = Math.max(baseSize, MIN_SIZE);\n  return Math.floor(baseSize);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"direction\", \"scrollWidth\", \"component\", \"onScroll\", \"onVirtualScroll\", \"onVisibleChange\", \"innerProps\", \"extraRender\", \"styles\", \"showScrollBar\"];\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { useEvent } from 'rc-util';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport Filler from \"./Filler\";\nimport useChildren from \"./hooks/useChildren\";\nimport useDiffItem from \"./hooks/useDiffItem\";\nimport useFrameWheel from \"./hooks/useFrameWheel\";\nimport { useGetSize } from \"./hooks/useGetSize\";\nimport useHeights from \"./hooks/useHeights\";\nimport useMobileTouchMove from \"./hooks/useMobileTouchMove\";\nimport useOriginScroll from \"./hooks/useOriginScroll\";\nimport useScrollDrag from \"./hooks/useScrollDrag\";\nimport useScrollTo from \"./hooks/useScrollTo\";\nimport ScrollBar from \"./ScrollBar\";\nimport { getSpinSize } from \"./utils/scrollbarUtil\";\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n  overflowY: 'auto',\n  overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n    className = props.className,\n    height = props.height,\n    itemHeight = props.itemHeight,\n    _props$fullHeight = props.fullHeight,\n    fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n    style = props.style,\n    data = props.data,\n    children = props.children,\n    itemKey = props.itemKey,\n    virtual = props.virtual,\n    direction = props.direction,\n    scrollWidth = props.scrollWidth,\n    _props$component = props.component,\n    Component = _props$component === void 0 ? 'div' : _props$component,\n    onScroll = props.onScroll,\n    onVirtualScroll = props.onVirtualScroll,\n    onVisibleChange = props.onVisibleChange,\n    innerProps = props.innerProps,\n    extraRender = props.extraRender,\n    styles = props.styles,\n    _props$showScrollBar = props.showScrollBar,\n    showScrollBar = _props$showScrollBar === void 0 ? 'optional' : _props$showScrollBar,\n    restProps = _objectWithoutProperties(props, _excluded);\n\n  // =============================== Item Key ===============================\n  var getKey = React.useCallback(function (item) {\n    if (typeof itemKey === 'function') {\n      return itemKey(item);\n    }\n    return item === null || item === void 0 ? void 0 : item[itemKey];\n  }, [itemKey]);\n\n  // ================================ Height ================================\n  var _useHeights = useHeights(getKey, null, null),\n    _useHeights2 = _slicedToArray(_useHeights, 4),\n    setInstanceRef = _useHeights2[0],\n    collectHeight = _useHeights2[1],\n    heights = _useHeights2[2],\n    heightUpdatedMark = _useHeights2[3];\n\n  // ================================= MISC =================================\n  var useVirtual = !!(virtual !== false && height && itemHeight);\n  var containerHeight = React.useMemo(function () {\n    return Object.values(heights.maps).reduce(function (total, curr) {\n      return total + curr;\n    }, 0);\n  }, [heights.id, heights.maps]);\n  var inVirtual = useVirtual && data && (Math.max(itemHeight * data.length, containerHeight) > height || !!scrollWidth);\n  var isRTL = direction === 'rtl';\n  var mergedClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), isRTL), className);\n  var mergedData = data || EMPTY_DATA;\n  var componentRef = useRef();\n  var fillerInnerRef = useRef();\n  var containerRef = useRef();\n\n  // =============================== Item Key ===============================\n\n  var _useState = useState(0),\n    _useState2 = _slicedToArray(_useState, 2),\n    offsetTop = _useState2[0],\n    setOffsetTop = _useState2[1];\n  var _useState3 = useState(0),\n    _useState4 = _slicedToArray(_useState3, 2),\n    offsetLeft = _useState4[0],\n    setOffsetLeft = _useState4[1];\n  var _useState5 = useState(false),\n    _useState6 = _slicedToArray(_useState5, 2),\n    scrollMoving = _useState6[0],\n    setScrollMoving = _useState6[1];\n  var onScrollbarStartMove = function onScrollbarStartMove() {\n    setScrollMoving(true);\n  };\n  var onScrollbarStopMove = function onScrollbarStopMove() {\n    setScrollMoving(false);\n  };\n  var sharedConfig = {\n    getKey: getKey\n  };\n\n  // ================================ Scroll ================================\n  function syncScrollTop(newTop) {\n    setOffsetTop(function (origin) {\n      var value;\n      if (typeof newTop === 'function') {\n        value = newTop(origin);\n      } else {\n        value = newTop;\n      }\n      var alignedTop = keepInRange(value);\n      componentRef.current.scrollTop = alignedTop;\n      return alignedTop;\n    });\n  }\n\n  // ================================ Legacy ================================\n  // Put ref here since the range is generate by follow\n  var rangeRef = useRef({\n    start: 0,\n    end: mergedData.length\n  });\n  var diffItemRef = useRef();\n  var _useDiffItem = useDiffItem(mergedData, getKey),\n    _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n    diffItem = _useDiffItem2[0];\n  diffItemRef.current = diffItem;\n\n  // ========================== Visible Calculation =========================\n  var _React$useMemo = React.useMemo(function () {\n      if (!useVirtual) {\n        return {\n          scrollHeight: undefined,\n          start: 0,\n          end: mergedData.length - 1,\n          offset: undefined\n        };\n      }\n\n      // Always use virtual scroll bar in avoid shaking\n      if (!inVirtual) {\n        var _fillerInnerRef$curre;\n        return {\n          scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n          start: 0,\n          end: mergedData.length - 1,\n          offset: undefined\n        };\n      }\n      var itemTop = 0;\n      var startIndex;\n      var startOffset;\n      var endIndex;\n      var dataLen = mergedData.length;\n      for (var i = 0; i < dataLen; i += 1) {\n        var _item = mergedData[i];\n        var key = getKey(_item);\n        var cacheHeight = heights.get(key);\n        var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n\n        // Check item top in the range\n        if (currentItemBottom >= offsetTop && startIndex === undefined) {\n          startIndex = i;\n          startOffset = itemTop;\n        }\n\n        // Check item bottom in the range. We will render additional one item for motion usage\n        if (currentItemBottom > offsetTop + height && endIndex === undefined) {\n          endIndex = i;\n        }\n        itemTop = currentItemBottom;\n      }\n\n      // When scrollTop at the end but data cut to small count will reach this\n      if (startIndex === undefined) {\n        startIndex = 0;\n        startOffset = 0;\n        endIndex = Math.ceil(height / itemHeight);\n      }\n      if (endIndex === undefined) {\n        endIndex = mergedData.length - 1;\n      }\n\n      // Give cache to improve scroll experience\n      endIndex = Math.min(endIndex + 1, mergedData.length - 1);\n      return {\n        scrollHeight: itemTop,\n        start: startIndex,\n        end: endIndex,\n        offset: startOffset\n      };\n    }, [inVirtual, useVirtual, offsetTop, mergedData, heightUpdatedMark, height]),\n    scrollHeight = _React$useMemo.scrollHeight,\n    start = _React$useMemo.start,\n    end = _React$useMemo.end,\n    fillerOffset = _React$useMemo.offset;\n  rangeRef.current.start = start;\n  rangeRef.current.end = end;\n\n  // When scroll up, first visible item get real height may not same as `itemHeight`,\n  // Which will make scroll jump.\n  // Let's sync scroll top to avoid jump\n  React.useLayoutEffect(function () {\n    var changedRecord = heights.getRecord();\n    if (changedRecord.size === 1) {\n      var recordKey = Array.from(changedRecord)[0];\n      var startIndexKey = getKey(mergedData[start]);\n      if (startIndexKey === recordKey) {\n        var realStartHeight = heights.get(recordKey);\n        var diffHeight = realStartHeight - itemHeight;\n        syncScrollTop(function (ori) {\n          return ori + diffHeight;\n        });\n      }\n    }\n    heights.resetRecord();\n  }, [scrollHeight]);\n\n  // ================================= Size =================================\n  var _React$useState = React.useState({\n      width: 0,\n      height: height\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    size = _React$useState2[0],\n    setSize = _React$useState2[1];\n  var onHolderResize = function onHolderResize(sizeInfo) {\n    setSize({\n      width: sizeInfo.offsetWidth,\n      height: sizeInfo.offsetHeight\n    });\n  };\n\n  // Hack on scrollbar to enable flash call\n  var verticalScrollBarRef = useRef();\n  var horizontalScrollBarRef = useRef();\n  var horizontalScrollBarSpinSize = React.useMemo(function () {\n    return getSpinSize(size.width, scrollWidth);\n  }, [size.width, scrollWidth]);\n  var verticalScrollBarSpinSize = React.useMemo(function () {\n    return getSpinSize(size.height, scrollHeight);\n  }, [size.height, scrollHeight]);\n\n  // =============================== In Range ===============================\n  var maxScrollHeight = scrollHeight - height;\n  var maxScrollHeightRef = useRef(maxScrollHeight);\n  maxScrollHeightRef.current = maxScrollHeight;\n  function keepInRange(newScrollTop) {\n    var newTop = newScrollTop;\n    if (!Number.isNaN(maxScrollHeightRef.current)) {\n      newTop = Math.min(newTop, maxScrollHeightRef.current);\n    }\n    newTop = Math.max(newTop, 0);\n    return newTop;\n  }\n  var isScrollAtTop = offsetTop <= 0;\n  var isScrollAtBottom = offsetTop >= maxScrollHeight;\n  var isScrollAtLeft = offsetLeft <= 0;\n  var isScrollAtRight = offsetLeft >= scrollWidth;\n  var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);\n\n  // ================================ Scroll ================================\n  var getVirtualScrollInfo = function getVirtualScrollInfo() {\n    return {\n      x: isRTL ? -offsetLeft : offsetLeft,\n      y: offsetTop\n    };\n  };\n  var lastVirtualScrollInfoRef = useRef(getVirtualScrollInfo());\n  var triggerScroll = useEvent(function (params) {\n    if (onVirtualScroll) {\n      var nextInfo = _objectSpread(_objectSpread({}, getVirtualScrollInfo()), params);\n\n      // Trigger when offset changed\n      if (lastVirtualScrollInfoRef.current.x !== nextInfo.x || lastVirtualScrollInfoRef.current.y !== nextInfo.y) {\n        onVirtualScroll(nextInfo);\n        lastVirtualScrollInfoRef.current = nextInfo;\n      }\n    }\n  });\n  function onScrollBar(newScrollOffset, horizontal) {\n    var newOffset = newScrollOffset;\n    if (horizontal) {\n      flushSync(function () {\n        setOffsetLeft(newOffset);\n      });\n      triggerScroll();\n    } else {\n      syncScrollTop(newOffset);\n    }\n  }\n\n  // When data size reduce. It may trigger native scroll event back to fit scroll position\n  function onFallbackScroll(e) {\n    var newScrollTop = e.currentTarget.scrollTop;\n    if (newScrollTop !== offsetTop) {\n      syncScrollTop(newScrollTop);\n    }\n\n    // Trigger origin onScroll\n    onScroll === null || onScroll === void 0 || onScroll(e);\n    triggerScroll();\n  }\n  var keepInHorizontalRange = function keepInHorizontalRange(nextOffsetLeft) {\n    var tmpOffsetLeft = nextOffsetLeft;\n    var max = !!scrollWidth ? scrollWidth - size.width : 0;\n    tmpOffsetLeft = Math.max(tmpOffsetLeft, 0);\n    tmpOffsetLeft = Math.min(tmpOffsetLeft, max);\n    return tmpOffsetLeft;\n  };\n  var onWheelDelta = useEvent(function (offsetXY, fromHorizontal) {\n    if (fromHorizontal) {\n      flushSync(function () {\n        setOffsetLeft(function (left) {\n          var nextOffsetLeft = left + (isRTL ? -offsetXY : offsetXY);\n          return keepInHorizontalRange(nextOffsetLeft);\n        });\n      });\n      triggerScroll();\n    } else {\n      syncScrollTop(function (top) {\n        var newTop = top + offsetXY;\n        return newTop;\n      });\n    }\n  });\n\n  // Since this added in global,should use ref to keep update\n  var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, !!scrollWidth, onWheelDelta),\n    _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n    onRawWheel = _useFrameWheel2[0],\n    onFireFoxScroll = _useFrameWheel2[1];\n\n  // Mobile touch move\n  useMobileTouchMove(useVirtual, componentRef, function (isHorizontal, delta, smoothOffset, e) {\n    var event = e;\n    if (originScroll(isHorizontal, delta, smoothOffset)) {\n      return false;\n    }\n\n    // Fix nest List trigger TouchMove event\n    if (!event || !event._virtualHandled) {\n      if (event) {\n        event._virtualHandled = true;\n      }\n      onRawWheel({\n        preventDefault: function preventDefault() {},\n        deltaX: isHorizontal ? delta : 0,\n        deltaY: isHorizontal ? 0 : delta\n      });\n      return true;\n    }\n    return false;\n  });\n\n  // MouseDown drag for scroll\n  useScrollDrag(inVirtual, componentRef, function (offset) {\n    syncScrollTop(function (top) {\n      return top + offset;\n    });\n  });\n  useLayoutEffect(function () {\n    // Firefox only\n    function onMozMousePixelScroll(e) {\n      // scrolling at top/bottom limit\n      var scrollingUpAtTop = isScrollAtTop && e.detail < 0;\n      var scrollingDownAtBottom = isScrollAtBottom && e.detail > 0;\n      if (useVirtual && !scrollingUpAtTop && !scrollingDownAtBottom) {\n        e.preventDefault();\n      }\n    }\n    var componentEle = componentRef.current;\n    componentEle.addEventListener('wheel', onRawWheel, {\n      passive: false\n    });\n    componentEle.addEventListener('DOMMouseScroll', onFireFoxScroll, {\n      passive: true\n    });\n    componentEle.addEventListener('MozMousePixelScroll', onMozMousePixelScroll, {\n      passive: false\n    });\n    return function () {\n      componentEle.removeEventListener('wheel', onRawWheel);\n      componentEle.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n      componentEle.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n    };\n  }, [useVirtual, isScrollAtTop, isScrollAtBottom]);\n\n  // Sync scroll left\n  useLayoutEffect(function () {\n    if (scrollWidth) {\n      var newOffsetLeft = keepInHorizontalRange(offsetLeft);\n      setOffsetLeft(newOffsetLeft);\n      triggerScroll({\n        x: newOffsetLeft\n      });\n    }\n  }, [size.width, scrollWidth]);\n\n  // ================================= Ref ==================================\n  var delayHideScrollBar = function delayHideScrollBar() {\n    var _verticalScrollBarRef, _horizontalScrollBarR;\n    (_verticalScrollBarRef = verticalScrollBarRef.current) === null || _verticalScrollBarRef === void 0 || _verticalScrollBarRef.delayHidden();\n    (_horizontalScrollBarR = horizontalScrollBarRef.current) === null || _horizontalScrollBarR === void 0 || _horizontalScrollBarR.delayHidden();\n  };\n  var _scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, function () {\n    return collectHeight(true);\n  }, syncScrollTop, delayHideScrollBar);\n  React.useImperativeHandle(ref, function () {\n    return {\n      nativeElement: containerRef.current,\n      getScrollInfo: getVirtualScrollInfo,\n      scrollTo: function scrollTo(config) {\n        function isPosScroll(arg) {\n          return arg && _typeof(arg) === 'object' && ('left' in arg || 'top' in arg);\n        }\n        if (isPosScroll(config)) {\n          // Scroll X\n          if (config.left !== undefined) {\n            setOffsetLeft(keepInHorizontalRange(config.left));\n          }\n\n          // Scroll Y\n          _scrollTo(config.top);\n        } else {\n          _scrollTo(config);\n        }\n      }\n    };\n  });\n\n  // ================================ Effect ================================\n  /** We need told outside that some list not rendered */\n  useLayoutEffect(function () {\n    if (onVisibleChange) {\n      var renderList = mergedData.slice(start, end + 1);\n      onVisibleChange(renderList, mergedData);\n    }\n  }, [start, end, mergedData]);\n\n  // ================================ Extra =================================\n  var getSize = useGetSize(mergedData, getKey, heights, itemHeight);\n  var extraContent = extraRender === null || extraRender === void 0 ? void 0 : extraRender({\n    start: start,\n    end: end,\n    virtual: inVirtual,\n    offsetX: offsetLeft,\n    offsetY: fillerOffset,\n    rtl: isRTL,\n    getSize: getSize\n  });\n\n  // ================================ Render ================================\n  var listChildren = useChildren(mergedData, start, end, scrollWidth, offsetLeft, setInstanceRef, children, sharedConfig);\n  var componentStyle = null;\n  if (height) {\n    componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n    if (useVirtual) {\n      componentStyle.overflowY = 'hidden';\n      if (scrollWidth) {\n        componentStyle.overflowX = 'hidden';\n      }\n      if (scrollMoving) {\n        componentStyle.pointerEvents = 'none';\n      }\n    }\n  }\n  var containerProps = {};\n  if (isRTL) {\n    containerProps.dir = 'rtl';\n  }\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: containerRef,\n    style: _objectSpread(_objectSpread({}, style), {}, {\n      position: 'relative'\n    }),\n    className: mergedClassName\n  }, containerProps, restProps), /*#__PURE__*/React.createElement(ResizeObserver, {\n    onResize: onHolderResize\n  }, /*#__PURE__*/React.createElement(Component, {\n    className: \"\".concat(prefixCls, \"-holder\"),\n    style: componentStyle,\n    ref: componentRef,\n    onScroll: onFallbackScroll,\n    onMouseEnter: delayHideScrollBar\n  }, /*#__PURE__*/React.createElement(Filler, {\n    prefixCls: prefixCls,\n    height: scrollHeight,\n    offsetX: offsetLeft,\n    offsetY: fillerOffset,\n    scrollWidth: scrollWidth,\n    onInnerResize: collectHeight,\n    ref: fillerInnerRef,\n    innerProps: innerProps,\n    rtl: isRTL,\n    extra: extraContent\n  }, listChildren))), inVirtual && scrollHeight > height && /*#__PURE__*/React.createElement(ScrollBar, {\n    ref: verticalScrollBarRef,\n    prefixCls: prefixCls,\n    scrollOffset: offsetTop,\n    scrollRange: scrollHeight,\n    rtl: isRTL,\n    onScroll: onScrollBar,\n    onStartMove: onScrollbarStartMove,\n    onStopMove: onScrollbarStopMove,\n    spinSize: verticalScrollBarSpinSize,\n    containerSize: size.height,\n    style: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBar,\n    thumbStyle: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBarThumb,\n    showScrollBar: showScrollBar\n  }), inVirtual && scrollWidth > size.width && /*#__PURE__*/React.createElement(ScrollBar, {\n    ref: horizontalScrollBarRef,\n    prefixCls: prefixCls,\n    scrollOffset: offsetLeft,\n    scrollRange: scrollWidth,\n    rtl: isRTL,\n    onScroll: onScrollBar,\n    onStartMove: onScrollbarStartMove,\n    onStopMove: onScrollbarStopMove,\n    spinSize: horizontalScrollBarSpinSize,\n    containerSize: size.width,\n    horizontal: true,\n    style: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBar,\n    thumbStyle: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBarThumb,\n    showScrollBar: showScrollBar\n  }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable no-param-reassign */\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { warning } from 'rc-util';\nvar MAX_TIMES = 10;\nexport default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {\n  var scrollRef = React.useRef();\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    syncState = _React$useState2[0],\n    setSyncState = _React$useState2[1];\n\n  // ========================== Sync Scroll ==========================\n  useLayoutEffect(function () {\n    if (syncState && syncState.times < MAX_TIMES) {\n      // Never reach\n      if (!containerRef.current) {\n        setSyncState(function (ori) {\n          return _objectSpread({}, ori);\n        });\n        return;\n      }\n      collectHeight();\n      var targetAlign = syncState.targetAlign,\n        originAlign = syncState.originAlign,\n        index = syncState.index,\n        offset = syncState.offset;\n      var height = containerRef.current.clientHeight;\n      var needCollectHeight = false;\n      var newTargetAlign = targetAlign;\n      var targetTop = null;\n\n      // Go to next frame if height not exist\n      if (height) {\n        var mergedAlign = targetAlign || originAlign;\n\n        // Get top & bottom\n        var stackTop = 0;\n        var itemTop = 0;\n        var itemBottom = 0;\n        var maxLen = Math.min(data.length - 1, index);\n        for (var i = 0; i <= maxLen; i += 1) {\n          var key = getKey(data[i]);\n          itemTop = stackTop;\n          var cacheHeight = heights.get(key);\n          itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n          stackTop = itemBottom;\n        }\n\n        // Check if need sync height (visible range has item not record height)\n        var leftHeight = mergedAlign === 'top' ? offset : height - offset;\n        for (var _i = maxLen; _i >= 0; _i -= 1) {\n          var _key = getKey(data[_i]);\n          var _cacheHeight = heights.get(_key);\n          if (_cacheHeight === undefined) {\n            needCollectHeight = true;\n            break;\n          }\n          leftHeight -= _cacheHeight;\n          if (leftHeight <= 0) {\n            break;\n          }\n        }\n\n        // Scroll to\n        switch (mergedAlign) {\n          case 'top':\n            targetTop = itemTop - offset;\n            break;\n          case 'bottom':\n            targetTop = itemBottom - height + offset;\n            break;\n          default:\n            {\n              var scrollTop = containerRef.current.scrollTop;\n              var scrollBottom = scrollTop + height;\n              if (itemTop < scrollTop) {\n                newTargetAlign = 'top';\n              } else if (itemBottom > scrollBottom) {\n                newTargetAlign = 'bottom';\n              }\n            }\n        }\n        if (targetTop !== null) {\n          syncScrollTop(targetTop);\n        }\n\n        // One more time for sync\n        if (targetTop !== syncState.lastTop) {\n          needCollectHeight = true;\n        }\n      }\n\n      // Trigger next effect\n      if (needCollectHeight) {\n        setSyncState(_objectSpread(_objectSpread({}, syncState), {}, {\n          times: syncState.times + 1,\n          targetAlign: newTargetAlign,\n          lastTop: targetTop\n        }));\n      }\n    } else if (process.env.NODE_ENV !== 'production' && (syncState === null || syncState === void 0 ? void 0 : syncState.times) === MAX_TIMES) {\n      warning(false, 'Seems `scrollTo` with `rc-virtual-list` reach the max limitation. Please fire issue for us. Thanks.');\n    }\n  }, [syncState, containerRef.current]);\n\n  // =========================== Scroll To ===========================\n  return function (arg) {\n    // When not argument provided, we think dev may want to show the scrollbar\n    if (arg === null || arg === undefined) {\n      triggerFlash();\n      return;\n    }\n\n    // Normal scroll logic\n    raf.cancel(scrollRef.current);\n    if (typeof arg === 'number') {\n      syncScrollTop(arg);\n    } else if (arg && _typeof(arg) === 'object') {\n      var index;\n      var align = arg.align;\n      if ('index' in arg) {\n        index = arg.index;\n      } else {\n        index = data.findIndex(function (item) {\n          return getKey(item) === arg.key;\n        });\n      }\n      var _arg$offset = arg.offset,\n        offset = _arg$offset === void 0 ? 0 : _arg$offset;\n      setSyncState({\n        times: 0,\n        index: index,\n        offset: offset,\n        originAlign: align\n      });\n    }\n  };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Size info need loop query for the `heights` which will has the perf issue.\n * Let cache result for each render phase.\n */\nexport function useGetSize(mergedData, getKey, heights, itemHeight) {\n  var _React$useMemo = React.useMemo(function () {\n      return [new Map(), []];\n    }, [mergedData, heights.id, itemHeight]),\n    _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n    key2Index = _React$useMemo2[0],\n    bottomList = _React$useMemo2[1];\n  var getSize = function getSize(startKey) {\n    var endKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startKey;\n    // Get from cache first\n    var startIndex = key2Index.get(startKey);\n    var endIndex = key2Index.get(endKey);\n\n    // Loop to fill the cache\n    if (startIndex === undefined || endIndex === undefined) {\n      var dataLen = mergedData.length;\n      for (var i = bottomList.length; i < dataLen; i += 1) {\n        var _heights$get;\n        var item = mergedData[i];\n        var key = getKey(item);\n        key2Index.set(key, i);\n        var cacheHeight = (_heights$get = heights.get(key)) !== null && _heights$get !== void 0 ? _heights$get : itemHeight;\n        bottomList[i] = (bottomList[i - 1] || 0) + cacheHeight;\n        if (key === startKey) {\n          startIndex = i;\n        }\n        if (key === endKey) {\n          endIndex = i;\n        }\n        if (startIndex !== undefined && endIndex !== undefined) {\n          break;\n        }\n      }\n    }\n    return {\n      top: bottomList[startIndex - 1] || 0,\n      bottom: bottomList[endIndex]\n    };\n  };\n  return getSize;\n}","import * as React from 'react';\nimport { Item } from \"../Item\";\nexport default function useChildren(list, startIndex, endIndex, scrollWidth, offsetX, setNodeRef, renderFunc, _ref) {\n  var getKey = _ref.getKey;\n  return list.slice(startIndex, endIndex + 1).map(function (item, index) {\n    var eleIndex = startIndex + index;\n    var node = renderFunc(item, eleIndex, {\n      style: {\n        width: scrollWidth\n      },\n      offsetX: offsetX\n    });\n    var key = getKey(item);\n    return /*#__PURE__*/React.createElement(Item, {\n      key: key,\n      setRef: function setRef(ele) {\n        return setNodeRef(item, ele);\n      }\n    }, node);\n  });\n}","import List from \"./List\";\nexport default List;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar _excluded = [\"disabled\", \"title\", \"children\", \"style\", \"className\"];\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport omit from \"rc-util/es/omit\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport List from 'rc-virtual-list';\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport SelectContext from \"./SelectContext\";\nimport TransBtn from \"./TransBtn\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nimport { isPlatformMac } from \"./utils/platformUtil\";\nimport { isValidCount } from \"./utils/valueUtil\";\n\n// export interface OptionListProps<OptionsType extends object[]> {\n\nfunction isTitleType(content) {\n  return typeof content === 'string' || typeof content === 'number';\n}\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nvar OptionList = function OptionList(_, ref) {\n  var _useBaseProps = useBaseProps(),\n    prefixCls = _useBaseProps.prefixCls,\n    id = _useBaseProps.id,\n    open = _useBaseProps.open,\n    multiple = _useBaseProps.multiple,\n    mode = _useBaseProps.mode,\n    searchValue = _useBaseProps.searchValue,\n    toggleOpen = _useBaseProps.toggleOpen,\n    notFoundContent = _useBaseProps.notFoundContent,\n    onPopupScroll = _useBaseProps.onPopupScroll;\n  var _React$useContext = React.useContext(SelectContext),\n    maxCount = _React$useContext.maxCount,\n    flattenOptions = _React$useContext.flattenOptions,\n    onActiveValue = _React$useContext.onActiveValue,\n    defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption,\n    onSelect = _React$useContext.onSelect,\n    menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon,\n    rawValues = _React$useContext.rawValues,\n    fieldNames = _React$useContext.fieldNames,\n    virtual = _React$useContext.virtual,\n    direction = _React$useContext.direction,\n    listHeight = _React$useContext.listHeight,\n    listItemHeight = _React$useContext.listItemHeight,\n    optionRender = _React$useContext.optionRender;\n  var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n  var memoFlattenOptions = useMemo(function () {\n    return flattenOptions;\n  }, [open, flattenOptions], function (prev, next) {\n    return next[0] && prev[1] !== next[1];\n  });\n\n  // =========================== List ===========================\n  var listRef = React.useRef(null);\n  var overMaxCount = React.useMemo(function () {\n    return multiple && isValidCount(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount;\n  }, [multiple, maxCount, rawValues === null || rawValues === void 0 ? void 0 : rawValues.size]);\n  var onListMouseDown = function onListMouseDown(event) {\n    event.preventDefault();\n  };\n  var scrollIntoView = function scrollIntoView(args) {\n    var _listRef$current;\n    (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollTo(typeof args === 'number' ? {\n      index: args\n    } : args);\n  };\n\n  // https://github.com/ant-design/ant-design/issues/34975\n  var isSelected = React.useCallback(function (value) {\n    if (mode === 'combobox') {\n      return false;\n    }\n    return rawValues.has(value);\n  }, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n  // ========================== Active ==========================\n  var getEnabledActiveIndex = function getEnabledActiveIndex(index) {\n    var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    var len = memoFlattenOptions.length;\n    for (var i = 0; i < len; i += 1) {\n      var current = (index + i * offset + len) % len;\n      var _ref = memoFlattenOptions[current] || {},\n        group = _ref.group,\n        data = _ref.data;\n      if (!group && !(data !== null && data !== void 0 && data.disabled) && (isSelected(data.value) || !overMaxCount)) {\n        return current;\n      }\n    }\n    return -1;\n  };\n  var _React$useState = React.useState(function () {\n      return getEnabledActiveIndex(0);\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    activeIndex = _React$useState2[0],\n    setActiveIndex = _React$useState2[1];\n  var setActive = function setActive(index) {\n    var fromKeyboard = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    setActiveIndex(index);\n    var info = {\n      source: fromKeyboard ? 'keyboard' : 'mouse'\n    };\n\n    // Trigger active event\n    var flattenItem = memoFlattenOptions[index];\n    if (!flattenItem) {\n      onActiveValue(null, -1, info);\n      return;\n    }\n    onActiveValue(flattenItem.value, index, info);\n  };\n\n  // Auto active first item when list length or searchValue changed\n  useEffect(function () {\n    setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n  }, [memoFlattenOptions.length, searchValue]);\n\n  // https://github.com/ant-design/ant-design/issues/48036\n  var isAriaSelected = React.useCallback(function (value) {\n    if (mode === 'combobox') {\n      return String(value).toLowerCase() === searchValue.toLowerCase();\n    }\n    return rawValues.has(value);\n  }, [mode, searchValue, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n  // Auto scroll to item position in single mode\n  useEffect(function () {\n    /**\n     * React will skip `onChange` when component update.\n     * `setActive` function will call root accessibility state update which makes re-render.\n     * So we need to delay to let Input component trigger onChange first.\n     */\n    var timeoutId = setTimeout(function () {\n      if (!multiple && open && rawValues.size === 1) {\n        var value = Array.from(rawValues)[0];\n        var index = memoFlattenOptions.findIndex(function (_ref2) {\n          var data = _ref2.data;\n          return data.value === value;\n        });\n        if (index !== -1) {\n          setActive(index);\n          scrollIntoView(index);\n        }\n      }\n    });\n\n    // Force trigger scrollbar visible when open\n    if (open) {\n      var _listRef$current2;\n      (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollTo(undefined);\n    }\n    return function () {\n      return clearTimeout(timeoutId);\n    };\n  }, [open, searchValue]);\n\n  // ========================== Values ==========================\n  var onSelectValue = function onSelectValue(value) {\n    if (value !== undefined) {\n      onSelect(value, {\n        selected: !rawValues.has(value)\n      });\n    }\n\n    // Single mode should always close by select\n    if (!multiple) {\n      toggleOpen(false);\n    }\n  };\n\n  // ========================= Keyboard =========================\n  React.useImperativeHandle(ref, function () {\n    return {\n      onKeyDown: function onKeyDown(event) {\n        var which = event.which,\n          ctrlKey = event.ctrlKey;\n        switch (which) {\n          // >>> Arrow keys & ctrl + n/p on Mac\n          case KeyCode.N:\n          case KeyCode.P:\n          case KeyCode.UP:\n          case KeyCode.DOWN:\n            {\n              var offset = 0;\n              if (which === KeyCode.UP) {\n                offset = -1;\n              } else if (which === KeyCode.DOWN) {\n                offset = 1;\n              } else if (isPlatformMac() && ctrlKey) {\n                if (which === KeyCode.N) {\n                  offset = 1;\n                } else if (which === KeyCode.P) {\n                  offset = -1;\n                }\n              }\n              if (offset !== 0) {\n                var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset, offset);\n                scrollIntoView(nextActiveIndex);\n                setActive(nextActiveIndex, true);\n              }\n              break;\n            }\n\n          // >>> Select (Tab / Enter)\n          case KeyCode.TAB:\n          case KeyCode.ENTER:\n            {\n              var _item$data;\n              // value\n              var item = memoFlattenOptions[activeIndex];\n              if (item && !(item !== null && item !== void 0 && (_item$data = item.data) !== null && _item$data !== void 0 && _item$data.disabled) && !overMaxCount) {\n                onSelectValue(item.value);\n              } else {\n                onSelectValue(undefined);\n              }\n              if (open) {\n                event.preventDefault();\n              }\n              break;\n            }\n\n          // >>> Close\n          case KeyCode.ESC:\n            {\n              toggleOpen(false);\n              if (open) {\n                event.stopPropagation();\n              }\n            }\n        }\n      },\n      onKeyUp: function onKeyUp() {},\n      scrollTo: function scrollTo(index) {\n        scrollIntoView(index);\n      }\n    };\n  });\n\n  // ========================== Render ==========================\n  if (memoFlattenOptions.length === 0) {\n    return /*#__PURE__*/React.createElement(\"div\", {\n      role: \"listbox\",\n      id: \"\".concat(id, \"_list\"),\n      className: \"\".concat(itemPrefixCls, \"-empty\"),\n      onMouseDown: onListMouseDown\n    }, notFoundContent);\n  }\n  var omitFieldNameList = Object.keys(fieldNames).map(function (key) {\n    return fieldNames[key];\n  });\n  var getLabel = function getLabel(item) {\n    return item.label;\n  };\n  function getItemAriaProps(item, index) {\n    var group = item.group;\n    return {\n      role: group ? 'presentation' : 'option',\n      id: \"\".concat(id, \"_list_\").concat(index)\n    };\n  }\n  var renderItem = function renderItem(index) {\n    var item = memoFlattenOptions[index];\n    if (!item) {\n      return null;\n    }\n    var itemData = item.data || {};\n    var value = itemData.value;\n    var group = item.group;\n    var attrs = pickAttrs(itemData, true);\n    var mergedLabel = getLabel(item);\n    return item ? /*#__PURE__*/React.createElement(\"div\", _extends({\n      \"aria-label\": typeof mergedLabel === 'string' && !group ? mergedLabel : null\n    }, attrs, {\n      key: index\n    }, getItemAriaProps(item, index), {\n      \"aria-selected\": isAriaSelected(value)\n    }), value) : null;\n  };\n  var a11yProps = {\n    role: 'listbox',\n    id: \"\".concat(id, \"_list\")\n  };\n  return /*#__PURE__*/React.createElement(React.Fragment, null, virtual && /*#__PURE__*/React.createElement(\"div\", _extends({}, a11yProps, {\n    style: {\n      height: 0,\n      width: 0,\n      overflow: 'hidden'\n    }\n  }), renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /*#__PURE__*/React.createElement(List, {\n    itemKey: \"key\",\n    ref: listRef,\n    data: memoFlattenOptions,\n    height: listHeight,\n    itemHeight: listItemHeight,\n    fullHeight: false,\n    onMouseDown: onListMouseDown,\n    onScroll: onPopupScroll,\n    virtual: virtual,\n    direction: direction,\n    innerProps: virtual ? null : a11yProps\n  }, function (item, itemIndex) {\n    var group = item.group,\n      groupOption = item.groupOption,\n      data = item.data,\n      label = item.label,\n      value = item.value;\n    var key = data.key;\n\n    // Group\n    if (group) {\n      var _data$title;\n      var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : undefined;\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: classNames(itemPrefixCls, \"\".concat(itemPrefixCls, \"-group\"), data.className),\n        title: groupTitle\n      }, label !== undefined ? label : key);\n    }\n    var disabled = data.disabled,\n      title = data.title,\n      children = data.children,\n      style = data.style,\n      className = data.className,\n      otherProps = _objectWithoutProperties(data, _excluded);\n    var passedProps = omit(otherProps, omitFieldNameList);\n\n    // Option\n    var selected = isSelected(value);\n    var mergedDisabled = disabled || !selected && overMaxCount;\n    var optionPrefixCls = \"\".concat(itemPrefixCls, \"-option\");\n    var optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(optionPrefixCls, \"-grouped\"), groupOption), \"\".concat(optionPrefixCls, \"-active\"), activeIndex === itemIndex && !mergedDisabled), \"\".concat(optionPrefixCls, \"-disabled\"), mergedDisabled), \"\".concat(optionPrefixCls, \"-selected\"), selected));\n    var mergedLabel = getLabel(item);\n    var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n    // https://github.com/ant-design/ant-design/issues/34145\n    var content = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n    // https://github.com/ant-design/ant-design/issues/26717\n    var optionTitle = isTitleType(content) ? content.toString() : undefined;\n    if (title !== undefined) {\n      optionTitle = title;\n    }\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, pickAttrs(passedProps), !virtual ? getItemAriaProps(item, itemIndex) : {}, {\n      \"aria-selected\": isAriaSelected(value),\n      className: optionClassName,\n      title: optionTitle,\n      onMouseMove: function onMouseMove() {\n        if (activeIndex === itemIndex || mergedDisabled) {\n          return;\n        }\n        setActive(itemIndex);\n      },\n      onClick: function onClick() {\n        if (!mergedDisabled) {\n          onSelectValue(value);\n        }\n      },\n      style: style\n    }), /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(optionPrefixCls, \"-content\")\n    }, typeof optionRender === 'function' ? optionRender(item, {\n      index: itemIndex\n    }) : content), /*#__PURE__*/React.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /*#__PURE__*/React.createElement(TransBtn, {\n      className: \"\".concat(itemPrefixCls, \"-option-state\"),\n      customizeIcon: menuItemSelectedIcon,\n      customizeIconProps: {\n        value: value,\n        disabled: mergedDisabled,\n        isSelected: selected\n      }\n    }, selected ? '✓' : null));\n  }));\n};\nvar RefOptionList = /*#__PURE__*/React.forwardRef(OptionList);\nif (process.env.NODE_ENV !== 'production') {\n  RefOptionList.displayName = 'OptionList';\n}\nexport default RefOptionList;","/* istanbul ignore file */\nexport function isPlatformMac() {\n  return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { toArray } from \"../utils/commonUtil\";\nimport { injectPropsWithOption } from \"../utils/valueUtil\";\nfunction includes(test, search) {\n  return toArray(test).join('').toUpperCase().includes(search);\n}\nexport default (function (options, fieldNames, searchValue, filterOption, optionFilterProp) {\n  return React.useMemo(function () {\n    if (!searchValue || filterOption === false) {\n      return options;\n    }\n    var fieldOptions = fieldNames.options,\n      fieldLabel = fieldNames.label,\n      fieldValue = fieldNames.value;\n    var filteredOptions = [];\n    var customizeFilter = typeof filterOption === 'function';\n    var upperSearch = searchValue.toUpperCase();\n    var filterFunc = customizeFilter ? filterOption : function (_, option) {\n      // Use provided `optionFilterProp`\n      if (optionFilterProp) {\n        return includes(option[optionFilterProp], upperSearch);\n      }\n\n      // Auto select `label` or `value` by option type\n      if (option[fieldOptions]) {\n        // hack `fieldLabel` since `OptionGroup` children is not `label`\n        return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n      }\n      return includes(option[fieldValue], upperSearch);\n    };\n    var wrapOption = customizeFilter ? function (opt) {\n      return injectPropsWithOption(opt);\n    } : function (opt) {\n      return opt;\n    };\n    options.forEach(function (item) {\n      // Group should check child options\n      if (item[fieldOptions]) {\n        // Check group first\n        var matchGroup = filterFunc(searchValue, wrapOption(item));\n        if (matchGroup) {\n          filteredOptions.push(item);\n        } else {\n          // Check option\n          var subOptions = item[fieldOptions].filter(function (subItem) {\n            return filterFunc(searchValue, wrapOption(subItem));\n          });\n          if (subOptions.length) {\n            filteredOptions.push(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));\n          }\n        }\n        return;\n      }\n      if (filterFunc(searchValue, wrapOption(item))) {\n        filteredOptions.push(item);\n      }\n    });\n    return filteredOptions;\n  }, [options, filterOption, optionFilterProp, searchValue, fieldNames]);\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID() {\n  var retId;\n\n  // Test never reach\n  /* istanbul ignore if */\n  if (isBrowserClient) {\n    retId = uuid;\n    uuid += 1;\n  } else {\n    retId = 'TEST_OR_SSR';\n  }\n  return retId;\n}\nexport default function useId(id) {\n  // Inner id for accessibility usage. Only work in client side\n  var _React$useState = React.useState(),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    innerId = _React$useState2[0],\n    setInnerId = _React$useState2[1];\n  React.useEffect(function () {\n    setInnerId(\"rc_select_\".concat(getUUID()));\n  }, []);\n  return id || innerId;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"value\"],\n  _excluded2 = [\"children\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction convertNodeToOption(node) {\n  var _ref = node,\n    key = _ref.key,\n    _ref$props = _ref.props,\n    children = _ref$props.children,\n    value = _ref$props.value,\n    restProps = _objectWithoutProperties(_ref$props, _excluded);\n  return _objectSpread({\n    key: key,\n    value: value !== undefined ? value : key,\n    children: children\n  }, restProps);\n}\nexport function convertChildrenToData(nodes) {\n  var optionOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  return toArray(nodes).map(function (node, index) {\n    if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n      return null;\n    }\n    var _ref2 = node,\n      isSelectOptGroup = _ref2.type.isSelectOptGroup,\n      key = _ref2.key,\n      _ref2$props = _ref2.props,\n      children = _ref2$props.children,\n      restProps = _objectWithoutProperties(_ref2$props, _excluded2);\n    if (optionOnly || !isSelectOptGroup) {\n      return convertNodeToOption(node);\n    }\n    return _objectSpread(_objectSpread({\n      key: \"__RC_SELECT_GRP__\".concat(key === null ? index : key, \"__\"),\n      label: key\n    }, restProps), {}, {\n      options: convertChildrenToData(children)\n    });\n  }).filter(function (data) {\n    return data;\n  });\n}","import * as React from 'react';\nimport { convertChildrenToData } from \"../utils/legacyUtil\";\n\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nvar useOptions = function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {\n  return React.useMemo(function () {\n    var mergedOptions = options;\n    var childrenAsData = !options;\n    if (childrenAsData) {\n      mergedOptions = convertChildrenToData(children);\n    }\n    var valueOptions = new Map();\n    var labelOptions = new Map();\n    var setLabelOptions = function setLabelOptions(labelOptionsMap, option, key) {\n      if (key && typeof key === 'string') {\n        labelOptionsMap.set(option[key], option);\n      }\n    };\n    var dig = function dig(optionList) {\n      var isChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      // for loop to speed up collection speed\n      for (var i = 0; i < optionList.length; i += 1) {\n        var option = optionList[i];\n        if (!option[fieldNames.options] || isChildren) {\n          valueOptions.set(option[fieldNames.value], option);\n          setLabelOptions(labelOptions, option, fieldNames.label);\n          // https://github.com/ant-design/ant-design/issues/35304\n          setLabelOptions(labelOptions, option, optionFilterProp);\n          setLabelOptions(labelOptions, option, optionLabelProp);\n        } else {\n          dig(option[fieldNames.options], true);\n        }\n      }\n    };\n    dig(mergedOptions);\n    return {\n      options: mergedOptions,\n      valueOptions: valueOptions,\n      labelOptions: labelOptions\n    };\n  }, [options, children, fieldNames, optionFilterProp, optionLabelProp]);\n};\nexport default useOptions;","import * as React from 'react';\n\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\nexport default function useRefFunc(callback) {\n  var funcRef = React.useRef();\n  funcRef.current = callback;\n  var cacheFn = React.useCallback(function () {\n    return funcRef.current.apply(funcRef, arguments);\n  }, []);\n  return cacheFn;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"id\", \"mode\", \"prefixCls\", \"backfill\", \"fieldNames\", \"inputValue\", \"searchValue\", \"onSearch\", \"autoClearSearchValue\", \"onSelect\", \"onDeselect\", \"dropdownMatchSelectWidth\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"optionLabelProp\", \"options\", \"optionRender\", \"children\", \"defaultActiveFirstOption\", \"menuItemSelectedIcon\", \"virtual\", \"direction\", \"listHeight\", \"listItemHeight\", \"labelRender\", \"value\", \"defaultValue\", \"labelInValue\", \"onChange\", \"maxCount\"];\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\n\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport BaseSelect, { isMultiple } from \"./BaseSelect\";\nimport OptGroup from \"./OptGroup\";\nimport Option from \"./Option\";\nimport OptionList from \"./OptionList\";\nimport SelectContext from \"./SelectContext\";\nimport useCache from \"./hooks/useCache\";\nimport useFilterOptions from \"./hooks/useFilterOptions\";\nimport useId from \"./hooks/useId\";\nimport useOptions from \"./hooks/useOptions\";\nimport useRefFunc from \"./hooks/useRefFunc\";\nimport { hasValue, isComboNoValue, toArray } from \"./utils/commonUtil\";\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from \"./utils/valueUtil\";\nimport warningProps, { warningNullOptions } from \"./utils/warningPropsUtil\";\nvar OMIT_DOM_PROPS = ['inputValue'];\nfunction isRawValue(value) {\n  return !value || _typeof(value) !== 'object';\n}\nvar Select = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var id = props.id,\n    mode = props.mode,\n    _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-select' : _props$prefixCls,\n    backfill = props.backfill,\n    fieldNames = props.fieldNames,\n    inputValue = props.inputValue,\n    searchValue = props.searchValue,\n    onSearch = props.onSearch,\n    _props$autoClearSearc = props.autoClearSearchValue,\n    autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n    onSelect = props.onSelect,\n    onDeselect = props.onDeselect,\n    _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n    dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS,\n    filterOption = props.filterOption,\n    filterSort = props.filterSort,\n    optionFilterProp = props.optionFilterProp,\n    optionLabelProp = props.optionLabelProp,\n    options = props.options,\n    optionRender = props.optionRender,\n    children = props.children,\n    defaultActiveFirstOption = props.defaultActiveFirstOption,\n    menuItemSelectedIcon = props.menuItemSelectedIcon,\n    virtual = props.virtual,\n    direction = props.direction,\n    _props$listHeight = props.listHeight,\n    listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n    _props$listItemHeight = props.listItemHeight,\n    listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n    labelRender = props.labelRender,\n    value = props.value,\n    defaultValue = props.defaultValue,\n    labelInValue = props.labelInValue,\n    onChange = props.onChange,\n    maxCount = props.maxCount,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var mergedId = useId(id);\n  var multiple = isMultiple(mode);\n  var childrenAsData = !!(!options && children);\n  var mergedFilterOption = React.useMemo(function () {\n    if (filterOption === undefined && mode === 'combobox') {\n      return false;\n    }\n    return filterOption;\n  }, [filterOption, mode]);\n\n  // ========================= FieldNames =========================\n  var mergedFieldNames = React.useMemo(function () {\n    return fillFieldNames(fieldNames, childrenAsData);\n  }, /* eslint-disable react-hooks/exhaustive-deps */\n  [\n  // We stringify fieldNames to avoid unnecessary re-renders.\n  JSON.stringify(fieldNames), childrenAsData]\n  /* eslint-enable react-hooks/exhaustive-deps */);\n\n  // =========================== Search ===========================\n  var _useMergedState = useMergedState('', {\n      value: searchValue !== undefined ? searchValue : inputValue,\n      postState: function postState(search) {\n        return search || '';\n      }\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedSearchValue = _useMergedState2[0],\n    setSearchValue = _useMergedState2[1];\n\n  // =========================== Option ===========================\n  var parsedOptions = useOptions(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);\n  var valueOptions = parsedOptions.valueOptions,\n    labelOptions = parsedOptions.labelOptions,\n    mergedOptions = parsedOptions.options;\n\n  // ========================= Wrap Value =========================\n  var convert2LabelValues = React.useCallback(function (draftValues) {\n    // Convert to array\n    var valueList = toArray(draftValues);\n\n    // Convert to labelInValue type\n    return valueList.map(function (val) {\n      var rawValue;\n      var rawLabel;\n      var rawKey;\n      var rawDisabled;\n      var rawTitle;\n\n      // Fill label & value\n      if (isRawValue(val)) {\n        rawValue = val;\n      } else {\n        var _val$value;\n        rawKey = val.key;\n        rawLabel = val.label;\n        rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;\n      }\n      var option = valueOptions.get(rawValue);\n      if (option) {\n        var _option$key;\n        // Fill missing props\n        if (rawLabel === undefined) rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];\n        if (rawKey === undefined) rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;\n        rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;\n        rawTitle = option === null || option === void 0 ? void 0 : option.title;\n\n        // Warning if label not same as provided\n        if (process.env.NODE_ENV !== 'production' && !optionLabelProp) {\n          var optionLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.label];\n          if (optionLabel !== undefined && ! /*#__PURE__*/React.isValidElement(optionLabel) && ! /*#__PURE__*/React.isValidElement(rawLabel) && optionLabel !== rawLabel) {\n            warning(false, '`label` of `value` is not same as `label` in Select options.');\n          }\n        }\n      }\n      return {\n        label: rawLabel,\n        value: rawValue,\n        key: rawKey,\n        disabled: rawDisabled,\n        title: rawTitle\n      };\n    });\n  }, [mergedFieldNames, optionLabelProp, valueOptions]);\n\n  // =========================== Values ===========================\n  var _useMergedState3 = useMergedState(defaultValue, {\n      value: value\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    internalValue = _useMergedState4[0],\n    setInternalValue = _useMergedState4[1];\n\n  // Merged value with LabelValueType\n  var rawLabeledValues = React.useMemo(function () {\n    var _values$;\n    var newInternalValue = multiple && internalValue === null ? [] : internalValue;\n    var values = convert2LabelValues(newInternalValue);\n\n    // combobox no need save value when it's no value (exclude value equal 0)\n    if (mode === 'combobox' && isComboNoValue((_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.value)) {\n      return [];\n    }\n    return values;\n  }, [internalValue, convert2LabelValues, mode, multiple]);\n\n  // Fill label with cache to avoid option remove\n  var _useCache = useCache(rawLabeledValues, valueOptions),\n    _useCache2 = _slicedToArray(_useCache, 2),\n    mergedValues = _useCache2[0],\n    getMixedOption = _useCache2[1];\n  var displayValues = React.useMemo(function () {\n    // `null` need show as placeholder instead\n    // https://github.com/ant-design/ant-design/issues/25057\n    if (!mode && mergedValues.length === 1) {\n      var firstValue = mergedValues[0];\n      if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {\n        return [];\n      }\n    }\n    return mergedValues.map(function (item) {\n      var _ref;\n      return _objectSpread(_objectSpread({}, item), {}, {\n        label: (_ref = typeof labelRender === 'function' ? labelRender(item) : item.label) !== null && _ref !== void 0 ? _ref : item.value\n      });\n    });\n  }, [mode, mergedValues, labelRender]);\n\n  /** Convert `displayValues` to raw value type set */\n  var rawValues = React.useMemo(function () {\n    return new Set(mergedValues.map(function (val) {\n      return val.value;\n    }));\n  }, [mergedValues]);\n  React.useEffect(function () {\n    if (mode === 'combobox') {\n      var _mergedValues$;\n      var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;\n      setSearchValue(hasValue(strValue) ? String(strValue) : '');\n    }\n  }, [mergedValues]);\n\n  // ======================= Display Option =======================\n  // Create a placeholder item if not exist in `options`\n  var createTagOption = useRefFunc(function (val, label) {\n    var mergedLabel = label !== null && label !== void 0 ? label : val;\n    return _defineProperty(_defineProperty({}, mergedFieldNames.value, val), mergedFieldNames.label, mergedLabel);\n  });\n\n  // Fill tag as option if mode is `tags`\n  var filledTagOptions = React.useMemo(function () {\n    if (mode !== 'tags') {\n      return mergedOptions;\n    }\n\n    // >>> Tag mode\n    var cloneOptions = _toConsumableArray(mergedOptions);\n\n    // Check if value exist in options (include new patch item)\n    var existOptions = function existOptions(val) {\n      return valueOptions.has(val);\n    };\n\n    // Fill current value as option\n    _toConsumableArray(mergedValues).sort(function (a, b) {\n      return a.value < b.value ? -1 : 1;\n    }).forEach(function (item) {\n      var val = item.value;\n      if (!existOptions(val)) {\n        cloneOptions.push(createTagOption(val, item.label));\n      }\n    });\n    return cloneOptions;\n  }, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);\n  var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);\n\n  // Fill options with search value if needed\n  var filledSearchOptions = React.useMemo(function () {\n    if (mode !== 'tags' || !mergedSearchValue || filteredOptions.some(function (item) {\n      return item[optionFilterProp || 'value'] === mergedSearchValue;\n    })) {\n      return filteredOptions;\n    }\n    // ignore when search value equal select input value\n    if (filteredOptions.some(function (item) {\n      return item[mergedFieldNames.value] === mergedSearchValue;\n    })) {\n      return filteredOptions;\n    }\n    // Fill search value as option\n    return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));\n  }, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue, mergedFieldNames]);\n  var sorter = function sorter(inputOptions) {\n    var sortedOptions = _toConsumableArray(inputOptions).sort(function (a, b) {\n      return filterSort(a, b, {\n        searchValue: mergedSearchValue\n      });\n    });\n    return sortedOptions.map(function (item) {\n      if (Array.isArray(item.options)) {\n        return _objectSpread(_objectSpread({}, item), {}, {\n          options: item.options.length > 0 ? sorter(item.options) : item.options\n        });\n      }\n      return item;\n    });\n  };\n  var orderedFilteredOptions = React.useMemo(function () {\n    if (!filterSort) {\n      return filledSearchOptions;\n    }\n    return sorter(filledSearchOptions);\n  }, [filledSearchOptions, filterSort, mergedSearchValue]);\n  var displayOptions = React.useMemo(function () {\n    return flattenOptions(orderedFilteredOptions, {\n      fieldNames: mergedFieldNames,\n      childrenAsData: childrenAsData\n    });\n  }, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);\n\n  // =========================== Change ===========================\n  var triggerChange = function triggerChange(values) {\n    var labeledValues = convert2LabelValues(values);\n    setInternalValue(labeledValues);\n    if (onChange && (\n    // Trigger event only when value changed\n    labeledValues.length !== mergedValues.length || labeledValues.some(function (newVal, index) {\n      var _mergedValues$index;\n      return ((_mergedValues$index = mergedValues[index]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);\n    }))) {\n      var returnValues = labelInValue ? labeledValues : labeledValues.map(function (v) {\n        return v.value;\n      });\n      var returnOptions = labeledValues.map(function (v) {\n        return injectPropsWithOption(getMixedOption(v.value));\n      });\n      onChange(\n      // Value\n      multiple ? returnValues : returnValues[0],\n      // Option\n      multiple ? returnOptions : returnOptions[0]);\n    }\n  };\n\n  // ======================= Accessibility ========================\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    activeValue = _React$useState2[0],\n    setActiveValue = _React$useState2[1];\n  var _React$useState3 = React.useState(0),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    accessibilityIndex = _React$useState4[0],\n    setAccessibilityIndex = _React$useState4[1];\n  var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n  var onActiveValue = React.useCallback(function (active, index) {\n    var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      _ref3$source = _ref3.source,\n      source = _ref3$source === void 0 ? 'keyboard' : _ref3$source;\n    setAccessibilityIndex(index);\n    if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n      setActiveValue(String(active));\n    }\n  }, [backfill, mode]);\n\n  // ========================= OptionList =========================\n  var triggerSelect = function triggerSelect(val, selected, type) {\n    var getSelectEnt = function getSelectEnt() {\n      var _option$key2;\n      var option = getMixedOption(val);\n      return [labelInValue ? {\n        label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],\n        value: val,\n        key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val\n      } : val, injectPropsWithOption(option)];\n    };\n    if (selected && onSelect) {\n      var _getSelectEnt = getSelectEnt(),\n        _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2),\n        wrappedValue = _getSelectEnt2[0],\n        _option = _getSelectEnt2[1];\n      onSelect(wrappedValue, _option);\n    } else if (!selected && onDeselect && type !== 'clear') {\n      var _getSelectEnt3 = getSelectEnt(),\n        _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2),\n        _wrappedValue = _getSelectEnt4[0],\n        _option2 = _getSelectEnt4[1];\n      onDeselect(_wrappedValue, _option2);\n    }\n  };\n\n  // Used for OptionList selection\n  var onInternalSelect = useRefFunc(function (val, info) {\n    var cloneValues;\n\n    // Single mode always trigger select only with option list\n    var mergedSelect = multiple ? info.selected : true;\n    if (mergedSelect) {\n      cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];\n    } else {\n      cloneValues = mergedValues.filter(function (v) {\n        return v.value !== val;\n      });\n    }\n    triggerChange(cloneValues);\n    triggerSelect(val, mergedSelect);\n\n    // Clean search value if single or configured\n    if (mode === 'combobox') {\n      // setSearchValue(String(val));\n      setActiveValue('');\n    } else if (!isMultiple || autoClearSearchValue) {\n      setSearchValue('');\n      setActiveValue('');\n    }\n  });\n\n  // ======================= Display Change =======================\n  // BaseSelect display values change\n  var onDisplayValuesChange = function onDisplayValuesChange(nextValues, info) {\n    triggerChange(nextValues);\n    var type = info.type,\n      values = info.values;\n    if (type === 'remove' || type === 'clear') {\n      values.forEach(function (item) {\n        triggerSelect(item.value, false, type);\n      });\n    }\n  };\n\n  // =========================== Search ===========================\n  var onInternalSearch = function onInternalSearch(searchText, info) {\n    setSearchValue(searchText);\n    setActiveValue(null);\n\n    // [Submit] Tag mode should flush input\n    if (info.source === 'submit') {\n      var formatted = (searchText || '').trim();\n      // prevent empty tags from appearing when you click the Enter button\n      if (formatted) {\n        var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));\n        triggerChange(newRawValues);\n        triggerSelect(formatted, true);\n        setSearchValue('');\n      }\n      return;\n    }\n    if (info.source !== 'blur') {\n      if (mode === 'combobox') {\n        triggerChange(searchText);\n      }\n      onSearch === null || onSearch === void 0 || onSearch(searchText);\n    }\n  };\n  var onInternalSearchSplit = function onInternalSearchSplit(words) {\n    var patchValues = words;\n    if (mode !== 'tags') {\n      patchValues = words.map(function (word) {\n        var opt = labelOptions.get(word);\n        return opt === null || opt === void 0 ? void 0 : opt.value;\n      }).filter(function (val) {\n        return val !== undefined;\n      });\n    }\n    var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));\n    triggerChange(newRawValues);\n    newRawValues.forEach(function (newRawValue) {\n      triggerSelect(newRawValue, true);\n    });\n  };\n\n  // ========================== Context ===========================\n  var selectContext = React.useMemo(function () {\n    var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;\n    return _objectSpread(_objectSpread({}, parsedOptions), {}, {\n      flattenOptions: displayOptions,\n      onActiveValue: onActiveValue,\n      defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n      onSelect: onInternalSelect,\n      menuItemSelectedIcon: menuItemSelectedIcon,\n      rawValues: rawValues,\n      fieldNames: mergedFieldNames,\n      virtual: realVirtual,\n      direction: direction,\n      listHeight: listHeight,\n      listItemHeight: listItemHeight,\n      childrenAsData: childrenAsData,\n      maxCount: maxCount,\n      optionRender: optionRender\n    });\n  }, [maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);\n\n  // ========================== Warning ===========================\n  if (process.env.NODE_ENV !== 'production') {\n    warningProps(props);\n    warningNullOptions(mergedOptions, mergedFieldNames);\n  }\n\n  // ==============================================================\n  // ==                          Render                          ==\n  // ==============================================================\n  return /*#__PURE__*/React.createElement(SelectContext.Provider, {\n    value: selectContext\n  }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {\n    // >>> MISC\n    id: mergedId,\n    prefixCls: prefixCls,\n    ref: ref,\n    omitDomProps: OMIT_DOM_PROPS,\n    mode: mode\n    // >>> Values\n    ,\n    displayValues: displayValues,\n    onDisplayValuesChange: onDisplayValuesChange\n    // >>> Trigger\n    ,\n    direction: direction\n    // >>> Search\n    ,\n    searchValue: mergedSearchValue,\n    onSearch: onInternalSearch,\n    autoClearSearchValue: autoClearSearchValue,\n    onSearchSplit: onInternalSearchSplit,\n    dropdownMatchSelectWidth: dropdownMatchSelectWidth\n    // >>> OptionList\n    ,\n    OptionList: OptionList,\n    emptyOptions: !displayOptions.length\n    // >>> Accessibility\n    ,\n    activeValue: activeValue,\n    activeDescendantId: \"\".concat(mergedId, \"_list_\").concat(accessibilityIndex)\n  })));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Select.displayName = 'Select';\n}\nvar TypedSelect = Select;\nTypedSelect.Option = Option;\nTypedSelect.OptGroup = OptGroup;\nexport default TypedSelect;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default (function (labeledValues, valueOptions) {\n  var cacheRef = React.useRef({\n    values: new Map(),\n    options: new Map()\n  });\n  var filledLabeledValues = React.useMemo(function () {\n    var _cacheRef$current = cacheRef.current,\n      prevValueCache = _cacheRef$current.values,\n      prevOptionCache = _cacheRef$current.options;\n\n    // Fill label by cache\n    var patchedValues = labeledValues.map(function (item) {\n      if (item.label === undefined) {\n        var _prevValueCache$get;\n        return _objectSpread(_objectSpread({}, item), {}, {\n          label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label\n        });\n      }\n      return item;\n    });\n\n    // Refresh cache\n    var valueCache = new Map();\n    var optionCache = new Map();\n    patchedValues.forEach(function (item) {\n      valueCache.set(item.value, item);\n      optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));\n    });\n    cacheRef.current.values = valueCache;\n    cacheRef.current.options = optionCache;\n    return patchedValues;\n  }, [labeledValues, valueOptions]);\n  var getOption = React.useCallback(function (val) {\n    return valueOptions.get(val) || cacheRef.current.options.get(val);\n  }, [valueOptions]);\n  return [filledLabeledValues, getOption];\n});","import Select from \"./Select\";\nimport Option from \"./Option\";\nimport OptGroup from \"./OptGroup\";\nimport BaseSelect from \"./BaseSelect\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nexport { Option, OptGroup, BaseSelect, useBaseProps };\nexport default Select;","const getBuiltInPlacements = popupOverflow => {\n  const htmlRegion = popupOverflow === 'scroll' ? 'scroll' : 'visible';\n  const sharedConfig = {\n    overflow: {\n      adjustX: true,\n      adjustY: true,\n      shiftY: true\n    },\n    htmlRegion,\n    dynamicInset: true\n  };\n  return {\n    bottomLeft: Object.assign(Object.assign({}, sharedConfig), {\n      points: ['tl', 'bl'],\n      offset: [0, 4]\n    }),\n    bottomRight: Object.assign(Object.assign({}, sharedConfig), {\n      points: ['tr', 'br'],\n      offset: [0, 4]\n    }),\n    topLeft: Object.assign(Object.assign({}, sharedConfig), {\n      points: ['bl', 'tl'],\n      offset: [0, -4]\n    }),\n    topRight: Object.assign(Object.assign({}, sharedConfig), {\n      points: ['br', 'tr'],\n      offset: [0, -4]\n    })\n  };\n};\nfunction mergedBuiltinPlacements(buildInPlacements, popupOverflow) {\n  return buildInPlacements || getBuiltInPlacements(popupOverflow);\n}\nexport default mergedBuiltinPlacements;","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const slideUpIn = new Keyframes('antSlideUpIn', {\n  '0%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1\n  }\n});\nexport const slideUpOut = new Keyframes('antSlideUpOut', {\n  '0%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0\n  }\n});\nexport const slideDownIn = new Keyframes('antSlideDownIn', {\n  '0%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '100% 100%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '100% 100%',\n    opacity: 1\n  }\n});\nexport const slideDownOut = new Keyframes('antSlideDownOut', {\n  '0%': {\n    transform: 'scaleY(1)',\n    transformOrigin: '100% 100%',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'scaleY(0.8)',\n    transformOrigin: '100% 100%',\n    opacity: 0\n  }\n});\nexport const slideLeftIn = new Keyframes('antSlideLeftIn', {\n  '0%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1\n  }\n});\nexport const slideLeftOut = new Keyframes('antSlideLeftOut', {\n  '0%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '0% 0%',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '0% 0%',\n    opacity: 0\n  }\n});\nexport const slideRightIn = new Keyframes('antSlideRightIn', {\n  '0%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '100% 0%',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '100% 0%',\n    opacity: 1\n  }\n});\nexport const slideRightOut = new Keyframes('antSlideRightOut', {\n  '0%': {\n    transform: 'scaleX(1)',\n    transformOrigin: '100% 0%',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'scaleX(0.8)',\n    transformOrigin: '100% 0%',\n    opacity: 0\n  }\n});\nconst slideMotion = {\n  'slide-up': {\n    inKeyframes: slideUpIn,\n    outKeyframes: slideUpOut\n  },\n  'slide-down': {\n    inKeyframes: slideDownIn,\n    outKeyframes: slideDownOut\n  },\n  'slide-left': {\n    inKeyframes: slideLeftIn,\n    outKeyframes: slideLeftOut\n  },\n  'slide-right': {\n    inKeyframes: slideRightIn,\n    outKeyframes: slideRightOut\n  }\n};\nexport const initSlideMotion = (token, motionName) => {\n  const {\n    antCls\n  } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const {\n    inKeyframes,\n    outKeyframes\n  } = slideMotion[motionName];\n  return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), {\n    [`\n      ${motionCls}-enter,\n      ${motionCls}-appear\n    `]: {\n      transform: 'scale(0)',\n      transformOrigin: '0% 0%',\n      opacity: 0,\n      animationTimingFunction: token.motionEaseOutQuint,\n      '&-prepare': {\n        transform: 'scale(1)'\n      }\n    },\n    [`${motionCls}-leave`]: {\n      animationTimingFunction: token.motionEaseInQuint\n    }\n  }];\n};","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const moveDownIn = new Keyframes('antMoveDownIn', {\n  '0%': {\n    transform: 'translate3d(0, 100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  }\n});\nexport const moveDownOut = new Keyframes('antMoveDownOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'translate3d(0, 100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  }\n});\nexport const moveLeftIn = new Keyframes('antMoveLeftIn', {\n  '0%': {\n    transform: 'translate3d(-100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  }\n});\nexport const moveLeftOut = new Keyframes('antMoveLeftOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'translate3d(-100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  }\n});\nexport const moveRightIn = new Keyframes('antMoveRightIn', {\n  '0%': {\n    transform: 'translate3d(100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  }\n});\nexport const moveRightOut = new Keyframes('antMoveRightOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'translate3d(100%, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  }\n});\nexport const moveUpIn = new Keyframes('antMoveUpIn', {\n  '0%': {\n    transform: 'translate3d(0, -100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  },\n  '100%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  }\n});\nexport const moveUpOut = new Keyframes('antMoveUpOut', {\n  '0%': {\n    transform: 'translate3d(0, 0, 0)',\n    transformOrigin: '0 0',\n    opacity: 1\n  },\n  '100%': {\n    transform: 'translate3d(0, -100%, 0)',\n    transformOrigin: '0 0',\n    opacity: 0\n  }\n});\nconst moveMotion = {\n  'move-up': {\n    inKeyframes: moveUpIn,\n    outKeyframes: moveUpOut\n  },\n  'move-down': {\n    inKeyframes: moveDownIn,\n    outKeyframes: moveDownOut\n  },\n  'move-left': {\n    inKeyframes: moveLeftIn,\n    outKeyframes: moveLeftOut\n  },\n  'move-right': {\n    inKeyframes: moveRightIn,\n    outKeyframes: moveRightOut\n  }\n};\nexport const initMoveMotion = (token, motionName) => {\n  const {\n    antCls\n  } = token;\n  const motionCls = `${antCls}-${motionName}`;\n  const {\n    inKeyframes,\n    outKeyframes\n  } = moveMotion[motionName];\n  return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), {\n    [`\n        ${motionCls}-enter,\n        ${motionCls}-appear\n      `]: {\n      opacity: 0,\n      animationTimingFunction: token.motionEaseOutCirc\n    },\n    [`${motionCls}-leave`]: {\n      animationTimingFunction: token.motionEaseInOutCirc\n    }\n  }];\n};","import { resetComponent, textEllipsis } from '../../style';\nimport { initMoveMotion, initSlideMotion, slideDownIn, slideDownOut, slideUpIn, slideUpOut } from '../../style/motion';\nconst genItemStyle = token => {\n  const {\n    optionHeight,\n    optionFontSize,\n    optionLineHeight,\n    optionPadding\n  } = token;\n  return {\n    position: 'relative',\n    display: 'block',\n    minHeight: optionHeight,\n    padding: optionPadding,\n    color: token.colorText,\n    fontWeight: 'normal',\n    fontSize: optionFontSize,\n    lineHeight: optionLineHeight,\n    boxSizing: 'border-box'\n  };\n};\nconst genSingleStyle = token => {\n  const {\n    antCls,\n    componentCls\n  } = token;\n  const selectItemCls = `${componentCls}-item`;\n  const slideUpEnterActive = `&${antCls}-slide-up-enter${antCls}-slide-up-enter-active`;\n  const slideUpAppearActive = `&${antCls}-slide-up-appear${antCls}-slide-up-appear-active`;\n  const slideUpLeaveActive = `&${antCls}-slide-up-leave${antCls}-slide-up-leave-active`;\n  const dropdownPlacementCls = `${componentCls}-dropdown-placement-`;\n  const selectedItemCls = `${selectItemCls}-option-selected`;\n  return [{\n    [`${componentCls}-dropdown`]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'absolute',\n      top: -9999,\n      zIndex: token.zIndexPopup,\n      boxSizing: 'border-box',\n      padding: token.paddingXXS,\n      overflow: 'hidden',\n      fontSize: token.fontSize,\n      // Fix select render lag of long text in chrome\n      // https://github.com/ant-design/ant-design/issues/11456\n      // https://github.com/ant-design/ant-design/issues/11843\n      fontVariant: 'initial',\n      backgroundColor: token.colorBgElevated,\n      borderRadius: token.borderRadiusLG,\n      outline: 'none',\n      boxShadow: token.boxShadowSecondary,\n      [`\n          ${slideUpEnterActive}${dropdownPlacementCls}bottomLeft,\n          ${slideUpAppearActive}${dropdownPlacementCls}bottomLeft\n        `]: {\n        animationName: slideUpIn\n      },\n      [`\n          ${slideUpEnterActive}${dropdownPlacementCls}topLeft,\n          ${slideUpAppearActive}${dropdownPlacementCls}topLeft,\n          ${slideUpEnterActive}${dropdownPlacementCls}topRight,\n          ${slideUpAppearActive}${dropdownPlacementCls}topRight\n        `]: {\n        animationName: slideDownIn\n      },\n      [`${slideUpLeaveActive}${dropdownPlacementCls}bottomLeft`]: {\n        animationName: slideUpOut\n      },\n      [`\n          ${slideUpLeaveActive}${dropdownPlacementCls}topLeft,\n          ${slideUpLeaveActive}${dropdownPlacementCls}topRight\n        `]: {\n        animationName: slideDownOut\n      },\n      '&-hidden': {\n        display: 'none'\n      },\n      [selectItemCls]: Object.assign(Object.assign({}, genItemStyle(token)), {\n        cursor: 'pointer',\n        transition: `background ${token.motionDurationSlow} ease`,\n        borderRadius: token.borderRadiusSM,\n        // =========== Group ============\n        '&-group': {\n          color: token.colorTextDescription,\n          fontSize: token.fontSizeSM,\n          cursor: 'default'\n        },\n        // =========== Option ===========\n        '&-option': {\n          display: 'flex',\n          '&-content': Object.assign({\n            flex: 'auto'\n          }, textEllipsis),\n          '&-state': {\n            flex: 'none',\n            display: 'flex',\n            alignItems: 'center'\n          },\n          [`&-active:not(${selectItemCls}-option-disabled)`]: {\n            backgroundColor: token.optionActiveBg\n          },\n          [`&-selected:not(${selectItemCls}-option-disabled)`]: {\n            color: token.optionSelectedColor,\n            fontWeight: token.optionSelectedFontWeight,\n            backgroundColor: token.optionSelectedBg,\n            [`${selectItemCls}-option-state`]: {\n              color: token.colorPrimary\n            }\n          },\n          '&-disabled': {\n            [`&${selectItemCls}-option-selected`]: {\n              backgroundColor: token.colorBgContainerDisabled\n            },\n            color: token.colorTextDisabled,\n            cursor: 'not-allowed'\n          },\n          '&-grouped': {\n            paddingInlineStart: token.calc(token.controlPaddingHorizontal).mul(2).equal()\n          }\n        },\n        '&-empty': Object.assign(Object.assign({}, genItemStyle(token)), {\n          color: token.colorTextDisabled\n        })\n      }),\n      // https://github.com/ant-design/ant-design/pull/46646\n      [`${selectedItemCls}:has(+ ${selectedItemCls})`]: {\n        borderEndStartRadius: 0,\n        borderEndEndRadius: 0,\n        [`& + ${selectedItemCls}`]: {\n          borderStartStartRadius: 0,\n          borderStartEndRadius: 0\n        }\n      },\n      // =========================== RTL ===========================\n      '&-rtl': {\n        direction: 'rtl'\n      }\n    })\n  },\n  // Follow code may reuse in other components\n  initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down'), initMoveMotion(token, 'move-up'), initMoveMotion(token, 'move-down')];\n};\nexport default genSingleStyle;","import { unit } from '@ant-design/cssinjs';\nimport { resetIcon } from '../../style';\nimport { mergeToken } from '../../theme/internal';\n/**\n * Get multiple selector needed style. The calculation:\n *\n * ContainerPadding = BasePadding - ItemMargin\n *\n * Border:                    ╔═══════════════════════════╗                 ┬\n * ContainerPadding:          ║                           ║                 │\n *                            ╟───────────────────────────╢     ┬           │\n * Item Margin:               ║                           ║     │           │\n *                            ║             ┌──────────┐  ║     │           │\n * Item(multipleItemHeight):  ║ BasePadding │   Item   │  ║  Overflow  Container(ControlHeight)\n *                            ║             └──────────┘  ║     │           │\n * Item Margin:               ║                           ║     │           │\n *                            ╟───────────────────────────╢     ┴           │\n * ContainerPadding:          ║                           ║                 │\n * Border:                    ╚═══════════════════════════╝                 ┴\n */\nexport const getMultipleSelectorUnit = token => {\n  const {\n    multipleSelectItemHeight,\n    paddingXXS,\n    lineWidth,\n    INTERNAL_FIXED_ITEM_MARGIN\n  } = token;\n  const basePadding = token.max(token.calc(paddingXXS).sub(lineWidth).equal(), 0);\n  const containerPadding = token.max(token.calc(basePadding).sub(INTERNAL_FIXED_ITEM_MARGIN).equal(), 0);\n  return {\n    basePadding,\n    containerPadding,\n    itemHeight: unit(multipleSelectItemHeight),\n    itemLineHeight: unit(token.calc(multipleSelectItemHeight).sub(token.calc(token.lineWidth).mul(2)).equal())\n  };\n};\nconst getSelectItemStyle = token => {\n  const {\n    multipleSelectItemHeight,\n    selectHeight,\n    lineWidth\n  } = token;\n  const selectItemDist = token.calc(selectHeight).sub(multipleSelectItemHeight).div(2).sub(lineWidth).equal();\n  return selectItemDist;\n};\n/**\n * Get the `rc-overflow` needed style.\n * It's a share style which means not affected by `size`.\n */\nexport const genOverflowStyle = token => {\n  const {\n    componentCls,\n    iconCls,\n    borderRadiusSM,\n    motionDurationSlow,\n    paddingXS,\n    multipleItemColorDisabled,\n    multipleItemBorderColorDisabled,\n    colorIcon,\n    colorIconHover,\n    INTERNAL_FIXED_ITEM_MARGIN\n  } = token;\n  const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;\n  return {\n    /**\n     * Do not merge `height` & `line-height` under style with `selection` & `search`, since chrome\n     * may update to redesign with its align logic.\n     */\n    // =========================== Overflow ===========================\n    [selectOverflowPrefixCls]: {\n      position: 'relative',\n      display: 'flex',\n      flex: 'auto',\n      flexWrap: 'wrap',\n      maxWidth: '100%',\n      '&-item': {\n        flex: 'none',\n        alignSelf: 'center',\n        maxWidth: '100%',\n        display: 'inline-flex'\n      },\n      // ======================== Selections ==========================\n      [`${componentCls}-selection-item`]: {\n        display: 'flex',\n        alignSelf: 'center',\n        flex: 'none',\n        boxSizing: 'border-box',\n        maxWidth: '100%',\n        marginBlock: INTERNAL_FIXED_ITEM_MARGIN,\n        borderRadius: borderRadiusSM,\n        cursor: 'default',\n        transition: `font-size ${motionDurationSlow}, line-height ${motionDurationSlow}, height ${motionDurationSlow}`,\n        marginInlineEnd: token.calc(INTERNAL_FIXED_ITEM_MARGIN).mul(2).equal(),\n        paddingInlineStart: paddingXS,\n        paddingInlineEnd: token.calc(paddingXS).div(2).equal(),\n        [`${componentCls}-disabled&`]: {\n          color: multipleItemColorDisabled,\n          borderColor: multipleItemBorderColorDisabled,\n          cursor: 'not-allowed'\n        },\n        // It's ok not to do this, but 24px makes bottom narrow in view should adjust\n        '&-content': {\n          display: 'inline-block',\n          marginInlineEnd: token.calc(paddingXS).div(2).equal(),\n          overflow: 'hidden',\n          whiteSpace: 'pre',\n          // fix whitespace wrapping. custom tags display all whitespace within.\n          textOverflow: 'ellipsis'\n        },\n        '&-remove': Object.assign(Object.assign({}, resetIcon()), {\n          display: 'inline-flex',\n          alignItems: 'center',\n          color: colorIcon,\n          fontWeight: 'bold',\n          fontSize: 10,\n          lineHeight: 'inherit',\n          cursor: 'pointer',\n          [`> ${iconCls}`]: {\n            verticalAlign: '-0.2em'\n          },\n          '&:hover': {\n            color: colorIconHover\n          }\n        })\n      }\n    }\n  };\n};\nconst genSelectionStyle = (token, suffix) => {\n  const {\n    componentCls,\n    INTERNAL_FIXED_ITEM_MARGIN\n  } = token;\n  const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;\n  const selectItemHeight = token.multipleSelectItemHeight;\n  const selectItemDist = getSelectItemStyle(token);\n  const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n  const multipleSelectorUnit = getMultipleSelectorUnit(token);\n  return {\n    [`${componentCls}-multiple${suffixCls}`]: Object.assign(Object.assign({}, genOverflowStyle(token)), {\n      // ========================= Selector =========================\n      [`${componentCls}-selector`]: {\n        display: 'flex',\n        alignItems: 'center',\n        width: '100%',\n        height: '100%',\n        // Multiple is little different that horizontal is follow the vertical\n        paddingInline: multipleSelectorUnit.basePadding,\n        paddingBlock: multipleSelectorUnit.containerPadding,\n        borderRadius: token.borderRadius,\n        [`${componentCls}-disabled&`]: {\n          background: token.multipleSelectorBgDisabled,\n          cursor: 'not-allowed'\n        },\n        '&:after': {\n          display: 'inline-block',\n          width: 0,\n          margin: `${unit(INTERNAL_FIXED_ITEM_MARGIN)} 0`,\n          lineHeight: unit(selectItemHeight),\n          visibility: 'hidden',\n          content: '\"\\\\a0\"'\n        }\n      },\n      // ======================== Selections ========================\n      [`${componentCls}-selection-item`]: {\n        height: multipleSelectorUnit.itemHeight,\n        lineHeight: unit(multipleSelectorUnit.itemLineHeight)\n      },\n      // ========================== Wrap ===========================\n      [`${componentCls}-selection-wrap`]: {\n        alignSelf: 'flex-start',\n        '&:after': {\n          lineHeight: unit(selectItemHeight),\n          marginBlock: INTERNAL_FIXED_ITEM_MARGIN\n        }\n      },\n      // ========================== Input ==========================\n      [`${componentCls}-prefix`]: {\n        marginInlineStart: token.calc(token.inputPaddingHorizontalBase).sub(multipleSelectorUnit.basePadding).equal()\n      },\n      [`${selectOverflowPrefixCls}-item + ${selectOverflowPrefixCls}-item,\n        ${componentCls}-prefix + ${componentCls}-selection-wrap\n      `]: {\n        [`${componentCls}-selection-search`]: {\n          marginInlineStart: 0\n        },\n        [`${componentCls}-selection-placeholder`]: {\n          insetInlineStart: 0\n        }\n      },\n      // https://github.com/ant-design/ant-design/issues/44754\n      // Same as `wrap:after`\n      [`${selectOverflowPrefixCls}-item-suffix`]: {\n        minHeight: multipleSelectorUnit.itemHeight,\n        marginBlock: INTERNAL_FIXED_ITEM_MARGIN\n      },\n      [`${componentCls}-selection-search`]: {\n        display: 'inline-flex',\n        position: 'relative',\n        maxWidth: '100%',\n        marginInlineStart: token.calc(token.inputPaddingHorizontalBase).sub(selectItemDist).equal(),\n        [`\n          &-input,\n          &-mirror\n        `]: {\n          height: selectItemHeight,\n          fontFamily: token.fontFamily,\n          lineHeight: unit(selectItemHeight),\n          transition: `all ${token.motionDurationSlow}`\n        },\n        '&-input': {\n          width: '100%',\n          minWidth: 4.1 // fix search cursor missing\n        },\n        '&-mirror': {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: 0,\n          insetInlineEnd: 'auto',\n          zIndex: 999,\n          whiteSpace: 'pre',\n          // fix whitespace wrapping caused width calculation bug\n          visibility: 'hidden'\n        }\n      },\n      // ======================= Placeholder =======================\n      [`${componentCls}-selection-placeholder`]: {\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: token.calc(token.inputPaddingHorizontalBase).sub(multipleSelectorUnit.basePadding).equal(),\n        insetInlineEnd: token.inputPaddingHorizontalBase,\n        transform: 'translateY(-50%)',\n        transition: `all ${token.motionDurationSlow}`\n      }\n    })\n  };\n};\nfunction genSizeStyle(token, suffix) {\n  const {\n    componentCls\n  } = token;\n  const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n  const rawStyle = {\n    [`${componentCls}-multiple${suffixCls}`]: {\n      fontSize: token.fontSize,\n      // ========================= Selector =========================\n      [`${componentCls}-selector`]: {\n        [`${componentCls}-show-search&`]: {\n          cursor: 'text'\n        }\n      },\n      [`\n        &${componentCls}-show-arrow ${componentCls}-selector,\n        &${componentCls}-allow-clear ${componentCls}-selector\n      `]: {\n        paddingInlineEnd: token.calc(token.fontSizeIcon).add(token.controlPaddingHorizontal).equal()\n      }\n    }\n  };\n  return [genSelectionStyle(token, suffix), rawStyle];\n}\nconst genMultipleStyle = token => {\n  const {\n    componentCls\n  } = token;\n  const smallToken = mergeToken(token, {\n    selectHeight: token.controlHeightSM,\n    multipleSelectItemHeight: token.multipleItemHeightSM,\n    borderRadius: token.borderRadiusSM,\n    borderRadiusSM: token.borderRadiusXS\n  });\n  const largeToken = mergeToken(token, {\n    fontSize: token.fontSizeLG,\n    selectHeight: token.controlHeightLG,\n    multipleSelectItemHeight: token.multipleItemHeightLG,\n    borderRadius: token.borderRadiusLG,\n    borderRadiusSM: token.borderRadius\n  });\n  return [genSizeStyle(token),\n  // ======================== Small ========================\n  genSizeStyle(smallToken, 'sm'),\n  // Padding\n  {\n    [`${componentCls}-multiple${componentCls}-sm`]: {\n      [`${componentCls}-selection-placeholder`]: {\n        insetInline: token.calc(token.controlPaddingHorizontalSM).sub(token.lineWidth).equal()\n      },\n      // https://github.com/ant-design/ant-design/issues/29559\n      [`${componentCls}-selection-search`]: {\n        marginInlineStart: 2 // Magic Number\n      }\n    }\n  },\n  // ======================== Large ========================\n  genSizeStyle(largeToken, 'lg')];\n};\nexport default genMultipleStyle;","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nfunction genSizeStyle(token, suffix) {\n  const {\n    componentCls,\n    inputPaddingHorizontalBase,\n    borderRadius\n  } = token;\n  const selectHeightWithoutBorder = token.calc(token.controlHeight).sub(token.calc(token.lineWidth).mul(2)).equal();\n  const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n  return {\n    [`${componentCls}-single${suffixCls}`]: {\n      fontSize: token.fontSize,\n      height: token.controlHeight,\n      // ========================= Selector =========================\n      [`${componentCls}-selector`]: Object.assign(Object.assign({}, resetComponent(token, true)), {\n        display: 'flex',\n        borderRadius,\n        flex: '1 1 auto',\n        [`${componentCls}-selection-search`]: {\n          position: 'absolute',\n          inset: 0,\n          width: '100%',\n          '&-input': {\n            width: '100%',\n            WebkitAppearance: 'textfield'\n          }\n        },\n        [`\n          ${componentCls}-selection-item,\n          ${componentCls}-selection-placeholder\n        `]: {\n          display: 'block',\n          padding: 0,\n          lineHeight: unit(selectHeightWithoutBorder),\n          transition: `all ${token.motionDurationSlow}, visibility 0s`,\n          alignSelf: 'center'\n        },\n        [`${componentCls}-selection-placeholder`]: {\n          transition: 'none',\n          pointerEvents: 'none'\n        },\n        // For common baseline align\n        [['&:after', /* For '' value baseline align */\n        `${componentCls}-selection-item:empty:after`, /* For undefined value baseline align */\n        `${componentCls}-selection-placeholder:empty:after`].join(',')]: {\n          display: 'inline-block',\n          width: 0,\n          visibility: 'hidden',\n          content: '\"\\\\a0\"'\n        }\n      }),\n      [`\n        &${componentCls}-show-arrow ${componentCls}-selection-item,\n        &${componentCls}-show-arrow ${componentCls}-selection-search,\n        &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n      `]: {\n        paddingInlineEnd: token.showArrowPaddingInlineEnd\n      },\n      // Opacity selection if open\n      [`&${componentCls}-open ${componentCls}-selection-item`]: {\n        color: token.colorTextPlaceholder\n      },\n      // ========================== Input ==========================\n      // We only change the style of non-customize input which is only support by `combobox` mode.\n      // Not customize\n      [`&:not(${componentCls}-customize-input)`]: {\n        [`${componentCls}-selector`]: {\n          width: '100%',\n          height: '100%',\n          alignItems: 'center',\n          padding: `0 ${unit(inputPaddingHorizontalBase)}`,\n          [`${componentCls}-selection-search-input`]: {\n            height: selectHeightWithoutBorder\n          },\n          '&:after': {\n            lineHeight: unit(selectHeightWithoutBorder)\n          }\n        }\n      },\n      [`&${componentCls}-customize-input`]: {\n        [`${componentCls}-selector`]: {\n          '&:after': {\n            display: 'none'\n          },\n          [`${componentCls}-selection-search`]: {\n            position: 'static',\n            width: '100%'\n          },\n          [`${componentCls}-selection-placeholder`]: {\n            position: 'absolute',\n            insetInlineStart: 0,\n            insetInlineEnd: 0,\n            padding: `0 ${unit(inputPaddingHorizontalBase)}`,\n            '&:after': {\n              display: 'none'\n            }\n          }\n        }\n      }\n    }\n  };\n}\nexport default function genSingleStyle(token) {\n  const {\n    componentCls\n  } = token;\n  const inputPaddingHorizontalSM = token.calc(token.controlPaddingHorizontalSM).sub(token.lineWidth).equal();\n  return [genSizeStyle(token),\n  // ======================== Small ========================\n  // Shared\n  genSizeStyle(mergeToken(token, {\n    controlHeight: token.controlHeightSM,\n    borderRadius: token.borderRadiusSM\n  }), 'sm'),\n  // padding\n  {\n    [`${componentCls}-single${componentCls}-sm`]: {\n      [`&:not(${componentCls}-customize-input)`]: {\n        [`${componentCls}-selector`]: {\n          padding: `0 ${unit(inputPaddingHorizontalSM)}`\n        },\n        // With arrow should provides `padding-right` to show the arrow\n        [`&${componentCls}-show-arrow ${componentCls}-selection-search`]: {\n          insetInlineEnd: token.calc(inputPaddingHorizontalSM).add(token.calc(token.fontSize).mul(1.5)).equal()\n        },\n        [`\n            &${componentCls}-show-arrow ${componentCls}-selection-item,\n            &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n          `]: {\n          paddingInlineEnd: token.calc(token.fontSize).mul(1.5).equal()\n        }\n      }\n    }\n  },\n  // ======================== Large ========================\n  // Shared\n  genSizeStyle(mergeToken(token, {\n    controlHeight: token.singleItemHeightLG,\n    fontSize: token.fontSizeLG,\n    borderRadius: token.borderRadiusLG\n  }), 'lg')];\n}","export const prepareComponentToken = token => {\n  const {\n    fontSize,\n    lineHeight,\n    lineWidth,\n    controlHeight,\n    controlHeightSM,\n    controlHeightLG,\n    paddingXXS,\n    controlPaddingHorizontal,\n    zIndexPopupBase,\n    colorText,\n    fontWeightStrong,\n    controlItemBgActive,\n    controlItemBgHover,\n    colorBgContainer,\n    colorFillSecondary,\n    colorBgContainerDisabled,\n    colorTextDisabled,\n    colorPrimaryHover,\n    colorPrimary,\n    controlOutline\n  } = token;\n  // Item height default use `controlHeight - 2 * paddingXXS`,\n  // but some case `paddingXXS=0`.\n  // Let's fallback it.\n  const dblPaddingXXS = paddingXXS * 2;\n  const dblLineWidth = lineWidth * 2;\n  const multipleItemHeight = Math.min(controlHeight - dblPaddingXXS, controlHeight - dblLineWidth);\n  const multipleItemHeightSM = Math.min(controlHeightSM - dblPaddingXXS, controlHeightSM - dblLineWidth);\n  const multipleItemHeightLG = Math.min(controlHeightLG - dblPaddingXXS, controlHeightLG - dblLineWidth);\n  // FIXED_ITEM_MARGIN is a hardcode calculation since calc not support rounding\n  const INTERNAL_FIXED_ITEM_MARGIN = Math.floor(paddingXXS / 2);\n  return {\n    INTERNAL_FIXED_ITEM_MARGIN,\n    zIndexPopup: zIndexPopupBase + 50,\n    optionSelectedColor: colorText,\n    optionSelectedFontWeight: fontWeightStrong,\n    optionSelectedBg: controlItemBgActive,\n    optionActiveBg: controlItemBgHover,\n    optionPadding: `${(controlHeight - fontSize * lineHeight) / 2}px ${controlPaddingHorizontal}px`,\n    optionFontSize: fontSize,\n    optionLineHeight: lineHeight,\n    optionHeight: controlHeight,\n    selectorBg: colorBgContainer,\n    clearBg: colorBgContainer,\n    singleItemHeightLG: controlHeightLG,\n    multipleItemBg: colorFillSecondary,\n    multipleItemBorderColor: 'transparent',\n    multipleItemHeight,\n    multipleItemHeightSM,\n    multipleItemHeightLG,\n    multipleSelectorBgDisabled: colorBgContainerDisabled,\n    multipleItemColorDisabled: colorTextDisabled,\n    multipleItemBorderColorDisabled: 'transparent',\n    showArrowPaddingInlineEnd: Math.ceil(token.fontSize * 1.25),\n    hoverBorderColor: colorPrimaryHover,\n    activeBorderColor: colorPrimary,\n    activeOutlineColor: controlOutline,\n    selectAffixPadding: paddingXXS\n  };\n};","import { unit } from '@ant-design/cssinjs';\n// =====================================================\n// ==                  Outlined                       ==\n// =====================================================\nconst genBaseOutlinedStyle = (token, options) => {\n  const {\n    componentCls,\n    antCls,\n    controlOutlineWidth\n  } = token;\n  return {\n    [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n      border: `${unit(token.lineWidth)} ${token.lineType} ${options.borderColor}`,\n      background: token.selectorBg\n    },\n    [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n      [`&:hover ${componentCls}-selector`]: {\n        borderColor: options.hoverBorderHover\n      },\n      [`${componentCls}-focused& ${componentCls}-selector`]: {\n        borderColor: options.activeBorderColor,\n        boxShadow: `0 0 0 ${unit(controlOutlineWidth)} ${options.activeOutlineColor}`,\n        outline: 0\n      },\n      [`${componentCls}-prefix`]: {\n        color: options.color\n      }\n    }\n  };\n};\nconst genOutlinedStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseOutlinedStyle(token, options))\n});\nconst genOutlinedStyle = token => ({\n  '&-outlined': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseOutlinedStyle(token, {\n    borderColor: token.colorBorder,\n    hoverBorderHover: token.hoverBorderColor,\n    activeBorderColor: token.activeBorderColor,\n    activeOutlineColor: token.activeOutlineColor,\n    color: token.colorText\n  })), genOutlinedStatusStyle(token, {\n    status: 'error',\n    borderColor: token.colorError,\n    hoverBorderHover: token.colorErrorHover,\n    activeBorderColor: token.colorError,\n    activeOutlineColor: token.colorErrorOutline,\n    color: token.colorError\n  })), genOutlinedStatusStyle(token, {\n    status: 'warning',\n    borderColor: token.colorWarning,\n    hoverBorderHover: token.colorWarningHover,\n    activeBorderColor: token.colorWarning,\n    activeOutlineColor: token.colorWarningOutline,\n    color: token.colorWarning\n  })), {\n    [`&${token.componentCls}-disabled`]: {\n      [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n        background: token.colorBgContainerDisabled,\n        color: token.colorTextDisabled\n      }\n    },\n    [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n      background: token.multipleItemBg,\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n    }\n  })\n});\n// =====================================================\n// ==                   Filled                        ==\n// =====================================================\nconst genBaseFilledStyle = (token, options) => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return {\n    [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n      background: options.bg,\n      border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n      color: options.color\n    },\n    [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n      [`&:hover ${componentCls}-selector`]: {\n        background: options.hoverBg\n      },\n      [`${componentCls}-focused& ${componentCls}-selector`]: {\n        background: token.selectorBg,\n        borderColor: options.activeBorderColor,\n        outline: 0\n      }\n    }\n  };\n};\nconst genFilledStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseFilledStyle(token, options))\n});\nconst genFilledStyle = token => ({\n  '&-filled': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseFilledStyle(token, {\n    bg: token.colorFillTertiary,\n    hoverBg: token.colorFillSecondary,\n    activeBorderColor: token.activeBorderColor,\n    color: token.colorText\n  })), genFilledStatusStyle(token, {\n    status: 'error',\n    bg: token.colorErrorBg,\n    hoverBg: token.colorErrorBgHover,\n    activeBorderColor: token.colorError,\n    color: token.colorError\n  })), genFilledStatusStyle(token, {\n    status: 'warning',\n    bg: token.colorWarningBg,\n    hoverBg: token.colorWarningBgHover,\n    activeBorderColor: token.colorWarning,\n    color: token.colorWarning\n  })), {\n    [`&${token.componentCls}-disabled`]: {\n      [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n        borderColor: token.colorBorder,\n        background: token.colorBgContainerDisabled,\n        color: token.colorTextDisabled\n      }\n    },\n    [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n      background: token.colorBgContainer,\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n    }\n  })\n});\n// =====================================================\n// ==                 Borderless                      ==\n// =====================================================\nconst genBorderlessStyle = token => ({\n  '&-borderless': {\n    [`${token.componentCls}-selector`]: {\n      background: 'transparent',\n      border: `${unit(token.lineWidth)} ${token.lineType} transparent`\n    },\n    [`&${token.componentCls}-disabled`]: {\n      [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n        color: token.colorTextDisabled\n      }\n    },\n    [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n      background: token.multipleItemBg,\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n    },\n    // Status\n    [`&${token.componentCls}-status-error`]: {\n      [`${token.componentCls}-prefix, ${token.componentCls}-selection-item`]: {\n        color: token.colorError\n      }\n    },\n    [`&${token.componentCls}-status-warning`]: {\n      [`${token.componentCls}-prefix, ${token.componentCls}-selection-item`]: {\n        color: token.colorWarning\n      }\n    }\n  }\n});\n// =====================================================\n// ==                 Underlined                      ==\n// =====================================================\nconst genBaseUnderlinedStyle = (token, options) => {\n  const {\n    componentCls,\n    antCls\n  } = token;\n  return {\n    [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n      borderWidth: `0 0 ${unit(token.lineWidth)} 0`,\n      borderStyle: `none none ${token.lineType} none`,\n      borderColor: options.borderColor,\n      background: token.selectorBg,\n      borderRadius: 0\n    },\n    [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n      [`&:hover ${componentCls}-selector`]: {\n        borderColor: options.hoverBorderHover\n      },\n      [`${componentCls}-focused& ${componentCls}-selector`]: {\n        borderColor: options.activeBorderColor,\n        outline: 0\n      },\n      [`${componentCls}-prefix`]: {\n        color: options.color\n      }\n    }\n  };\n};\nconst genUnderlinedStatusStyle = (token, options) => ({\n  [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseUnderlinedStyle(token, options))\n});\nconst genUnderlinedStyle = token => ({\n  '&-underlined': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseUnderlinedStyle(token, {\n    borderColor: token.colorBorder,\n    hoverBorderHover: token.hoverBorderColor,\n    activeBorderColor: token.activeBorderColor,\n    activeOutlineColor: token.activeOutlineColor,\n    color: token.colorText\n  })), genUnderlinedStatusStyle(token, {\n    status: 'error',\n    borderColor: token.colorError,\n    hoverBorderHover: token.colorErrorHover,\n    activeBorderColor: token.colorError,\n    activeOutlineColor: token.colorErrorOutline,\n    color: token.colorError\n  })), genUnderlinedStatusStyle(token, {\n    status: 'warning',\n    borderColor: token.colorWarning,\n    hoverBorderHover: token.colorWarningHover,\n    activeBorderColor: token.colorWarning,\n    activeOutlineColor: token.colorWarningOutline,\n    color: token.colorWarning\n  })), {\n    [`&${token.componentCls}-disabled`]: {\n      [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n        color: token.colorTextDisabled\n      }\n    },\n    [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n      background: token.multipleItemBg,\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n    }\n  })\n});\nconst genVariantsStyle = token => ({\n  [token.componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, genOutlinedStyle(token)), genFilledStyle(token)), genBorderlessStyle(token)), genUnderlinedStyle(token))\n});\nexport default genVariantsStyle;","import { resetComponent, resetIcon, textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genDropdownStyle from './dropdown';\nimport genMultipleStyle from './multiple';\nimport genSingleStyle from './single';\nimport { prepareComponentToken } from './token';\nimport genVariantsStyle from './variants';\n// ============================= Selector =============================\nconst genSelectorStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    position: 'relative',\n    transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n    input: {\n      cursor: 'pointer'\n    },\n    [`${componentCls}-show-search&`]: {\n      cursor: 'text',\n      input: {\n        cursor: 'auto',\n        color: 'inherit',\n        height: '100%'\n      }\n    },\n    [`${componentCls}-disabled&`]: {\n      cursor: 'not-allowed',\n      input: {\n        cursor: 'not-allowed'\n      }\n    }\n  };\n};\n// ============================== Styles ==============================\n// /* Reset search input style */\nconst getSearchInputWithoutBorderStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-selection-search-input`]: {\n      margin: 0,\n      padding: 0,\n      background: 'transparent',\n      border: 'none',\n      outline: 'none',\n      appearance: 'none',\n      fontFamily: 'inherit',\n      '&::-webkit-search-cancel-button': {\n        display: 'none',\n        '-webkit-appearance': 'none'\n      }\n    }\n  };\n};\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n  const {\n    antCls,\n    componentCls,\n    inputPaddingHorizontalBase,\n    iconCls\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'relative',\n      display: 'inline-flex',\n      cursor: 'pointer',\n      [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: Object.assign(Object.assign({}, genSelectorStyle(token)), getSearchInputWithoutBorderStyle(token)),\n      // ======================== Selection ========================\n      [`${componentCls}-selection-item`]: Object.assign(Object.assign({\n        flex: 1,\n        fontWeight: 'normal',\n        position: 'relative',\n        userSelect: 'none'\n      }, textEllipsis), {\n        // https://github.com/ant-design/ant-design/issues/40421\n        [`> ${antCls}-typography`]: {\n          display: 'inline'\n        }\n      }),\n      // ======================= Placeholder =======================\n      [`${componentCls}-selection-placeholder`]: Object.assign(Object.assign({}, textEllipsis), {\n        flex: 1,\n        color: token.colorTextPlaceholder,\n        pointerEvents: 'none'\n      }),\n      // ========================== Arrow ==========================\n      [`${componentCls}-arrow`]: Object.assign(Object.assign({}, resetIcon()), {\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: 'auto',\n        insetInlineEnd: inputPaddingHorizontalBase,\n        height: token.fontSizeIcon,\n        marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),\n        color: token.colorTextQuaternary,\n        fontSize: token.fontSizeIcon,\n        lineHeight: 1,\n        textAlign: 'center',\n        pointerEvents: 'none',\n        display: 'flex',\n        alignItems: 'center',\n        transition: `opacity ${token.motionDurationSlow} ease`,\n        [iconCls]: {\n          verticalAlign: 'top',\n          transition: `transform ${token.motionDurationSlow}`,\n          '> svg': {\n            verticalAlign: 'top'\n          },\n          [`&:not(${componentCls}-suffix)`]: {\n            pointerEvents: 'auto'\n          }\n        },\n        [`${componentCls}-disabled &`]: {\n          cursor: 'not-allowed'\n        },\n        '> *:not(:last-child)': {\n          marginInlineEnd: 8 // FIXME: magic\n        }\n      }),\n      // ========================== Wrap ===========================\n      [`${componentCls}-selection-wrap`]: {\n        display: 'flex',\n        width: '100%',\n        position: 'relative',\n        minWidth: 0,\n        // https://github.com/ant-design/ant-design/issues/51669\n        '&:after': {\n          content: '\"\\\\a0\"',\n          width: 0,\n          overflow: 'hidden'\n        }\n      },\n      // ========================= Prefix ==========================\n      [`${componentCls}-prefix`]: {\n        flex: 'none',\n        marginInlineEnd: token.selectAffixPadding\n      },\n      // ========================== Clear ==========================\n      [`${componentCls}-clear`]: {\n        position: 'absolute',\n        top: '50%',\n        insetInlineStart: 'auto',\n        insetInlineEnd: inputPaddingHorizontalBase,\n        zIndex: 1,\n        display: 'inline-block',\n        width: token.fontSizeIcon,\n        height: token.fontSizeIcon,\n        marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),\n        color: token.colorTextQuaternary,\n        fontSize: token.fontSizeIcon,\n        fontStyle: 'normal',\n        lineHeight: 1,\n        textAlign: 'center',\n        textTransform: 'none',\n        cursor: 'pointer',\n        opacity: 0,\n        transition: `color ${token.motionDurationMid} ease, opacity ${token.motionDurationSlow} ease`,\n        textRendering: 'auto',\n        '&:before': {\n          display: 'block'\n        },\n        '&:hover': {\n          color: token.colorTextTertiary\n        }\n      },\n      [`&:hover ${componentCls}-clear`]: {\n        opacity: 1,\n        background: token.colorBgBase,\n        borderRadius: '50%'\n      }\n    }),\n    // ========================= Feedback ==========================\n    [`${componentCls}-status`]: {\n      '&-error, &-warning, &-success, &-validating': {\n        [`&${componentCls}-has-feedback`]: {\n          [`${componentCls}-clear`]: {\n            insetInlineEnd: token.calc(inputPaddingHorizontalBase).add(token.fontSize).add(token.paddingXS).equal()\n          }\n        }\n      }\n    }\n  };\n};\n// ============================== Styles ==============================\nconst genSelectStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return [{\n    [componentCls]: {\n      // ==================== In Form ====================\n      [`&${componentCls}-in-form-item`]: {\n        width: '100%'\n      }\n    }\n  },\n  // =====================================================\n  // ==                       LTR                       ==\n  // =====================================================\n  // Base\n  genBaseStyle(token),\n  // Single\n  genSingleStyle(token),\n  // Multiple\n  genMultipleStyle(token),\n  // Dropdown\n  genDropdownStyle(token),\n  // =====================================================\n  // ==                       RTL                       ==\n  // =====================================================\n  {\n    [`${componentCls}-rtl`]: {\n      direction: 'rtl'\n    }\n  },\n  // =====================================================\n  // ==             Space Compact                       ==\n  // =====================================================\n  genCompactItemStyle(token, {\n    borderElCls: `${componentCls}-selector`,\n    focusElCls: `${componentCls}-focused`\n  })];\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Select', (token, _ref) => {\n  let {\n    rootPrefixCls\n  } = _ref;\n  const selectToken = mergeToken(token, {\n    rootPrefixCls,\n    inputPaddingHorizontalBase: token.calc(token.paddingSM).sub(1).equal(),\n    multipleSelectItemHeight: token.multipleItemHeight,\n    selectHeight: token.controlHeight\n  });\n  return [genSelectStyle(selectToken), genVariantsStyle(selectToken)];\n}, prepareComponentToken, {\n  unitless: {\n    optionLineHeight: true,\n    optionSelectedFontWeight: true\n  }\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n// TODO: 4.0 - codemod should help to change `filterOption` to support node props.\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcSelect, { OptGroup, Option } from 'rc-select';\nimport omit from \"rc-util/es/omit\";\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport genPurePanel from '../_util/PurePanel';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport useVariants from '../form/hooks/useVariants';\nimport { useCompactItemContext } from '../space/Compact';\nimport { useToken } from '../theme/internal';\nimport mergedBuiltinPlacements from './mergedBuiltinPlacements';\nimport useStyle from './style';\nimport useIcons from './useIcons';\nimport useShowArrow from './useShowArrow';\nconst SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nconst InternalSelect = (props, ref) => {\n  var _a;\n  const {\n      prefixCls: customizePrefixCls,\n      bordered,\n      className,\n      rootClassName,\n      getPopupContainer,\n      popupClassName,\n      dropdownClassName,\n      listHeight = 256,\n      placement,\n      listItemHeight: customListItemHeight,\n      size: customizeSize,\n      disabled: customDisabled,\n      notFoundContent,\n      status: customStatus,\n      builtinPlacements,\n      dropdownMatchSelectWidth,\n      popupMatchSelectWidth,\n      direction: propDirection,\n      style,\n      allowClear,\n      variant: customizeVariant,\n      dropdownStyle,\n      transitionName,\n      tagRender,\n      maxCount,\n      prefix\n    } = props,\n    rest = __rest(props, [\"prefixCls\", \"bordered\", \"className\", \"rootClassName\", \"getPopupContainer\", \"popupClassName\", \"dropdownClassName\", \"listHeight\", \"placement\", \"listItemHeight\", \"size\", \"disabled\", \"notFoundContent\", \"status\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"popupMatchSelectWidth\", \"direction\", \"style\", \"allowClear\", \"variant\", \"dropdownStyle\", \"transitionName\", \"tagRender\", \"maxCount\", \"prefix\"]);\n  const {\n    getPopupContainer: getContextPopupContainer,\n    getPrefixCls,\n    renderEmpty,\n    direction: contextDirection,\n    virtual,\n    popupMatchSelectWidth: contextPopupMatchSelectWidth,\n    popupOverflow\n  } = React.useContext(ConfigContext);\n  const contextSelect = useComponentConfig('select');\n  const [, token] = useToken();\n  const listItemHeight = customListItemHeight !== null && customListItemHeight !== void 0 ? customListItemHeight : token === null || token === void 0 ? void 0 : token.controlHeight;\n  const prefixCls = getPrefixCls('select', customizePrefixCls);\n  const rootPrefixCls = getPrefixCls();\n  const direction = propDirection !== null && propDirection !== void 0 ? propDirection : contextDirection;\n  const {\n    compactSize,\n    compactItemClassnames\n  } = useCompactItemContext(prefixCls, direction);\n  const [variant, enableVariantCls] = useVariants('select', customizeVariant, bordered);\n  const rootCls = useCSSVarCls(prefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n  const mode = React.useMemo(() => {\n    const {\n      mode: m\n    } = props;\n    if (m === 'combobox') {\n      return undefined;\n    }\n    if (m === SECRET_COMBOBOX_MODE_DO_NOT_USE) {\n      return 'combobox';\n    }\n    return m;\n  }, [props.mode]);\n  const isMultiple = mode === 'multiple' || mode === 'tags';\n  const showSuffixIcon = useShowArrow(props.suffixIcon, props.showArrow);\n  const mergedPopupMatchSelectWidth = (_a = popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth) !== null && _a !== void 0 ? _a : contextPopupMatchSelectWidth;\n  // ===================== Form Status =====================\n  const {\n    status: contextStatus,\n    hasFeedback,\n    isFormItemInput,\n    feedbackIcon\n  } = React.useContext(FormItemInputContext);\n  const mergedStatus = getMergedStatus(contextStatus, customStatus);\n  // ===================== Empty =====================\n  let mergedNotFound;\n  if (notFoundContent !== undefined) {\n    mergedNotFound = notFoundContent;\n  } else if (mode === 'combobox') {\n    mergedNotFound = null;\n  } else {\n    mergedNotFound = (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('Select')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n      componentName: \"Select\"\n    });\n  }\n  // ===================== Icons =====================\n  const {\n    suffixIcon,\n    itemIcon,\n    removeIcon,\n    clearIcon\n  } = useIcons(Object.assign(Object.assign({}, rest), {\n    multiple: isMultiple,\n    hasFeedback,\n    feedbackIcon,\n    showSuffixIcon,\n    prefixCls,\n    componentName: 'Select'\n  }));\n  const mergedAllowClear = allowClear === true ? {\n    clearIcon\n  } : allowClear;\n  const selectProps = omit(rest, ['suffixIcon', 'itemIcon']);\n  const mergedPopupClassName = classNames(popupClassName || dropdownClassName, {\n    [`${prefixCls}-dropdown-${direction}`]: direction === 'rtl'\n  }, rootClassName, cssVarCls, rootCls, hashId);\n  const mergedSize = useSize(ctx => {\n    var _a;\n    return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n  });\n  // ===================== Disabled =====================\n  const disabled = React.useContext(DisabledContext);\n  const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  const mergedClassName = classNames({\n    [`${prefixCls}-lg`]: mergedSize === 'large',\n    [`${prefixCls}-sm`]: mergedSize === 'small',\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-${variant}`]: enableVariantCls,\n    [`${prefixCls}-in-form-item`]: isFormItemInput\n  }, getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, contextSelect.className, className, rootClassName, cssVarCls, rootCls, hashId);\n  // ===================== Placement =====================\n  const memoPlacement = React.useMemo(() => {\n    if (placement !== undefined) {\n      return placement;\n    }\n    return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n  }, [placement, direction]);\n  // ====================== Warning ======================\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Select');\n    warning.deprecated(!dropdownClassName, 'dropdownClassName', 'popupClassName');\n    warning.deprecated(dropdownMatchSelectWidth === undefined, 'dropdownMatchSelectWidth', 'popupMatchSelectWidth');\n    process.env.NODE_ENV !== \"production\" ? warning(!('showArrow' in props), 'deprecated', '`showArrow` is deprecated which will be removed in next major version. It will be a default behavior, you can hide it by setting `suffixIcon` to null.') : void 0;\n    warning.deprecated(!('bordered' in props), 'bordered', 'variant');\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof maxCount !== 'undefined' && !isMultiple), 'usage', '`maxCount` only works with mode `multiple` or `tags`') : void 0;\n  }\n  // ====================== zIndex =========================\n  const [zIndex] = useZIndex('SelectLike', dropdownStyle === null || dropdownStyle === void 0 ? void 0 : dropdownStyle.zIndex);\n  // ====================== Render =======================\n  return wrapCSSVar(/*#__PURE__*/React.createElement(RcSelect, Object.assign({\n    ref: ref,\n    virtual: virtual,\n    showSearch: contextSelect.showSearch\n  }, selectProps, {\n    style: Object.assign(Object.assign({}, contextSelect.style), style),\n    dropdownMatchSelectWidth: mergedPopupMatchSelectWidth,\n    transitionName: getTransitionName(rootPrefixCls, 'slide-up', transitionName),\n    builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),\n    listHeight: listHeight,\n    listItemHeight: listItemHeight,\n    mode: mode,\n    prefixCls: prefixCls,\n    placement: memoPlacement,\n    direction: direction,\n    prefix: prefix,\n    suffixIcon: suffixIcon,\n    menuItemSelectedIcon: itemIcon,\n    removeIcon: removeIcon,\n    allowClear: mergedAllowClear,\n    notFoundContent: mergedNotFound,\n    className: mergedClassName,\n    getPopupContainer: getPopupContainer || getContextPopupContainer,\n    dropdownClassName: mergedPopupClassName,\n    disabled: mergedDisabled,\n    dropdownStyle: Object.assign(Object.assign({}, dropdownStyle), {\n      zIndex\n    }),\n    maxCount: isMultiple ? maxCount : undefined,\n    tagRender: isMultiple ? tagRender : undefined\n  })));\n};\nif (process.env.NODE_ENV !== 'production') {\n  InternalSelect.displayName = 'Select';\n}\nconst Select = /*#__PURE__*/React.forwardRef(InternalSelect);\n// We don't care debug panel\n/* istanbul ignore next */\nconst PurePanel = genPurePanel(Select, 'dropdownAlign');\nSelect.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;\nSelect.Option = Option;\nSelect.OptGroup = OptGroup;\nSelect._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n  Select.displayName = 'Select';\n}\nexport default Select;","/**\n * Since Select, TreeSelect, Cascader is same Select like component.\n * We just use same hook to handle this logic.\n *\n * If `suffixIcon` is not equal to `null`, always show it.\n */\nexport default function useShowArrow(suffixIcon, showArrow) {\n  return showArrow !== undefined ? showArrow : suffixIcon !== null;\n}","\"use client\";\n\nimport * as React from 'react';\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport { devUseWarning } from '../_util/warning';\nexport default function useIcons(_ref) {\n  let {\n    suffixIcon,\n    clearIcon,\n    menuItemSelectedIcon,\n    removeIcon,\n    loading,\n    multiple,\n    hasFeedback,\n    prefixCls,\n    showSuffixIcon,\n    feedbackIcon,\n    showArrow,\n    componentName\n  } = _ref;\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning(componentName);\n    warning.deprecated(!clearIcon, 'clearIcon', 'allowClear={{ clearIcon: React.ReactNode }}');\n  }\n  // Clear Icon\n  const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n  // Validation Feedback Icon\n  const getSuffixIconNode = arrowIcon => {\n    if (suffixIcon === null && !hasFeedback && !showArrow) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(React.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);\n  };\n  // Arrow item icon\n  let mergedSuffixIcon = null;\n  if (suffixIcon !== undefined) {\n    mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n  } else if (loading) {\n    mergedSuffixIcon = getSuffixIconNode(/*#__PURE__*/React.createElement(LoadingOutlined, {\n      spin: true\n    }));\n  } else {\n    const iconCls = `${prefixCls}-suffix`;\n    mergedSuffixIcon = _ref2 => {\n      let {\n        open,\n        showSearch\n      } = _ref2;\n      if (open && showSearch) {\n        return getSuffixIconNode(/*#__PURE__*/React.createElement(SearchOutlined, {\n          className: iconCls\n        }));\n      }\n      return getSuffixIconNode(/*#__PURE__*/React.createElement(DownOutlined, {\n        className: iconCls\n      }));\n    };\n  }\n  // Checked item icon\n  let mergedItemIcon = null;\n  if (menuItemSelectedIcon !== undefined) {\n    mergedItemIcon = menuItemSelectedIcon;\n  } else if (multiple) {\n    mergedItemIcon = /*#__PURE__*/React.createElement(CheckOutlined, null);\n  } else {\n    mergedItemIcon = null;\n  }\n  let mergedRemoveIcon = null;\n  if (removeIcon !== undefined) {\n    mergedRemoveIcon = removeIcon;\n  } else {\n    mergedRemoveIcon = /*#__PURE__*/React.createElement(CloseOutlined, null);\n  }\n  return {\n    clearIcon: mergedClearIcon,\n    suffixIcon: mergedSuffixIcon,\n    itemIcon: mergedItemIcon,\n    removeIcon: mergedRemoveIcon\n  };\n}","import { unit } from '@ant-design/cssinjs';\nimport { genBasicInputStyle, genInputSmallStyle, initComponentToken, initInputToken } from '../../input/style';\nimport { genBaseOutlinedStyle, genDisabledStyle } from '../../input/style/variants';\nimport { genFocusOutline, genFocusStyle, resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst genPaginationDisabledStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-disabled`]: {\n      '&, &:hover': {\n        cursor: 'not-allowed',\n        [`${componentCls}-item-link`]: {\n          color: token.colorTextDisabled,\n          cursor: 'not-allowed'\n        }\n      },\n      '&:focus-visible': {\n        cursor: 'not-allowed',\n        [`${componentCls}-item-link`]: {\n          color: token.colorTextDisabled,\n          cursor: 'not-allowed'\n        }\n      }\n    },\n    [`&${componentCls}-disabled`]: {\n      cursor: 'not-allowed',\n      [`${componentCls}-item`]: {\n        cursor: 'not-allowed',\n        '&:hover, &:active': {\n          backgroundColor: 'transparent'\n        },\n        a: {\n          color: token.colorTextDisabled,\n          backgroundColor: 'transparent',\n          border: 'none',\n          cursor: 'not-allowed'\n        },\n        '&-active': {\n          borderColor: token.colorBorder,\n          backgroundColor: token.itemActiveBgDisabled,\n          '&:hover, &:active': {\n            backgroundColor: token.itemActiveBgDisabled\n          },\n          a: {\n            color: token.itemActiveColorDisabled\n          }\n        }\n      },\n      [`${componentCls}-item-link`]: {\n        color: token.colorTextDisabled,\n        cursor: 'not-allowed',\n        '&:hover, &:active': {\n          backgroundColor: 'transparent'\n        },\n        [`${componentCls}-simple&`]: {\n          backgroundColor: 'transparent',\n          '&:hover, &:active': {\n            backgroundColor: 'transparent'\n          }\n        }\n      },\n      [`${componentCls}-simple-pager`]: {\n        color: token.colorTextDisabled\n      },\n      [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n        [`${componentCls}-item-link-icon`]: {\n          opacity: 0\n        },\n        [`${componentCls}-item-ellipsis`]: {\n          opacity: 1\n        }\n      }\n    },\n    [`&${componentCls}-simple`]: {\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        [`&${componentCls}-disabled ${componentCls}-item-link`]: {\n          '&:hover, &:active': {\n            backgroundColor: 'transparent'\n          }\n        }\n      }\n    }\n  };\n};\nconst genPaginationMiniStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`&${componentCls}-mini ${componentCls}-total-text, &${componentCls}-mini ${componentCls}-simple-pager`]: {\n      height: token.itemSizeSM,\n      lineHeight: unit(token.itemSizeSM)\n    },\n    [`&${componentCls}-mini ${componentCls}-item`]: {\n      minWidth: token.itemSizeSM,\n      height: token.itemSizeSM,\n      margin: 0,\n      lineHeight: unit(token.calc(token.itemSizeSM).sub(2).equal())\n    },\n    [`&${componentCls}-mini:not(${componentCls}-disabled) ${componentCls}-item:not(${componentCls}-item-active)`]: {\n      backgroundColor: 'transparent',\n      borderColor: 'transparent',\n      '&:hover': {\n        backgroundColor: token.colorBgTextHover\n      },\n      '&:active': {\n        backgroundColor: token.colorBgTextActive\n      }\n    },\n    [`&${componentCls}-mini ${componentCls}-prev, &${componentCls}-mini ${componentCls}-next`]: {\n      minWidth: token.itemSizeSM,\n      height: token.itemSizeSM,\n      margin: 0,\n      lineHeight: unit(token.itemSizeSM)\n    },\n    [`&${componentCls}-mini:not(${componentCls}-disabled)`]: {\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        [`&:hover ${componentCls}-item-link`]: {\n          backgroundColor: token.colorBgTextHover\n        },\n        [`&:active ${componentCls}-item-link`]: {\n          backgroundColor: token.colorBgTextActive\n        },\n        [`&${componentCls}-disabled:hover ${componentCls}-item-link`]: {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    [`\n    &${componentCls}-mini ${componentCls}-prev ${componentCls}-item-link,\n    &${componentCls}-mini ${componentCls}-next ${componentCls}-item-link\n    `]: {\n      backgroundColor: 'transparent',\n      borderColor: 'transparent',\n      '&::after': {\n        height: token.itemSizeSM,\n        lineHeight: unit(token.itemSizeSM)\n      }\n    },\n    [`&${componentCls}-mini ${componentCls}-jump-prev, &${componentCls}-mini ${componentCls}-jump-next`]: {\n      height: token.itemSizeSM,\n      marginInlineEnd: 0,\n      lineHeight: unit(token.itemSizeSM)\n    },\n    [`&${componentCls}-mini ${componentCls}-options`]: {\n      marginInlineStart: token.paginationMiniOptionsMarginInlineStart,\n      '&-size-changer': {\n        top: token.miniOptionsSizeChangerTop\n      },\n      '&-quick-jumper': {\n        height: token.itemSizeSM,\n        lineHeight: unit(token.itemSizeSM),\n        input: Object.assign(Object.assign({}, genInputSmallStyle(token)), {\n          width: token.paginationMiniQuickJumperInputWidth,\n          height: token.controlHeightSM\n        })\n      }\n    }\n  };\n};\nconst genPaginationSimpleStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`\n    &${componentCls}-simple ${componentCls}-prev,\n    &${componentCls}-simple ${componentCls}-next\n    `]: {\n      height: token.itemSizeSM,\n      lineHeight: unit(token.itemSizeSM),\n      verticalAlign: 'top',\n      [`${componentCls}-item-link`]: {\n        height: token.itemSizeSM,\n        backgroundColor: 'transparent',\n        border: 0,\n        '&:hover': {\n          backgroundColor: token.colorBgTextHover\n        },\n        '&:active': {\n          backgroundColor: token.colorBgTextActive\n        },\n        '&::after': {\n          height: token.itemSizeSM,\n          lineHeight: unit(token.itemSizeSM)\n        }\n      }\n    },\n    [`&${componentCls}-simple ${componentCls}-simple-pager`]: {\n      display: 'inline-block',\n      height: token.itemSizeSM,\n      marginInlineEnd: token.marginXS,\n      input: {\n        boxSizing: 'border-box',\n        height: '100%',\n        padding: `0 ${unit(token.paginationItemPaddingInline)}`,\n        textAlign: 'center',\n        backgroundColor: token.itemInputBg,\n        border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n        borderRadius: token.borderRadius,\n        outline: 'none',\n        transition: `border-color ${token.motionDurationMid}`,\n        color: 'inherit',\n        '&:hover': {\n          borderColor: token.colorPrimary\n        },\n        '&:focus': {\n          borderColor: token.colorPrimaryHover,\n          boxShadow: `${unit(token.inputOutlineOffset)} 0 ${unit(token.controlOutlineWidth)} ${token.controlOutline}`\n        },\n        '&[disabled]': {\n          color: token.colorTextDisabled,\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n          cursor: 'not-allowed'\n        }\n      }\n    }\n  };\n};\nconst genPaginationJumpStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n      outline: 0,\n      [`${componentCls}-item-container`]: {\n        position: 'relative',\n        [`${componentCls}-item-link-icon`]: {\n          color: token.colorPrimary,\n          fontSize: token.fontSizeSM,\n          opacity: 0,\n          transition: `all ${token.motionDurationMid}`,\n          '&-svg': {\n            top: 0,\n            insetInlineEnd: 0,\n            bottom: 0,\n            insetInlineStart: 0,\n            margin: 'auto'\n          }\n        },\n        [`${componentCls}-item-ellipsis`]: {\n          position: 'absolute',\n          top: 0,\n          insetInlineEnd: 0,\n          bottom: 0,\n          insetInlineStart: 0,\n          display: 'block',\n          margin: 'auto',\n          color: token.colorTextDisabled,\n          letterSpacing: token.paginationEllipsisLetterSpacing,\n          textAlign: 'center',\n          textIndent: token.paginationEllipsisTextIndent,\n          opacity: 1,\n          transition: `all ${token.motionDurationMid}`\n        }\n      },\n      '&:hover': {\n        [`${componentCls}-item-link-icon`]: {\n          opacity: 1\n        },\n        [`${componentCls}-item-ellipsis`]: {\n          opacity: 0\n        }\n      }\n    },\n    [`\n    ${componentCls}-prev,\n    ${componentCls}-jump-prev,\n    ${componentCls}-jump-next\n    `]: {\n      marginInlineEnd: token.marginXS\n    },\n    [`\n    ${componentCls}-prev,\n    ${componentCls}-next,\n    ${componentCls}-jump-prev,\n    ${componentCls}-jump-next\n    `]: {\n      display: 'inline-block',\n      minWidth: token.itemSize,\n      height: token.itemSize,\n      color: token.colorText,\n      fontFamily: token.fontFamily,\n      lineHeight: unit(token.itemSize),\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      listStyle: 'none',\n      borderRadius: token.borderRadius,\n      cursor: 'pointer',\n      transition: `all ${token.motionDurationMid}`\n    },\n    [`${componentCls}-prev, ${componentCls}-next`]: {\n      outline: 0,\n      button: {\n        color: token.colorText,\n        cursor: 'pointer',\n        userSelect: 'none'\n      },\n      [`${componentCls}-item-link`]: {\n        display: 'block',\n        width: '100%',\n        height: '100%',\n        padding: 0,\n        fontSize: token.fontSizeSM,\n        textAlign: 'center',\n        backgroundColor: 'transparent',\n        border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n        borderRadius: token.borderRadius,\n        outline: 'none',\n        transition: `all ${token.motionDurationMid}`\n      },\n      [`&:hover ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgTextHover\n      },\n      [`&:active ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgTextActive\n      },\n      [`&${componentCls}-disabled:hover`]: {\n        [`${componentCls}-item-link`]: {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    [`${componentCls}-slash`]: {\n      marginInlineEnd: token.paginationSlashMarginInlineEnd,\n      marginInlineStart: token.paginationSlashMarginInlineStart\n    },\n    [`${componentCls}-options`]: {\n      display: 'inline-block',\n      marginInlineStart: token.margin,\n      verticalAlign: 'middle',\n      '&-size-changer': {\n        display: 'inline-block',\n        width: 'auto'\n      },\n      '&-quick-jumper': {\n        display: 'inline-block',\n        height: token.controlHeight,\n        marginInlineStart: token.marginXS,\n        lineHeight: unit(token.controlHeight),\n        verticalAlign: 'top',\n        input: Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token)), genBaseOutlinedStyle(token, {\n          borderColor: token.colorBorder,\n          hoverBorderColor: token.colorPrimaryHover,\n          activeBorderColor: token.colorPrimary,\n          activeShadow: token.activeShadow\n        })), {\n          '&[disabled]': Object.assign({}, genDisabledStyle(token)),\n          width: token.calc(token.controlHeightLG).mul(1.25).equal(),\n          height: token.controlHeight,\n          boxSizing: 'border-box',\n          margin: 0,\n          marginInlineStart: token.marginXS,\n          marginInlineEnd: token.marginXS\n        })\n      }\n    }\n  };\n};\nconst genPaginationItemStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}-item`]: {\n      display: 'inline-block',\n      minWidth: token.itemSize,\n      height: token.itemSize,\n      marginInlineEnd: token.marginXS,\n      fontFamily: token.fontFamily,\n      lineHeight: unit(token.calc(token.itemSize).sub(2).equal()),\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      listStyle: 'none',\n      backgroundColor: token.itemBg,\n      border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n      borderRadius: token.borderRadius,\n      outline: 0,\n      cursor: 'pointer',\n      userSelect: 'none',\n      a: {\n        display: 'block',\n        padding: `0 ${unit(token.paginationItemPaddingInline)}`,\n        color: token.colorText,\n        '&:hover': {\n          textDecoration: 'none'\n        }\n      },\n      [`&:not(${componentCls}-item-active)`]: {\n        '&:hover': {\n          transition: `all ${token.motionDurationMid}`,\n          backgroundColor: token.colorBgTextHover\n        },\n        '&:active': {\n          backgroundColor: token.colorBgTextActive\n        }\n      },\n      '&-active': {\n        fontWeight: token.fontWeightStrong,\n        backgroundColor: token.itemActiveBg,\n        borderColor: token.colorPrimary,\n        a: {\n          color: token.colorPrimary\n        },\n        '&:hover': {\n          borderColor: token.colorPrimaryHover\n        },\n        '&:hover a': {\n          color: token.colorPrimaryHover\n        }\n      }\n    }\n  };\n};\nconst genPaginationStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token)), {\n      display: 'flex',\n      '&-start': {\n        justifyContent: 'start'\n      },\n      '&-center': {\n        justifyContent: 'center'\n      },\n      '&-end': {\n        justifyContent: 'end'\n      },\n      'ul, ol': {\n        margin: 0,\n        padding: 0,\n        listStyle: 'none'\n      },\n      '&::after': {\n        display: 'block',\n        clear: 'both',\n        height: 0,\n        overflow: 'hidden',\n        visibility: 'hidden',\n        content: '\"\"'\n      },\n      [`${componentCls}-total-text`]: {\n        display: 'inline-block',\n        height: token.itemSize,\n        marginInlineEnd: token.marginXS,\n        lineHeight: unit(token.calc(token.itemSize).sub(2).equal()),\n        verticalAlign: 'middle'\n      }\n    }), genPaginationItemStyle(token)), genPaginationJumpStyle(token)), genPaginationSimpleStyle(token)), genPaginationMiniStyle(token)), genPaginationDisabledStyle(token)), {\n      // media query style\n      [`@media only screen and (max-width: ${token.screenLG}px)`]: {\n        [`${componentCls}-item`]: {\n          '&-after-jump-prev, &-before-jump-next': {\n            display: 'none'\n          }\n        }\n      },\n      [`@media only screen and (max-width: ${token.screenSM}px)`]: {\n        [`${componentCls}-options`]: {\n          display: 'none'\n        }\n      }\n    }),\n    // rtl style\n    [`&${token.componentCls}-rtl`]: {\n      direction: 'rtl'\n    }\n  };\n};\nconst genPaginationFocusStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}:not(${componentCls}-disabled)`]: {\n      [`${componentCls}-item`]: Object.assign({}, genFocusStyle(token)),\n      [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {\n        '&:focus-visible': Object.assign({\n          [`${componentCls}-item-link-icon`]: {\n            opacity: 1\n          },\n          [`${componentCls}-item-ellipsis`]: {\n            opacity: 0\n          }\n        }, genFocusOutline(token))\n      },\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        [`&:focus-visible ${componentCls}-item-link`]: Object.assign({}, genFocusOutline(token))\n      }\n    }\n  };\n};\nexport const prepareComponentToken = token => Object.assign({\n  itemBg: token.colorBgContainer,\n  itemSize: token.controlHeight,\n  itemSizeSM: token.controlHeightSM,\n  itemActiveBg: token.colorBgContainer,\n  itemLinkBg: token.colorBgContainer,\n  itemActiveColorDisabled: token.colorTextDisabled,\n  itemActiveBgDisabled: token.controlItemBgActiveDisabled,\n  itemInputBg: token.colorBgContainer,\n  miniOptionsSizeChangerTop: 0\n}, initComponentToken(token));\nexport const prepareToken = token => mergeToken(token, {\n  inputOutlineOffset: 0,\n  paginationMiniOptionsMarginInlineStart: token.calc(token.marginXXS).div(2).equal(),\n  paginationMiniQuickJumperInputWidth: token.calc(token.controlHeightLG).mul(1.1).equal(),\n  paginationItemPaddingInline: token.calc(token.marginXXS).mul(1.5).equal(),\n  paginationEllipsisLetterSpacing: token.calc(token.marginXXS).div(2).equal(),\n  paginationSlashMarginInlineStart: token.marginSM,\n  paginationSlashMarginInlineEnd: token.marginSM,\n  paginationEllipsisTextIndent: '0.13em' // magic for ui experience\n}, initInputToken(token));\n// ============================== Export ==============================\nexport default genStyleHooks('Pagination', token => {\n  const paginationToken = prepareToken(token);\n  return [genPaginationStyle(paginationToken), genPaginationFocusStyle(paginationToken)];\n}, prepareComponentToken);","import { unit } from '@ant-design/cssinjs';\nimport { prepareComponentToken, prepareToken } from '.';\nimport { genSubStyleComponent } from '../../theme/internal';\nconst genBorderedStyle = token => {\n  const {\n    componentCls\n  } = token;\n  return {\n    [`${componentCls}${componentCls}-bordered${componentCls}-disabled:not(${componentCls}-mini)`]: {\n      '&, &:hover': {\n        [`${componentCls}-item-link`]: {\n          borderColor: token.colorBorder\n        }\n      },\n      '&:focus-visible': {\n        [`${componentCls}-item-link`]: {\n          borderColor: token.colorBorder\n        }\n      },\n      [`${componentCls}-item, ${componentCls}-item-link`]: {\n        backgroundColor: token.colorBgContainerDisabled,\n        borderColor: token.colorBorder,\n        [`&:hover:not(${componentCls}-item-active)`]: {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n          a: {\n            color: token.colorTextDisabled\n          }\n        },\n        [`&${componentCls}-item-active`]: {\n          backgroundColor: token.itemActiveBgDisabled\n        }\n      },\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        '&:hover button': {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder,\n          color: token.colorTextDisabled\n        },\n        [`${componentCls}-item-link`]: {\n          backgroundColor: token.colorBgContainerDisabled,\n          borderColor: token.colorBorder\n        }\n      }\n    },\n    [`${componentCls}${componentCls}-bordered:not(${componentCls}-mini)`]: {\n      [`${componentCls}-prev, ${componentCls}-next`]: {\n        '&:hover button': {\n          borderColor: token.colorPrimaryHover,\n          backgroundColor: token.itemBg\n        },\n        [`${componentCls}-item-link`]: {\n          backgroundColor: token.itemLinkBg,\n          borderColor: token.colorBorder\n        },\n        [`&:hover ${componentCls}-item-link`]: {\n          borderColor: token.colorPrimary,\n          backgroundColor: token.itemBg,\n          color: token.colorPrimary\n        },\n        [`&${componentCls}-disabled`]: {\n          [`${componentCls}-item-link`]: {\n            borderColor: token.colorBorder,\n            color: token.colorTextDisabled\n          }\n        }\n      },\n      [`${componentCls}-item`]: {\n        backgroundColor: token.itemBg,\n        border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n        [`&:hover:not(${componentCls}-item-active)`]: {\n          borderColor: token.colorPrimary,\n          backgroundColor: token.itemBg,\n          a: {\n            color: token.colorPrimary\n          }\n        },\n        '&-active': {\n          borderColor: token.colorPrimary\n        }\n      }\n    }\n  };\n};\nexport default genSubStyleComponent(['Pagination', 'bordered'], token => {\n  const paginationToken = prepareToken(token);\n  return [genBorderedStyle(paginationToken)];\n}, prepareComponentToken);","import { useMemo } from 'react';\nexport default function useShowSizeChanger(showSizeChanger) {\n  return useMemo(() => {\n    if (typeof showSizeChanger === 'boolean') {\n      return [showSizeChanger, {}];\n    }\n    if (showSizeChanger && typeof showSizeChanger === 'object') {\n      return [true, showSizeChanger];\n    }\n    return [undefined, undefined];\n  }, [showSizeChanger]);\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport useSize from '../config-provider/hooks/useSize';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport { useLocale } from '../locale';\nimport Select from '../select';\nimport { useToken } from '../theme/internal';\nimport useStyle from './style';\nimport BorderedStyle from './style/bordered';\nimport useShowSizeChanger from './useShowSizeChanger';\nconst Pagination = props => {\n  const {\n      align,\n      prefixCls: customizePrefixCls,\n      selectPrefixCls: customizeSelectPrefixCls,\n      className,\n      rootClassName,\n      style,\n      size: customizeSize,\n      locale: customLocale,\n      responsive,\n      showSizeChanger,\n      selectComponentClass,\n      pageSizeOptions\n    } = props,\n    restProps = __rest(props, [\"align\", \"prefixCls\", \"selectPrefixCls\", \"className\", \"rootClassName\", \"style\", \"size\", \"locale\", \"responsive\", \"showSizeChanger\", \"selectComponentClass\", \"pageSizeOptions\"]);\n  const {\n    xs\n  } = useBreakpoint(responsive);\n  const [, token] = useToken();\n  const {\n    getPrefixCls,\n    direction,\n    showSizeChanger: contextShowSizeChangerConfig,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('pagination');\n  const prefixCls = getPrefixCls('pagination', customizePrefixCls);\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  // ============================== Size ==============================\n  const mergedSize = useSize(customizeSize);\n  const isSmall = mergedSize === 'small' || !!(xs && !mergedSize && responsive);\n  // ============================= Locale =============================\n  const [contextLocale] = useLocale('Pagination', enUS);\n  const locale = Object.assign(Object.assign({}, contextLocale), customLocale);\n  // ========================== Size Changer ==========================\n  // Merge the props showSizeChanger\n  const [propShowSizeChanger, propSizeChangerSelectProps] = useShowSizeChanger(showSizeChanger);\n  const [contextShowSizeChanger, contextSizeChangerSelectProps] = useShowSizeChanger(contextShowSizeChangerConfig);\n  const mergedShowSizeChanger = propShowSizeChanger !== null && propShowSizeChanger !== void 0 ? propShowSizeChanger : contextShowSizeChanger;\n  const mergedShowSizeChangerSelectProps = propSizeChangerSelectProps !== null && propSizeChangerSelectProps !== void 0 ? propSizeChangerSelectProps : contextSizeChangerSelectProps;\n  const SizeChanger = selectComponentClass || Select;\n  // Generate options\n  const mergedPageSizeOptions = React.useMemo(() => {\n    return pageSizeOptions ? pageSizeOptions.map(option => Number(option)) : undefined;\n  }, [pageSizeOptions]);\n  // Render size changer\n  const sizeChangerRender = info => {\n    var _a;\n    const {\n      disabled,\n      size: pageSize,\n      onSizeChange,\n      'aria-label': ariaLabel,\n      className: sizeChangerClassName,\n      options\n    } = info;\n    const {\n      className: propSizeChangerClassName,\n      onChange: propSizeChangerOnChange\n    } = mergedShowSizeChangerSelectProps || {};\n    // Origin Select is using Select.Option,\n    // So it make the option value must be string\n    // Just for compatible\n    const selectedValue = (_a = options.find(option => String(option.value) === String(pageSize))) === null || _a === void 0 ? void 0 : _a.value;\n    return /*#__PURE__*/React.createElement(SizeChanger, Object.assign({\n      disabled: disabled,\n      showSearch: true,\n      popupMatchSelectWidth: false,\n      getPopupContainer: triggerNode => triggerNode.parentNode,\n      \"aria-label\": ariaLabel,\n      options: options\n    }, mergedShowSizeChangerSelectProps, {\n      value: selectedValue,\n      onChange: (nextSize, option) => {\n        onSizeChange === null || onSizeChange === void 0 ? void 0 : onSizeChange(nextSize);\n        propSizeChangerOnChange === null || propSizeChangerOnChange === void 0 ? void 0 : propSizeChangerOnChange(nextSize, option);\n      },\n      size: isSmall ? 'small' : 'middle',\n      className: classNames(sizeChangerClassName, propSizeChangerClassName)\n    }));\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Pagination');\n    process.env.NODE_ENV !== \"production\" ? warning(!selectComponentClass, 'usage', '`selectComponentClass` is not official api which will be removed.') : void 0;\n  }\n  // ============================= Render =============================\n  const iconsProps = React.useMemo(() => {\n    const ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n      className: `${prefixCls}-item-ellipsis`\n    }, \"\\u2022\\u2022\\u2022\");\n    const prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n      className: `${prefixCls}-item-link`,\n      type: \"button\",\n      tabIndex: -1\n    }, direction === 'rtl' ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null));\n    const nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n      className: `${prefixCls}-item-link`,\n      type: \"button\",\n      tabIndex: -1\n    }, direction === 'rtl' ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null));\n    const jumpPrevIcon =\n    /*#__PURE__*/\n    // biome-ignore lint/a11y/useValidAnchor: it is hard to refactor\n    React.createElement(\"a\", {\n      className: `${prefixCls}-item-link`\n    }, /*#__PURE__*/React.createElement(\"div\", {\n      className: `${prefixCls}-item-container`\n    }, direction === 'rtl' ? (/*#__PURE__*/React.createElement(DoubleRightOutlined, {\n      className: `${prefixCls}-item-link-icon`\n    })) : (/*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n      className: `${prefixCls}-item-link-icon`\n    })), ellipsis));\n    const jumpNextIcon =\n    /*#__PURE__*/\n    // biome-ignore lint/a11y/useValidAnchor: it is hard to refactor\n    React.createElement(\"a\", {\n      className: `${prefixCls}-item-link`\n    }, /*#__PURE__*/React.createElement(\"div\", {\n      className: `${prefixCls}-item-container`\n    }, direction === 'rtl' ? (/*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n      className: `${prefixCls}-item-link-icon`\n    })) : (/*#__PURE__*/React.createElement(DoubleRightOutlined, {\n      className: `${prefixCls}-item-link-icon`\n    })), ellipsis));\n    return {\n      prevIcon,\n      nextIcon,\n      jumpPrevIcon,\n      jumpNextIcon\n    };\n  }, [direction, prefixCls]);\n  const selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n  const extendedClassName = classNames({\n    [`${prefixCls}-${align}`]: !!align,\n    [`${prefixCls}-mini`]: isSmall,\n    [`${prefixCls}-rtl`]: direction === 'rtl',\n    [`${prefixCls}-bordered`]: token.wireframe\n  }, contextClassName, className, rootClassName, hashId, cssVarCls);\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(React.Fragment, null, token.wireframe && /*#__PURE__*/React.createElement(BorderedStyle, {\n    prefixCls: prefixCls\n  }), /*#__PURE__*/React.createElement(RcPagination, Object.assign({}, iconsProps, restProps, {\n    style: mergedStyle,\n    prefixCls: prefixCls,\n    selectPrefixCls: selectPrefixCls,\n    className: extendedClassName,\n    locale: locale,\n    pageSizeOptions: mergedPageSizeOptions,\n    showSizeChanger: mergedShowSizeChanger,\n    sizeChangerRender: sizeChangerRender\n  }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n  Pagination.displayName = 'Pagination';\n}\nexport default Pagination;","\"use client\";\n\nimport Pagination from './Pagination';\nexport default Pagination;","/* eslint-disable no-undefined */\n\nimport throttle from './throttle.js';\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay -               A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback -          A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n *                                        to `callback` when the debounced-function is executed.\n * @param {object} [options] -           An object to configure options.\n * @param {boolean} [options.atBegin] -  Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n *                                        after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n *                                        (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nexport default function (delay, callback, options) {\n\tconst { atBegin = false } = options || {};\n\treturn throttle(delay, callback, { debounceMode: atBegin !== false });\n}\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay -                  A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n *                                            are most useful.\n * @param {Function} callback -               A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n *                                            as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] -              An object to configure options.\n * @param {boolean} [options.noTrailing] -   Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n *                                            while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n *                                            one final time after the last throttled-function call. (After the throttled-function has not been called for\n *                                            `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] -   Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n *                                            immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n *                                            callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n *                                            false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nexport default function (delay, callback, options) {\n\tconst {\n\t\tnoTrailing = false,\n\t\tnoLeading = false,\n\t\tdebounceMode = undefined\n\t} = options || {};\n\t/*\n\t * After wrapper has stopped being called, this timeout ensures that\n\t * `callback` is executed at the proper times in `throttle` and `end`\n\t * debounce modes.\n\t */\n\tlet timeoutID;\n\tlet cancelled = false;\n\n\t// Keep track of the last time `callback` was executed.\n\tlet lastExec = 0;\n\n\t// Function to clear existing timeout\n\tfunction clearExistingTimeout() {\n\t\tif (timeoutID) {\n\t\t\tclearTimeout(timeoutID);\n\t\t}\n\t}\n\n\t// Function to cancel next exec\n\tfunction cancel(options) {\n\t\tconst { upcomingOnly = false } = options || {};\n\t\tclearExistingTimeout();\n\t\tcancelled = !upcomingOnly;\n\t}\n\n\t/*\n\t * The `wrapper` function encapsulates all of the throttling / debouncing\n\t * functionality and when executed will limit the rate at which `callback`\n\t * is executed.\n\t */\n\tfunction wrapper(...arguments_) {\n\t\tlet self = this;\n\t\tlet elapsed = Date.now() - lastExec;\n\n\t\tif (cancelled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Execute `callback` and update the `lastExec` timestamp.\n\t\tfunction exec() {\n\t\t\tlastExec = Date.now();\n\t\t\tcallback.apply(self, arguments_);\n\t\t}\n\n\t\t/*\n\t\t * If `debounceMode` is true (at begin) this is used to clear the flag\n\t\t * to allow future `callback` executions.\n\t\t */\n\t\tfunction clear() {\n\t\t\ttimeoutID = undefined;\n\t\t}\n\n\t\tif (!noLeading && debounceMode && !timeoutID) {\n\t\t\t/*\n\t\t\t * Since `wrapper` is being called for the first time and\n\t\t\t * `debounceMode` is true (at begin), execute `callback`\n\t\t\t * and noLeading != true.\n\t\t\t */\n\t\t\texec();\n\t\t}\n\n\t\tclearExistingTimeout();\n\n\t\tif (debounceMode === undefined && elapsed > delay) {\n\t\t\tif (noLeading) {\n\t\t\t\t/*\n\t\t\t\t * In throttle mode with noLeading, if `delay` time has\n\t\t\t\t * been exceeded, update `lastExec` and schedule `callback`\n\t\t\t\t * to execute after `delay` ms.\n\t\t\t\t */\n\t\t\t\tlastExec = Date.now();\n\t\t\t\tif (!noTrailing) {\n\t\t\t\t\ttimeoutID = setTimeout(debounceMode ? clear : exec, delay);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/*\n\t\t\t\t * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n\t\t\t\t * `callback`.\n\t\t\t\t */\n\t\t\t\texec();\n\t\t\t}\n\t\t} else if (noTrailing !== true) {\n\t\t\t/*\n\t\t\t * In trailing throttle mode, since `delay` time has not been\n\t\t\t * exceeded, schedule `callback` to execute `delay` ms after most\n\t\t\t * recent execution.\n\t\t\t *\n\t\t\t * If `debounceMode` is true (at begin), schedule `clear` to execute\n\t\t\t * after `delay` ms.\n\t\t\t *\n\t\t\t * If `debounceMode` is false (at end), schedule `callback` to\n\t\t\t * execute after `delay` ms.\n\t\t\t */\n\t\t\ttimeoutID = setTimeout(\n\t\t\t\tdebounceMode ? clear : exec,\n\t\t\t\tdebounceMode === undefined ? delay - elapsed : delay\n\t\t\t);\n\t\t}\n\t}\n\n\twrapper.cancel = cancel;\n\n\t// Return the wrapper function.\n\treturn wrapper;\n}\n","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nconst viewSize = 100;\nconst borderWidth = viewSize / 5;\nconst radius = viewSize / 2 - borderWidth / 2;\nconst circumference = radius * 2 * Math.PI;\nconst position = 50;\nconst CustomCircle = props => {\n  const {\n    dotClassName,\n    style,\n    hasCircleCls\n  } = props;\n  return /*#__PURE__*/React.createElement(\"circle\", {\n    className: classNames(`${dotClassName}-circle`, {\n      [`${dotClassName}-circle-bg`]: hasCircleCls\n    }),\n    r: radius,\n    cx: position,\n    cy: position,\n    strokeWidth: borderWidth,\n    style: style\n  });\n};\nconst Progress = _ref => {\n  let {\n    percent,\n    prefixCls\n  } = _ref;\n  const dotClassName = `${prefixCls}-dot`;\n  const holderClassName = `${dotClassName}-holder`;\n  const hideClassName = `${holderClassName}-hidden`;\n  const [render, setRender] = React.useState(false);\n  // ==================== Visible =====================\n  useLayoutEffect(() => {\n    if (percent !== 0) {\n      setRender(true);\n    }\n  }, [percent !== 0]);\n  // ==================== Progress ====================\n  const safePtg = Math.max(Math.min(percent, 100), 0);\n  // ===================== Render =====================\n  if (!render) {\n    return null;\n  }\n  const circleStyle = {\n    strokeDashoffset: `${circumference / 4}`,\n    strokeDasharray: `${circumference * safePtg / 100} ${circumference * (100 - safePtg) / 100}`\n  };\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(holderClassName, `${dotClassName}-progress`, safePtg <= 0 && hideClassName)\n  }, /*#__PURE__*/React.createElement(\"svg\", {\n    viewBox: `0 0 ${viewSize} ${viewSize}`,\n    // biome-ignore lint/a11y/noNoninteractiveElementToInteractiveRole: progressbar could be readonly\n    role: \"progressbar\",\n    \"aria-valuemin\": 0,\n    \"aria-valuemax\": 100,\n    \"aria-valuenow\": safePtg\n  }, /*#__PURE__*/React.createElement(CustomCircle, {\n    dotClassName: dotClassName,\n    hasCircleCls: true\n  }), /*#__PURE__*/React.createElement(CustomCircle, {\n    dotClassName: dotClassName,\n    style: circleStyle\n  })));\n};\nexport default Progress;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Progress from './Progress';\nexport default function Looper(props) {\n  const {\n    prefixCls,\n    percent = 0\n  } = props;\n  const dotClassName = `${prefixCls}-dot`;\n  const holderClassName = `${dotClassName}-holder`;\n  const hideClassName = `${holderClassName}-hidden`;\n  // ===================== Render =====================\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(holderClassName, percent > 0 && hideClassName)\n  }, /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(dotClassName, `${prefixCls}-dot-spin`)\n  }, [1, 2, 3, 4].map(i => (/*#__PURE__*/React.createElement(\"i\", {\n    className: `${prefixCls}-dot-item`,\n    key: i\n  }))))), /*#__PURE__*/React.createElement(Progress, {\n    prefixCls: prefixCls,\n    percent: percent\n  }));\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { cloneElement } from '../../_util/reactNode';\nimport Looper from './Looper';\nexport default function Indicator(props) {\n  const {\n    prefixCls,\n    indicator,\n    percent\n  } = props;\n  const dotClassName = `${prefixCls}-dot`;\n  if (indicator && /*#__PURE__*/React.isValidElement(indicator)) {\n    return cloneElement(indicator, {\n      className: classNames(indicator.props.className, dotClassName),\n      percent\n    });\n  }\n  return /*#__PURE__*/React.createElement(Looper, {\n    prefixCls: prefixCls,\n    percent: percent\n  });\n}","import { Keyframes } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst antSpinMove = new Keyframes('antSpinMove', {\n  to: {\n    opacity: 1\n  }\n});\nconst antRotate = new Keyframes('antRotate', {\n  to: {\n    transform: 'rotate(405deg)'\n  }\n});\nconst genSpinStyle = token => {\n  const {\n    componentCls,\n    calc\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'absolute',\n      display: 'none',\n      color: token.colorPrimary,\n      fontSize: 0,\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      opacity: 0,\n      transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOutCirc}`,\n      '&-spinning': {\n        position: 'relative',\n        display: 'inline-block',\n        opacity: 1\n      },\n      [`${componentCls}-text`]: {\n        fontSize: token.fontSize,\n        paddingTop: calc(calc(token.dotSize).sub(token.fontSize)).div(2).add(2).equal()\n      },\n      '&-fullscreen': {\n        position: 'fixed',\n        width: '100vw',\n        height: '100vh',\n        backgroundColor: token.colorBgMask,\n        zIndex: token.zIndexPopupBase,\n        inset: 0,\n        display: 'flex',\n        alignItems: 'center',\n        flexDirection: 'column',\n        justifyContent: 'center',\n        opacity: 0,\n        visibility: 'hidden',\n        transition: `all ${token.motionDurationMid}`,\n        '&-show': {\n          opacity: 1,\n          visibility: 'visible'\n        },\n        [componentCls]: {\n          [`${componentCls}-dot-holder`]: {\n            color: token.colorWhite\n          },\n          [`${componentCls}-text`]: {\n            color: token.colorTextLightSolid\n          }\n        }\n      },\n      '&-nested-loading': {\n        position: 'relative',\n        [`> div > ${componentCls}`]: {\n          position: 'absolute',\n          top: 0,\n          insetInlineStart: 0,\n          zIndex: 4,\n          display: 'block',\n          width: '100%',\n          height: '100%',\n          maxHeight: token.contentHeight,\n          [`${componentCls}-dot`]: {\n            position: 'absolute',\n            top: '50%',\n            insetInlineStart: '50%',\n            margin: calc(token.dotSize).mul(-1).div(2).equal()\n          },\n          [`${componentCls}-text`]: {\n            position: 'absolute',\n            top: '50%',\n            width: '100%',\n            textShadow: `0 1px 2px ${token.colorBgContainer}` // FIXME: shadow\n          },\n          [`&${componentCls}-show-text ${componentCls}-dot`]: {\n            marginTop: calc(token.dotSize).div(2).mul(-1).sub(10).equal()\n          },\n          '&-sm': {\n            [`${componentCls}-dot`]: {\n              margin: calc(token.dotSizeSM).mul(-1).div(2).equal()\n            },\n            [`${componentCls}-text`]: {\n              paddingTop: calc(calc(token.dotSizeSM).sub(token.fontSize)).div(2).add(2).equal()\n            },\n            [`&${componentCls}-show-text ${componentCls}-dot`]: {\n              marginTop: calc(token.dotSizeSM).div(2).mul(-1).sub(10).equal()\n            }\n          },\n          '&-lg': {\n            [`${componentCls}-dot`]: {\n              margin: calc(token.dotSizeLG).mul(-1).div(2).equal()\n            },\n            [`${componentCls}-text`]: {\n              paddingTop: calc(calc(token.dotSizeLG).sub(token.fontSize)).div(2).add(2).equal()\n            },\n            [`&${componentCls}-show-text ${componentCls}-dot`]: {\n              marginTop: calc(token.dotSizeLG).div(2).mul(-1).sub(10).equal()\n            }\n          }\n        },\n        [`${componentCls}-container`]: {\n          position: 'relative',\n          transition: `opacity ${token.motionDurationSlow}`,\n          '&::after': {\n            position: 'absolute',\n            top: 0,\n            insetInlineEnd: 0,\n            bottom: 0,\n            insetInlineStart: 0,\n            zIndex: 10,\n            width: '100%',\n            height: '100%',\n            background: token.colorBgContainer,\n            opacity: 0,\n            transition: `all ${token.motionDurationSlow}`,\n            content: '\"\"',\n            pointerEvents: 'none'\n          }\n        },\n        [`${componentCls}-blur`]: {\n          clear: 'both',\n          opacity: 0.5,\n          userSelect: 'none',\n          pointerEvents: 'none',\n          '&::after': {\n            opacity: 0.4,\n            pointerEvents: 'auto'\n          }\n        }\n      },\n      // tip\n      // ------------------------------\n      '&-tip': {\n        color: token.spinDotDefault\n      },\n      // holder\n      // ------------------------------\n      [`${componentCls}-dot-holder`]: {\n        width: '1em',\n        height: '1em',\n        fontSize: token.dotSize,\n        display: 'inline-block',\n        transition: `transform ${token.motionDurationSlow} ease, opacity ${token.motionDurationSlow} ease`,\n        transformOrigin: '50% 50%',\n        lineHeight: 1,\n        color: token.colorPrimary,\n        '&-hidden': {\n          transform: 'scale(0.3)',\n          opacity: 0\n        }\n      },\n      // progress\n      // ------------------------------\n      [`${componentCls}-dot-progress`]: {\n        position: 'absolute',\n        inset: 0\n      },\n      // dots\n      // ------------------------------\n      [`${componentCls}-dot`]: {\n        position: 'relative',\n        display: 'inline-block',\n        fontSize: token.dotSize,\n        width: '1em',\n        height: '1em',\n        '&-item': {\n          position: 'absolute',\n          display: 'block',\n          width: calc(token.dotSize).sub(calc(token.marginXXS).div(2)).div(2).equal(),\n          height: calc(token.dotSize).sub(calc(token.marginXXS).div(2)).div(2).equal(),\n          background: 'currentColor',\n          borderRadius: '100%',\n          transform: 'scale(0.75)',\n          transformOrigin: '50% 50%',\n          opacity: 0.3,\n          animationName: antSpinMove,\n          animationDuration: '1s',\n          animationIterationCount: 'infinite',\n          animationTimingFunction: 'linear',\n          animationDirection: 'alternate',\n          '&:nth-child(1)': {\n            top: 0,\n            insetInlineStart: 0,\n            animationDelay: '0s'\n          },\n          '&:nth-child(2)': {\n            top: 0,\n            insetInlineEnd: 0,\n            animationDelay: '0.4s'\n          },\n          '&:nth-child(3)': {\n            insetInlineEnd: 0,\n            bottom: 0,\n            animationDelay: '0.8s'\n          },\n          '&:nth-child(4)': {\n            bottom: 0,\n            insetInlineStart: 0,\n            animationDelay: '1.2s'\n          }\n        },\n        '&-spin': {\n          transform: 'rotate(45deg)',\n          animationName: antRotate,\n          animationDuration: '1.2s',\n          animationIterationCount: 'infinite',\n          animationTimingFunction: 'linear'\n        },\n        '&-circle': {\n          strokeLinecap: 'round',\n          transition: ['stroke-dashoffset', 'stroke-dasharray', 'stroke', 'stroke-width', 'opacity'].map(item => `${item} ${token.motionDurationSlow} ease`).join(','),\n          fillOpacity: 0,\n          stroke: 'currentcolor'\n        },\n        '&-circle-bg': {\n          stroke: token.colorFillSecondary\n        }\n      },\n      // small\n      [`&-sm ${componentCls}-dot`]: {\n        '&, &-holder': {\n          fontSize: token.dotSizeSM\n        }\n      },\n      [`&-sm ${componentCls}-dot-holder`]: {\n        i: {\n          width: calc(calc(token.dotSizeSM).sub(calc(token.marginXXS).div(2))).div(2).equal(),\n          height: calc(calc(token.dotSizeSM).sub(calc(token.marginXXS).div(2))).div(2).equal()\n        }\n      },\n      // large\n      [`&-lg ${componentCls}-dot`]: {\n        '&, &-holder': {\n          fontSize: token.dotSizeLG\n        }\n      },\n      [`&-lg ${componentCls}-dot-holder`]: {\n        i: {\n          width: calc(calc(token.dotSizeLG).sub(token.marginXXS)).div(2).equal(),\n          height: calc(calc(token.dotSizeLG).sub(token.marginXXS)).div(2).equal()\n        }\n      },\n      [`&${componentCls}-show-text ${componentCls}-text`]: {\n        display: 'block'\n      }\n    })\n  };\n};\nexport const prepareComponentToken = token => {\n  const {\n    controlHeightLG,\n    controlHeight\n  } = token;\n  return {\n    contentHeight: 400,\n    dotSize: controlHeightLG / 2,\n    dotSizeSM: controlHeightLG * 0.35,\n    dotSizeLG: controlHeight\n  };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Spin', token => {\n  const spinToken = mergeToken(token, {\n    spinDotDefault: token.colorTextDescription\n  });\n  return [genSpinStyle(spinToken)];\n}, prepareComponentToken);","import * as React from 'react';\nconst AUTO_INTERVAL = 200;\nconst STEP_BUCKETS = [[30, 0.05], [70, 0.03], [96, 0.01]];\nexport default function usePercent(spinning, percent) {\n  const [mockPercent, setMockPercent] = React.useState(0);\n  const mockIntervalRef = React.useRef(null);\n  const isAuto = percent === 'auto';\n  React.useEffect(() => {\n    if (isAuto && spinning) {\n      setMockPercent(0);\n      mockIntervalRef.current = setInterval(() => {\n        setMockPercent(prev => {\n          const restPTG = 100 - prev;\n          for (let i = 0; i < STEP_BUCKETS.length; i += 1) {\n            const [limit, stepPtg] = STEP_BUCKETS[i];\n            if (prev <= limit) {\n              return prev + restPTG * stepPtg;\n            }\n          }\n          return prev;\n        });\n      }, AUTO_INTERVAL);\n    }\n    return () => {\n      clearInterval(mockIntervalRef.current);\n    };\n  }, [isAuto, spinning]);\n  return isAuto ? mockPercent : percent;\n}","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { debounce } from 'throttle-debounce';\nimport { devUseWarning } from '../_util/warning';\nimport { useComponentConfig } from '../config-provider/context';\nimport Indicator from './Indicator';\nimport useStyle from './style/index';\nimport usePercent from './usePercent';\nconst _SpinSizes = ['small', 'default', 'large'];\n// Render indicator\nlet defaultIndicator;\nfunction shouldDelay(spinning, delay) {\n  return !!spinning && !!delay && !Number.isNaN(Number(delay));\n}\nconst Spin = props => {\n  var _a;\n  const {\n      prefixCls: customizePrefixCls,\n      spinning: customSpinning = true,\n      delay = 0,\n      className,\n      rootClassName,\n      size = 'default',\n      tip,\n      wrapperClassName,\n      style,\n      children,\n      fullscreen = false,\n      indicator,\n      percent\n    } = props,\n    restProps = __rest(props, [\"prefixCls\", \"spinning\", \"delay\", \"className\", \"rootClassName\", \"size\", \"tip\", \"wrapperClassName\", \"style\", \"children\", \"fullscreen\", \"indicator\", \"percent\"]);\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle,\n    indicator: contextIndicator\n  } = useComponentConfig('spin');\n  const prefixCls = getPrefixCls('spin', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  const [spinning, setSpinning] = React.useState(() => customSpinning && !shouldDelay(customSpinning, delay));\n  const mergedPercent = usePercent(spinning, percent);\n  React.useEffect(() => {\n    if (customSpinning) {\n      const showSpinning = debounce(delay, () => {\n        setSpinning(true);\n      });\n      showSpinning();\n      return () => {\n        var _a;\n        (_a = showSpinning === null || showSpinning === void 0 ? void 0 : showSpinning.cancel) === null || _a === void 0 ? void 0 : _a.call(showSpinning);\n      };\n    }\n    setSpinning(false);\n  }, [delay, customSpinning]);\n  const isNestedPattern = React.useMemo(() => typeof children !== 'undefined' && !fullscreen, [children, fullscreen]);\n  if (process.env.NODE_ENV !== 'production') {\n    const warning = devUseWarning('Spin');\n    process.env.NODE_ENV !== \"production\" ? warning(!tip || isNestedPattern || fullscreen, 'usage', '`tip` only work in nest or fullscreen pattern.') : void 0;\n  }\n  const spinClassName = classNames(prefixCls, contextClassName, {\n    [`${prefixCls}-sm`]: size === 'small',\n    [`${prefixCls}-lg`]: size === 'large',\n    [`${prefixCls}-spinning`]: spinning,\n    [`${prefixCls}-show-text`]: !!tip,\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, className, !fullscreen && rootClassName, hashId, cssVarCls);\n  const containerClassName = classNames(`${prefixCls}-container`, {\n    [`${prefixCls}-blur`]: spinning\n  });\n  const mergedIndicator = (_a = indicator !== null && indicator !== void 0 ? indicator : contextIndicator) !== null && _a !== void 0 ? _a : defaultIndicator;\n  const mergedStyle = Object.assign(Object.assign({}, contextStyle), style);\n  const spinElement = /*#__PURE__*/React.createElement(\"div\", Object.assign({}, restProps, {\n    style: mergedStyle,\n    className: spinClassName,\n    \"aria-live\": \"polite\",\n    \"aria-busy\": spinning\n  }), /*#__PURE__*/React.createElement(Indicator, {\n    prefixCls: prefixCls,\n    indicator: mergedIndicator,\n    percent: mergedPercent\n  }), tip && (isNestedPattern || fullscreen) ? (/*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-text`\n  }, tip)) : null);\n  if (isNestedPattern) {\n    return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({}, restProps, {\n      className: classNames(`${prefixCls}-nested-loading`, wrapperClassName, hashId, cssVarCls)\n    }), spinning && /*#__PURE__*/React.createElement(\"div\", {\n      key: \"loading\"\n    }, spinElement), /*#__PURE__*/React.createElement(\"div\", {\n      className: containerClassName,\n      key: \"container\"\n    }, children)));\n  }\n  if (fullscreen) {\n    return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", {\n      className: classNames(`${prefixCls}-fullscreen`, {\n        [`${prefixCls}-fullscreen-show`]: spinning\n      }, rootClassName, hashId, cssVarCls)\n    }, spinElement));\n  }\n  return wrapCSSVar(spinElement);\n};\nSpin.setDefaultIndicator = indicator => {\n  defaultIndicator = indicator;\n};\nif (process.env.NODE_ENV !== 'production') {\n  Spin.displayName = 'Spin';\n}\nexport default Spin;","import React from 'react';\nexport const ListContext = /*#__PURE__*/React.createContext({});\nexport const ListConsumer = ListContext.Consumer;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport RowContext from './RowContext';\nimport { useColStyle } from './style';\nfunction parseFlex(flex) {\n  if (typeof flex === 'number') {\n    return `${flex} ${flex} auto`;\n  }\n  if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n    return `0 0 ${flex}`;\n  }\n  return flex;\n}\nconst sizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nconst Col = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n    getPrefixCls,\n    direction\n  } = React.useContext(ConfigContext);\n  const {\n    gutter,\n    wrap\n  } = React.useContext(RowContext);\n  const {\n      prefixCls: customizePrefixCls,\n      span,\n      order,\n      offset,\n      push,\n      pull,\n      className,\n      children,\n      flex,\n      style\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"span\", \"order\", \"offset\", \"push\", \"pull\", \"className\", \"children\", \"flex\", \"style\"]);\n  const prefixCls = getPrefixCls('col', customizePrefixCls);\n  const [wrapCSSVar, hashId, cssVarCls] = useColStyle(prefixCls);\n  // ===================== Size ======================\n  const sizeStyle = {};\n  let sizeClassObj = {};\n  sizes.forEach(size => {\n    let sizeProps = {};\n    const propSize = props[size];\n    if (typeof propSize === 'number') {\n      sizeProps.span = propSize;\n    } else if (typeof propSize === 'object') {\n      sizeProps = propSize || {};\n    }\n    delete others[size];\n    sizeClassObj = Object.assign(Object.assign({}, sizeClassObj), {\n      [`${prefixCls}-${size}-${sizeProps.span}`]: sizeProps.span !== undefined,\n      [`${prefixCls}-${size}-order-${sizeProps.order}`]: sizeProps.order || sizeProps.order === 0,\n      [`${prefixCls}-${size}-offset-${sizeProps.offset}`]: sizeProps.offset || sizeProps.offset === 0,\n      [`${prefixCls}-${size}-push-${sizeProps.push}`]: sizeProps.push || sizeProps.push === 0,\n      [`${prefixCls}-${size}-pull-${sizeProps.pull}`]: sizeProps.pull || sizeProps.pull === 0,\n      [`${prefixCls}-rtl`]: direction === 'rtl'\n    });\n    // Responsive flex layout\n    if (sizeProps.flex) {\n      sizeClassObj[`${prefixCls}-${size}-flex`] = true;\n      sizeStyle[`--${prefixCls}-${size}-flex`] = parseFlex(sizeProps.flex);\n    }\n  });\n  // ==================== Normal =====================\n  const classes = classNames(prefixCls, {\n    [`${prefixCls}-${span}`]: span !== undefined,\n    [`${prefixCls}-order-${order}`]: order,\n    [`${prefixCls}-offset-${offset}`]: offset,\n    [`${prefixCls}-push-${push}`]: push,\n    [`${prefixCls}-pull-${pull}`]: pull\n  }, className, sizeClassObj, hashId, cssVarCls);\n  const mergedStyle = {};\n  // Horizontal gutter use padding\n  if (gutter && gutter[0] > 0) {\n    const horizontalGutter = gutter[0] / 2;\n    mergedStyle.paddingLeft = horizontalGutter;\n    mergedStyle.paddingRight = horizontalGutter;\n  }\n  if (flex) {\n    mergedStyle.flex = parseFlex(flex);\n    // Hack for Firefox to avoid size issue\n    // https://github.com/ant-design/ant-design/pull/20023#issuecomment-564389553\n    if (wrap === false && !mergedStyle.minWidth) {\n      mergedStyle.minWidth = 0;\n    }\n  }\n  // ==================== Render =====================\n  return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n    style: Object.assign(Object.assign(Object.assign({}, mergedStyle), style), sizeStyle),\n    className: classes,\n    ref: ref\n  }), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Col.displayName = 'Col';\n}\nexport default Col;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport React, { Children, useContext } from 'react';\nimport classNames from 'classnames';\nimport { cloneElement } from '../_util/reactNode';\nimport { ConfigContext } from '../config-provider';\nimport { Col } from '../grid';\nimport { ListContext } from './context';\nexport const Meta = _a => {\n  var {\n      prefixCls: customizePrefixCls,\n      className,\n      avatar,\n      title,\n      description\n    } = _a,\n    others = __rest(_a, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n  const {\n    getPrefixCls\n  } = useContext(ConfigContext);\n  const prefixCls = getPrefixCls('list', customizePrefixCls);\n  const classString = classNames(`${prefixCls}-item-meta`, className);\n  const content = /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-item-meta-content`\n  }, title && /*#__PURE__*/React.createElement(\"h4\", {\n    className: `${prefixCls}-item-meta-title`\n  }, title), description && /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-item-meta-description`\n  }, description));\n  return /*#__PURE__*/React.createElement(\"div\", Object.assign({}, others, {\n    className: classString\n  }), avatar && /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-item-meta-avatar`\n  }, avatar), (title || description) && content);\n};\nconst InternalItem = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      prefixCls: customizePrefixCls,\n      children,\n      actions,\n      extra,\n      styles,\n      className,\n      classNames: customizeClassNames,\n      colStyle\n    } = props,\n    others = __rest(props, [\"prefixCls\", \"children\", \"actions\", \"extra\", \"styles\", \"className\", \"classNames\", \"colStyle\"]);\n  const {\n    grid,\n    itemLayout\n  } = useContext(ListContext);\n  const {\n    getPrefixCls,\n    list\n  } = useContext(ConfigContext);\n  const moduleClass = moduleName => {\n    var _a, _b;\n    return classNames((_b = (_a = list === null || list === void 0 ? void 0 : list.item) === null || _a === void 0 ? void 0 : _a.classNames) === null || _b === void 0 ? void 0 : _b[moduleName], customizeClassNames === null || customizeClassNames === void 0 ? void 0 : customizeClassNames[moduleName]);\n  };\n  const moduleStyle = moduleName => {\n    var _a, _b;\n    return Object.assign(Object.assign({}, (_b = (_a = list === null || list === void 0 ? void 0 : list.item) === null || _a === void 0 ? void 0 : _a.styles) === null || _b === void 0 ? void 0 : _b[moduleName]), styles === null || styles === void 0 ? void 0 : styles[moduleName]);\n  };\n  const isItemContainsTextNodeAndNotSingular = () => {\n    let result = false;\n    Children.forEach(children, element => {\n      if (typeof element === 'string') {\n        result = true;\n      }\n    });\n    return result && Children.count(children) > 1;\n  };\n  const isFlexMode = () => {\n    if (itemLayout === 'vertical') {\n      return !!extra;\n    }\n    return !isItemContainsTextNodeAndNotSingular();\n  };\n  const prefixCls = getPrefixCls('list', customizePrefixCls);\n  const actionsContent = actions && actions.length > 0 && (/*#__PURE__*/React.createElement(\"ul\", {\n    className: classNames(`${prefixCls}-item-action`, moduleClass('actions')),\n    key: \"actions\",\n    style: moduleStyle('actions')\n  }, actions.map((action, i) => (\n  /*#__PURE__*/\n  // eslint-disable-next-line react/no-array-index-key\n  React.createElement(\"li\", {\n    key: `${prefixCls}-item-action-${i}`\n  }, action, i !== actions.length - 1 && /*#__PURE__*/React.createElement(\"em\", {\n    className: `${prefixCls}-item-action-split`\n  }))))));\n  const Element = grid ? 'div' : 'li';\n  const itemChildren = /*#__PURE__*/React.createElement(Element, Object.assign({}, others, !grid ? {\n    ref\n  } : {}, {\n    className: classNames(`${prefixCls}-item`, {\n      [`${prefixCls}-item-no-flex`]: !isFlexMode()\n    }, className)\n  }), itemLayout === 'vertical' && extra ? [/*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-item-main`,\n    key: \"content\"\n  }, children, actionsContent), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-item-extra`, moduleClass('extra')),\n    key: \"extra\",\n    style: moduleStyle('extra')\n  }, extra)] : [children, actionsContent, cloneElement(extra, {\n    key: 'extra'\n  })]);\n  return grid ? (/*#__PURE__*/React.createElement(Col, {\n    ref: ref,\n    flex: 1,\n    style: colStyle\n  }, itemChildren)) : itemChildren;\n});\nconst Item = InternalItem;\nItem.Meta = Meta;\nexport default Item;","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nconst genBorderedStyle = token => {\n  const {\n    listBorderedCls,\n    componentCls,\n    paddingLG,\n    margin,\n    itemPaddingSM,\n    itemPaddingLG,\n    marginLG,\n    borderRadiusLG\n  } = token;\n  return {\n    [listBorderedCls]: {\n      border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorBorder}`,\n      borderRadius: borderRadiusLG,\n      [`${componentCls}-header,${componentCls}-footer,${componentCls}-item`]: {\n        paddingInline: paddingLG\n      },\n      [`${componentCls}-pagination`]: {\n        margin: `${unit(margin)} ${unit(marginLG)}`\n      }\n    },\n    [`${listBorderedCls}${componentCls}-sm`]: {\n      [`${componentCls}-item,${componentCls}-header,${componentCls}-footer`]: {\n        padding: itemPaddingSM\n      }\n    },\n    [`${listBorderedCls}${componentCls}-lg`]: {\n      [`${componentCls}-item,${componentCls}-header,${componentCls}-footer`]: {\n        padding: itemPaddingLG\n      }\n    }\n  };\n};\nconst genResponsiveStyle = token => {\n  const {\n    componentCls,\n    screenSM,\n    screenMD,\n    marginLG,\n    marginSM,\n    margin\n  } = token;\n  return {\n    [`@media screen and (max-width:${screenMD}px)`]: {\n      [componentCls]: {\n        [`${componentCls}-item`]: {\n          [`${componentCls}-item-action`]: {\n            marginInlineStart: marginLG\n          }\n        }\n      },\n      [`${componentCls}-vertical`]: {\n        [`${componentCls}-item`]: {\n          [`${componentCls}-item-extra`]: {\n            marginInlineStart: marginLG\n          }\n        }\n      }\n    },\n    [`@media screen and (max-width: ${screenSM}px)`]: {\n      [componentCls]: {\n        [`${componentCls}-item`]: {\n          flexWrap: 'wrap',\n          [`${componentCls}-action`]: {\n            marginInlineStart: marginSM\n          }\n        }\n      },\n      [`${componentCls}-vertical`]: {\n        [`${componentCls}-item`]: {\n          flexWrap: 'wrap-reverse',\n          [`${componentCls}-item-main`]: {\n            minWidth: token.contentWidth\n          },\n          [`${componentCls}-item-extra`]: {\n            margin: `auto auto ${unit(margin)}`\n          }\n        }\n      }\n    }\n  };\n};\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n  const {\n    componentCls,\n    antCls,\n    controlHeight,\n    minHeight,\n    paddingSM,\n    marginLG,\n    padding,\n    itemPadding,\n    colorPrimary,\n    itemPaddingSM,\n    itemPaddingLG,\n    paddingXS,\n    margin,\n    colorText,\n    colorTextDescription,\n    motionDurationSlow,\n    lineWidth,\n    headerBg,\n    footerBg,\n    emptyTextPadding,\n    metaMarginBottom,\n    avatarMarginRight,\n    titleMarginBottom,\n    descriptionFontSize\n  } = token;\n  return {\n    [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n      position: 'relative',\n      '*': {\n        outline: 'none'\n      },\n      [`${componentCls}-header`]: {\n        background: headerBg\n      },\n      [`${componentCls}-footer`]: {\n        background: footerBg\n      },\n      [`${componentCls}-header, ${componentCls}-footer`]: {\n        paddingBlock: paddingSM\n      },\n      [`${componentCls}-pagination`]: {\n        marginBlockStart: marginLG,\n        // https://github.com/ant-design/ant-design/issues/20037\n        [`${antCls}-pagination-options`]: {\n          textAlign: 'start'\n        }\n      },\n      [`${componentCls}-spin`]: {\n        minHeight,\n        textAlign: 'center'\n      },\n      [`${componentCls}-items`]: {\n        margin: 0,\n        padding: 0,\n        listStyle: 'none'\n      },\n      [`${componentCls}-item`]: {\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'space-between',\n        padding: itemPadding,\n        color: colorText,\n        [`${componentCls}-item-meta`]: {\n          display: 'flex',\n          flex: 1,\n          alignItems: 'flex-start',\n          maxWidth: '100%',\n          [`${componentCls}-item-meta-avatar`]: {\n            marginInlineEnd: avatarMarginRight\n          },\n          [`${componentCls}-item-meta-content`]: {\n            flex: '1 0',\n            width: 0,\n            color: colorText\n          },\n          [`${componentCls}-item-meta-title`]: {\n            margin: `0 0 ${unit(token.marginXXS)} 0`,\n            color: colorText,\n            fontSize: token.fontSize,\n            lineHeight: token.lineHeight,\n            '> a': {\n              color: colorText,\n              transition: `all ${motionDurationSlow}`,\n              '&:hover': {\n                color: colorPrimary\n              }\n            }\n          },\n          [`${componentCls}-item-meta-description`]: {\n            color: colorTextDescription,\n            fontSize: descriptionFontSize,\n            lineHeight: token.lineHeight\n          }\n        },\n        [`${componentCls}-item-action`]: {\n          flex: '0 0 auto',\n          marginInlineStart: token.marginXXL,\n          padding: 0,\n          fontSize: 0,\n          listStyle: 'none',\n          '& > li': {\n            position: 'relative',\n            display: 'inline-block',\n            padding: `0 ${unit(paddingXS)}`,\n            color: colorTextDescription,\n            fontSize: token.fontSize,\n            lineHeight: token.lineHeight,\n            textAlign: 'center',\n            '&:first-child': {\n              paddingInlineStart: 0\n            }\n          },\n          [`${componentCls}-item-action-split`]: {\n            position: 'absolute',\n            insetBlockStart: '50%',\n            insetInlineEnd: 0,\n            width: lineWidth,\n            height: token.calc(token.fontHeight).sub(token.calc(token.marginXXS).mul(2)).equal(),\n            transform: 'translateY(-50%)',\n            backgroundColor: token.colorSplit\n          }\n        }\n      },\n      [`${componentCls}-empty`]: {\n        padding: `${unit(padding)} 0`,\n        color: colorTextDescription,\n        fontSize: token.fontSizeSM,\n        textAlign: 'center'\n      },\n      [`${componentCls}-empty-text`]: {\n        padding: emptyTextPadding,\n        color: token.colorTextDisabled,\n        fontSize: token.fontSize,\n        textAlign: 'center'\n      },\n      // ============================ without flex ============================\n      [`${componentCls}-item-no-flex`]: {\n        display: 'block'\n      }\n    }),\n    [`${componentCls}-grid ${antCls}-col > ${componentCls}-item`]: {\n      display: 'block',\n      maxWidth: '100%',\n      marginBlockEnd: margin,\n      paddingBlock: 0,\n      borderBlockEnd: 'none'\n    },\n    [`${componentCls}-vertical ${componentCls}-item`]: {\n      alignItems: 'initial',\n      [`${componentCls}-item-main`]: {\n        display: 'block',\n        flex: 1\n      },\n      [`${componentCls}-item-extra`]: {\n        marginInlineStart: marginLG\n      },\n      [`${componentCls}-item-meta`]: {\n        marginBlockEnd: metaMarginBottom,\n        [`${componentCls}-item-meta-title`]: {\n          marginBlockStart: 0,\n          marginBlockEnd: titleMarginBottom,\n          color: colorText,\n          fontSize: token.fontSizeLG,\n          lineHeight: token.lineHeightLG\n        }\n      },\n      [`${componentCls}-item-action`]: {\n        marginBlockStart: padding,\n        marginInlineStart: 'auto',\n        '> li': {\n          padding: `0 ${unit(padding)}`,\n          '&:first-child': {\n            paddingInlineStart: 0\n          }\n        }\n      }\n    },\n    [`${componentCls}-split ${componentCls}-item`]: {\n      borderBlockEnd: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`,\n      '&:last-child': {\n        borderBlockEnd: 'none'\n      }\n    },\n    [`${componentCls}-split ${componentCls}-header`]: {\n      borderBlockEnd: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n    },\n    [`${componentCls}-split${componentCls}-empty ${componentCls}-footer`]: {\n      borderTop: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n    },\n    [`${componentCls}-loading ${componentCls}-spin-nested-loading`]: {\n      minHeight: controlHeight\n    },\n    [`${componentCls}-split${componentCls}-something-after-last-item ${antCls}-spin-container > ${componentCls}-items > ${componentCls}-item:last-child`]: {\n      borderBlockEnd: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n    },\n    [`${componentCls}-lg ${componentCls}-item`]: {\n      padding: itemPaddingLG\n    },\n    [`${componentCls}-sm ${componentCls}-item`]: {\n      padding: itemPaddingSM\n    },\n    // Horizontal\n    [`${componentCls}:not(${componentCls}-vertical)`]: {\n      [`${componentCls}-item-no-flex`]: {\n        [`${componentCls}-item-action`]: {\n          float: 'right'\n        }\n      }\n    }\n  };\n};\nexport const prepareComponentToken = token => ({\n  contentWidth: 220,\n  itemPadding: `${unit(token.paddingContentVertical)} 0`,\n  itemPaddingSM: `${unit(token.paddingContentVerticalSM)} ${unit(token.paddingContentHorizontal)}`,\n  itemPaddingLG: `${unit(token.paddingContentVerticalLG)} ${unit(token.paddingContentHorizontalLG)}`,\n  headerBg: 'transparent',\n  footerBg: 'transparent',\n  emptyTextPadding: token.padding,\n  metaMarginBottom: token.padding,\n  avatarMarginRight: token.padding,\n  titleMarginBottom: token.paddingSM,\n  descriptionFontSize: token.fontSize\n});\n// ============================== Export ==============================\nexport default genStyleHooks('List', token => {\n  const listToken = mergeToken(token, {\n    listBorderedCls: `${token.componentCls}-bordered`,\n    minHeight: token.controlHeightLG\n  });\n  return [genBaseStyle(listToken), genBorderedStyle(listToken), genResponsiveStyle(listToken)];\n}, prepareComponentToken);","\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport extendsObject from '../_util/extendsObject';\nimport { responsiveArray } from '../_util/responsiveObserver';\nimport { ConfigContext } from '../config-provider';\nimport { useComponentConfig } from '../config-provider/context';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport useSize from '../config-provider/hooks/useSize';\nimport { Row } from '../grid';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport Pagination from '../pagination';\nimport Spin from '../spin';\nimport { ListContext } from './context';\nimport Item from './Item';\nimport useStyle from './style';\nfunction InternalList(_a, ref) {\n  var {\n      pagination = false,\n      prefixCls: customizePrefixCls,\n      bordered = false,\n      split = true,\n      className,\n      rootClassName,\n      style,\n      children,\n      itemLayout,\n      loadMore,\n      grid,\n      dataSource = [],\n      size: customizeSize,\n      header,\n      footer,\n      loading = false,\n      rowKey,\n      renderItem,\n      locale\n    } = _a,\n    rest = __rest(_a, [\"pagination\", \"prefixCls\", \"bordered\", \"split\", \"className\", \"rootClassName\", \"style\", \"children\", \"itemLayout\", \"loadMore\", \"grid\", \"dataSource\", \"size\", \"header\", \"footer\", \"loading\", \"rowKey\", \"renderItem\", \"locale\"]);\n  const paginationObj = pagination && typeof pagination === 'object' ? pagination : {};\n  const [paginationCurrent, setPaginationCurrent] = React.useState(paginationObj.defaultCurrent || 1);\n  const [paginationSize, setPaginationSize] = React.useState(paginationObj.defaultPageSize || 10);\n  const {\n    getPrefixCls,\n    direction,\n    className: contextClassName,\n    style: contextStyle\n  } = useComponentConfig('list');\n  const {\n    renderEmpty\n  } = React.useContext(ConfigContext);\n  const defaultPaginationProps = {\n    current: 1,\n    total: 0\n  };\n  const triggerPaginationEvent = eventName => (page, pageSize) => {\n    var _a;\n    setPaginationCurrent(page);\n    setPaginationSize(pageSize);\n    if (pagination) {\n      (_a = pagination === null || pagination === void 0 ? void 0 : pagination[eventName]) === null || _a === void 0 ? void 0 : _a.call(pagination, page, pageSize);\n    }\n  };\n  const onPaginationChange = triggerPaginationEvent('onChange');\n  const onPaginationShowSizeChange = triggerPaginationEvent('onShowSizeChange');\n  const renderInnerItem = (item, index) => {\n    if (!renderItem) return null;\n    let key;\n    if (typeof rowKey === 'function') {\n      key = rowKey(item);\n    } else if (rowKey) {\n      key = item[rowKey];\n    } else {\n      key = item.key;\n    }\n    if (!key) {\n      key = `list-item-${index}`;\n    }\n    return /*#__PURE__*/React.createElement(React.Fragment, {\n      key: key\n    }, renderItem(item, index));\n  };\n  const isSomethingAfterLastItem = () => !!(loadMore || pagination || footer);\n  const prefixCls = getPrefixCls('list', customizePrefixCls);\n  // Style\n  const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n  let loadingProp = loading;\n  if (typeof loadingProp === 'boolean') {\n    loadingProp = {\n      spinning: loadingProp\n    };\n  }\n  const isLoading = !!(loadingProp === null || loadingProp === void 0 ? void 0 : loadingProp.spinning);\n  const mergedSize = useSize(customizeSize);\n  // large => lg\n  // small => sm\n  let sizeCls = '';\n  switch (mergedSize) {\n    case 'large':\n      sizeCls = 'lg';\n      break;\n    case 'small':\n      sizeCls = 'sm';\n      break;\n    default:\n      break;\n  }\n  const classString = classNames(prefixCls, {\n    [`${prefixCls}-vertical`]: itemLayout === 'vertical',\n    [`${prefixCls}-${sizeCls}`]: sizeCls,\n    [`${prefixCls}-split`]: split,\n    [`${prefixCls}-bordered`]: bordered,\n    [`${prefixCls}-loading`]: isLoading,\n    [`${prefixCls}-grid`]: !!grid,\n    [`${prefixCls}-something-after-last-item`]: isSomethingAfterLastItem(),\n    [`${prefixCls}-rtl`]: direction === 'rtl'\n  }, contextClassName, className, rootClassName, hashId, cssVarCls);\n  const paginationProps = extendsObject(defaultPaginationProps, {\n    total: dataSource.length,\n    current: paginationCurrent,\n    pageSize: paginationSize\n  }, pagination || {});\n  const largestPage = Math.ceil(paginationProps.total / paginationProps.pageSize);\n  if (paginationProps.current > largestPage) {\n    paginationProps.current = largestPage;\n  }\n  const paginationContent = pagination && (/*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(`${prefixCls}-pagination`)\n  }, /*#__PURE__*/React.createElement(Pagination, Object.assign({\n    align: \"end\"\n  }, paginationProps, {\n    onChange: onPaginationChange,\n    onShowSizeChange: onPaginationShowSizeChange\n  }))));\n  let splitDataSource = _toConsumableArray(dataSource);\n  if (pagination) {\n    if (dataSource.length > (paginationProps.current - 1) * paginationProps.pageSize) {\n      splitDataSource = _toConsumableArray(dataSource).splice((paginationProps.current - 1) * paginationProps.pageSize, paginationProps.pageSize);\n    }\n  }\n  const needResponsive = Object.keys(grid || {}).some(key => ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].includes(key));\n  const screens = useBreakpoint(needResponsive);\n  const currentBreakpoint = React.useMemo(() => {\n    for (let i = 0; i < responsiveArray.length; i += 1) {\n      const breakpoint = responsiveArray[i];\n      if (screens[breakpoint]) {\n        return breakpoint;\n      }\n    }\n    return undefined;\n  }, [screens]);\n  const colStyle = React.useMemo(() => {\n    if (!grid) {\n      return undefined;\n    }\n    const columnCount = currentBreakpoint && grid[currentBreakpoint] ? grid[currentBreakpoint] : grid.column;\n    if (columnCount) {\n      return {\n        width: `${100 / columnCount}%`,\n        maxWidth: `${100 / columnCount}%`\n      };\n    }\n  }, [JSON.stringify(grid), currentBreakpoint]);\n  let childrenContent = isLoading && /*#__PURE__*/React.createElement(\"div\", {\n    style: {\n      minHeight: 53\n    }\n  });\n  if (splitDataSource.length > 0) {\n    const items = splitDataSource.map((item, index) => renderInnerItem(item, index));\n    childrenContent = grid ? (/*#__PURE__*/React.createElement(Row, {\n      gutter: grid.gutter\n    }, React.Children.map(items, child => (/*#__PURE__*/React.createElement(\"div\", {\n      key: child === null || child === void 0 ? void 0 : child.key,\n      style: colStyle\n    }, child))))) : (/*#__PURE__*/React.createElement(\"ul\", {\n      className: `${prefixCls}-items`\n    }, items));\n  } else if (!children && !isLoading) {\n    childrenContent = /*#__PURE__*/React.createElement(\"div\", {\n      className: `${prefixCls}-empty-text`\n    }, (locale === null || locale === void 0 ? void 0 : locale.emptyText) || (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('List')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n      componentName: \"List\"\n    }));\n  }\n  const paginationPosition = paginationProps.position || 'bottom';\n  const contextValue = React.useMemo(() => ({\n    grid,\n    itemLayout\n  }), [JSON.stringify(grid), itemLayout]);\n  return wrapCSSVar(/*#__PURE__*/React.createElement(ListContext.Provider, {\n    value: contextValue\n  }, /*#__PURE__*/React.createElement(\"div\", Object.assign({\n    ref: ref,\n    style: Object.assign(Object.assign({}, contextStyle), style),\n    className: classString\n  }, rest), (paginationPosition === 'top' || paginationPosition === 'both') && paginationContent, header && /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-header`\n  }, header), /*#__PURE__*/React.createElement(Spin, Object.assign({}, loadingProp), childrenContent, children), footer && /*#__PURE__*/React.createElement(\"div\", {\n    className: `${prefixCls}-footer`\n  }, footer), loadMore || (paginationPosition === 'bottom' || paginationPosition === 'both') && paginationContent)));\n}\nconst ListWithForwardRef = /*#__PURE__*/React.forwardRef(InternalList);\nif (process.env.NODE_ENV !== 'production') {\n  ListWithForwardRef.displayName = 'List';\n}\nconst List = ListWithForwardRef;\nList.Item = Item;\nexport default List;","// This icon file is generated automatically.\nvar HomeOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 00-44.4 0L77.5 505a63.9 63.9 0 00-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0018.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z\" } }] }, \"name\": \"home\", \"theme\": \"outlined\" };\nexport default HomeOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport HomeOutlinedSvg from \"@ant-design/icons-svg/es/asn/HomeOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar HomeOutlined = function HomeOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: HomeOutlinedSvg\n  }));\n};\n\n/**![home](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk0Ni41IDUwNUw1NjAuMSAxMTguOGwtMjUuOS0yNS45YTMxLjUgMzEuNSAwIDAwLTQ0LjQgMEw3Ny41IDUwNWE2My45IDYzLjkgMCAwMC0xOC44IDQ2Yy40IDM1LjIgMjkuNyA2My4zIDY0LjkgNjMuM2g0Mi41Vjk0MGg2OTEuOFY2MTQuM2g0My40YzE3LjEgMCAzMy4yLTYuNyA0NS4zLTE4LjhhNjMuNiA2My42IDAgMDAxOC43LTQ1LjNjMC0xNy02LjctMzMuMS0xOC44LTQ1LjJ6TTU2OCA4NjhINDU2VjY2NGgxMTJ2MjA0em0yMTcuOS0zMjUuN1Y4NjhINjMyVjY0MGMwLTIyLjEtMTcuOS00MC00MC00MEg0MzJjLTIyLjEgMC00MCAxNy45LTQwIDQwdjIyOEgyMzguMVY1NDIuM2gtOTZsMzcwLTM2OS43IDIzLjEgMjMuMUw4ODIgNTQyLjNoLTk2LjF6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(HomeOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'HomeOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DeleteOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\" } }] }, \"name\": \"delete\", \"theme\": \"outlined\" };\nexport default DeleteOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DeleteOutlined = function DeleteOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: DeleteOutlinedSvg\n  }));\n};\n\n/**![delete](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM2MCAxODRoLThjNC40IDAgOC0zLjYgOC04djhoMzA0di04YzAgNC40IDMuNiA4IDggOGgtOHY3Mmg3MnYtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUyYy0zNS4zIDAtNjQgMjguNy02NCA2NHY4MGg3MnYtNzJ6bTUwNCA3MkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgNC40IDMuNiA4IDggOGg2MC40bDI0LjcgNTIzYzEuNiAzNC4xIDI5LjggNjEgNjMuOSA2MWg0NTRjMzQuMiAwIDYyLjMtMjYuOCA2My45LTYxbDI0LjctNTIzSDg4OGM0LjQgMCA4LTMuNiA4LTh2LTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MzEuMyA4NDBIMjkyLjdsLTI0LjItNTEyaDQ4N2wtMjQuMiA1MTJ6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DeleteOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'DeleteOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar SaveOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z\" } }] }, \"name\": \"save\", \"theme\": \"outlined\" };\nexport default SaveOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SaveOutlinedSvg from \"@ant-design/icons-svg/es/asn/SaveOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SaveOutlined = function SaveOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: SaveOutlinedSvg\n  }));\n};\n\n/**![save](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg5My4zIDI5My4zTDczMC43IDEzMC43Yy03LjUtNy41LTE2LjctMTMtMjYuNy0xNlYxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzOC41YzAtMTctNi43LTMzLjItMTguNy00NS4yek0zODQgMTg0aDI1NnYxMDRIMzg0VjE4NHptNDU2IDY1NkgxODRWMTg0aDEzNnYxMzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwNS44bDEzNiAxMzZWODQwek01MTIgNDQyYy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjIgMC04MC0zNS44LTgwLTgwczM1LjgtODAgODAtODAgODAgMzUuOCA4MCA4MC0zNS44IDgwLTgwIDgweiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SaveOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'SaveOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar FileZipOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M296 392h64v64h-64zm0 190v160h128V582h-64v-62h-64v62zm80 48v64h-32v-64h32zm-16-302h64v64h-64zm-64-64h64v64h-64zm64 192h64v64h-64zm0-256h64v64h-64zm494.6 88.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h64v64h64v-64h174v216a42 42 0 0042 42h216v494z\" } }] }, \"name\": \"file-zip\", \"theme\": \"outlined\" };\nexport default FileZipOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FileZipOutlinedSvg from \"@ant-design/icons-svg/es/asn/FileZipOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FileZipOutlined = function FileZipOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n    ref: ref,\n    icon: FileZipOutlinedSvg\n  }));\n};\n\n/**![file-zip](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI5NiAzOTJoNjR2NjRoLTY0em0wIDE5MHYxNjBoMTI4VjU4MmgtNjR2LTYyaC02NHY2MnptODAgNDh2NjRoLTMydi02NGgzMnptLTE2LTMwMmg2NHY2NGgtNjR6bS02NC02NGg2NHY2NGgtNjR6bTY0IDE5Mmg2NHY2NGgtNjR6bTAtMjU2aDY0djY0aC02NHptNDk0LjYgODguNkw2MzkuNCA3My40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMS4zYzAtOC41LTMuNC0xNi43LTkuNC0yMi43ek03OTAuMiAzMjZINjAyVjEzNy44TDc5MC4yIDMyNnptMS44IDU2MkgyMzJWMTM2aDY0djY0aDY0di02NGgxNzR2MjE2YTQyIDQyIDAgMDA0MiA0MmgyMTZ2NDk0eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(FileZipOutlined);\nif (process.env.NODE_ENV !== 'production') {\n  RefIcon.displayName = 'FileZipOutlined';\n}\nexport default RefIcon;","/**\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 mathFlow = {\n  tokenize: tokenizeMathFenced,\n  concrete: true\n}\n\n/** @type {Construct} */\nconst nonLazyContinuation = {\n  tokenize: tokenizeNonLazyContinuation,\n  partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeMathFenced(effects, ok, nok) {\n  const self = this\n  const tail = self.events[self.events.length - 1]\n  const initialSize =\n    tail && tail[1].type === 'linePrefix'\n      ? tail[2].sliceSerialize(tail[1], true).length\n      : 0\n  let sizeOpen = 0\n  return start\n\n  /**\n   * Start of math.\n   *\n   * ```markdown\n   * > | $$\n   *     ^\n   *   | \\frac{1}{2}\n   *   | $$\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('mathFlow')\n    effects.enter('mathFlowFence')\n    effects.enter('mathFlowFenceSequence')\n    return sequenceOpen(code)\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | $$\n   *      ^\n   *   | \\frac{1}{2}\n   *   | $$\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 36) {\n      effects.consume(code)\n      sizeOpen++\n      return sequenceOpen\n    }\n    if (sizeOpen < 2) {\n      return nok(code)\n    }\n    effects.exit('mathFlowFenceSequence')\n    return factorySpace(effects, metaBefore, 'whitespace')(code)\n  }\n\n  /**\n   * In opening fence, before meta.\n   *\n   * ```markdown\n   * > | $$asciimath\n   *       ^\n   *   | x < y\n   *   | $$\n   * ```\n   *\n   * @type {State}\n   */\n\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return metaAfter(code)\n    }\n    effects.enter('mathFlowFenceMeta')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return meta(code)\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | $$asciimath\n   *        ^\n   *   | x < y\n   *   | $$\n   * ```\n   *\n   * @type {State}\n   */\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      effects.exit('mathFlowFenceMeta')\n      return metaAfter(code)\n    }\n    if (code === 36) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return meta\n  }\n\n  /**\n   * After meta.\n   *\n   * ```markdown\n   * > | $$\n   *       ^\n   *   | \\frac{1}{2}\n   *   | $$\n   * ```\n   *\n   * @type {State}\n   */\n  function metaAfter(code) {\n    // Guaranteed to be eol/eof.\n    effects.exit('mathFlowFence')\n    if (self.interrupt) {\n      return ok(code)\n    }\n    return effects.attempt(\n      nonLazyContinuation,\n      beforeNonLazyContinuation,\n      after\n    )(code)\n  }\n\n  /**\n   * After eol/eof in math, at a non-lazy closing fence or content.\n   *\n   * ```markdown\n   *   | $$\n   * > | \\frac{1}{2}\n   *     ^\n   * > | $$\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeNonLazyContinuation(code) {\n    return effects.attempt(\n      {\n        tokenize: tokenizeClosingFence,\n        partial: true\n      },\n      after,\n      contentStart\n    )(code)\n  }\n\n  /**\n   * Before math content, definitely not before a closing fence.\n   *\n   * ```markdown\n   *   | $$\n   * > | \\frac{1}{2}\n   *     ^\n   *   | $$\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return (\n      initialSize\n        ? factorySpace(\n            effects,\n            beforeContentChunk,\n            'linePrefix',\n            initialSize + 1\n          )\n        : beforeContentChunk\n    )(code)\n  }\n\n  /**\n   * Before math content, after optional prefix.\n   *\n   * ```markdown\n   *   | $$\n   * > | \\frac{1}{2}\n   *     ^\n   *   | $$\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null) {\n      return after(code)\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(\n        nonLazyContinuation,\n        beforeNonLazyContinuation,\n        after\n      )(code)\n    }\n    effects.enter('mathFlowValue')\n    return contentChunk(code)\n  }\n\n  /**\n   * In math content.\n   *\n   * ```markdown\n   *   | $$\n   * > | \\frac{1}{2}\n   *      ^\n   *   | $$\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('mathFlowValue')\n      return beforeContentChunk(code)\n    }\n    effects.consume(code)\n    return contentChunk\n  }\n\n  /**\n   * After math (ha!).\n   *\n   * ```markdown\n   *   | $$\n   *   | \\frac{1}{2}\n   * > | $$\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit('mathFlow')\n    return ok(code)\n  }\n\n  /** @type {Tokenizer} */\n  function tokenizeClosingFence(effects, ok, nok) {\n    let size = 0\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | $$\n     *   | \\frac{1}{2}\n     * > | $$\n     *     ^\n     * ```\n     */\n    return factorySpace(\n      effects,\n      beforeSequenceClose,\n      'linePrefix',\n      self.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : 4\n    )\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | $$\n     *   | \\frac{1}{2}\n     * > | $$\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      effects.enter('mathFlowFence')\n      effects.enter('mathFlowFenceSequence')\n      return sequenceClose(code)\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | $$\n     *   | \\frac{1}{2}\n     * > | $$\n     *      ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === 36) {\n        size++\n        effects.consume(code)\n        return sequenceClose\n      }\n      if (size < sizeOpen) {\n        return nok(code)\n      }\n      effects.exit('mathFlowFenceSequence')\n      return factorySpace(effects, afterSequenceClose, 'whitespace')(code)\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | $$\n     *   | \\frac{1}{2}\n     * > | $$\n     *       ^\n     * ```\n     *\n     * @type {State}\n     */\n    function afterSequenceClose(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit('mathFlowFence')\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  /** @type {State} */\n  function start(code) {\n    if (code === null) {\n      return ok(code)\n    }\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return lineStart\n  }\n\n  /** @type {State} */\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').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\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 *\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [singleDollarTextMath=true]\n *   Whether to support math (text) with a single dollar.\n *   Single dollars work in Pandoc and many other places, but often interfere\n *   with “normal” dollars in text.\n *   If you turn this off, you can use two or more dollars for text math.\n\n */\n\n// To do: next major: clean spaces in HTML compiler.\n// This has to be coordinated together with `mdast-util-math`.\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/**\n * @param {Options | null | undefined} [options]\n * @returns {Construct}\n */\nexport function mathText(options) {\n  const options_ = options || {}\n  let single = options_.singleDollarTextMath\n  if (single === null || single === undefined) {\n    single = true\n  }\n  return {\n    tokenize: tokenizeMathText,\n    resolve: resolveMathText,\n    previous\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeMathText(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 math (text).\n     *\n     * ```markdown\n     * > | $a$\n     *     ^\n     * > | \\$a$\n     *      ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      effects.enter('mathText')\n      effects.enter('mathTextSequence')\n      return sequenceOpen(code)\n    }\n\n    /**\n     * In opening sequence.\n     *\n     * ```markdown\n     * > | $a$\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n\n    function sequenceOpen(code) {\n      if (code === 36) {\n        effects.consume(code)\n        sizeOpen++\n        return sequenceOpen\n      }\n\n      // Not enough markers in the sequence.\n      if (sizeOpen < 2 && !single) {\n        return nok(code)\n      }\n      effects.exit('mathTextSequence')\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      if (code === null) {\n        return nok(code)\n      }\n      if (code === 36) {\n        token = effects.enter('mathTextSequence')\n        size = 0\n        return sequenceClose(code)\n      }\n\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      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('mathTextData')\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 === 36 ||\n        markdownLineEnding(code)\n      ) {\n        effects.exit('mathTextData')\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\n    function sequenceClose(code) {\n      // More.\n      if (code === 36) {\n        effects.consume(code)\n        size++\n        return sequenceClose\n      }\n\n      // Done!\n      if (size === sizeOpen) {\n        effects.exit('mathTextSequence')\n        effects.exit('mathText')\n        return ok(code)\n      }\n\n      // More or less accents: mark as data.\n      token.type = 'mathTextData'\n      return data(code)\n    }\n  }\n}\n\n/** @type {Resolver} */\nfunction resolveMathText(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 === 'mathTextData') {\n        // Then we have padding.\n        events[tailExitIndex][1].type = 'mathTextPadding'\n        events[headEnterIndex][1].type = 'mathTextPadding'\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 = 'mathTextData'\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 !== 36 ||\n    this.events[this.events.length - 1][1].type === 'characterEscape'\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<ConstructName>} 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<ConstructName>} 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<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {Record<number, {before: boolean, after: boolean}>} */\n  const infos = {}\n  let index = -1\n\n  while (++index < 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<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const results = []\n  const whole = value + after\n  let index = -1\n  let start = 0\n  /** @type {RegExpExecArray | null} */\n  let match\n\n  while ((match = expression.exec(whole))) {\n    positions.push(match.index)\n  }\n\n  while (++index < positions.length) {\n    if (start !== positions[index]) {\n      results.push(value.slice(start, positions[index]))\n    }\n\n    results.push('\\\\')\n    start = positions[index]\n  }\n\n  results.push(value.slice(start))\n\n  return results.join('')\n}\n","/**\n * @typedef {import('../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-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('../index.js').Math} Math\n * @typedef {import('../index.js').InlineMath} InlineMath\n *\n * @typedef ToOptions\n *   Configuration.\n * @property {boolean | null | undefined} [singleDollarTextMath=true]\n *   Whether to support math (text) with a single dollar.\n *\n *   Single dollars work in Pandoc and many other places, but often interfere\n *   with “normal” dollars in text.\n *   If you turn this off, you can still use two or more dollars for text math.\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\nimport {patternCompile} from 'mdast-util-to-markdown/lib/util/pattern-compile.js'\n\n/**\n * Create an extension for `mdast-util-from-markdown`.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nexport function mathFromMarkdown() {\n  return {\n    enter: {\n      mathFlow: enterMathFlow,\n      mathFlowFenceMeta: enterMathFlowMeta,\n      mathText: enterMathText\n    },\n    exit: {\n      mathFlow: exitMathFlow,\n      mathFlowFence: exitMathFlowFence,\n      mathFlowFenceMeta: exitMathFlowMeta,\n      mathFlowValue: exitMathData,\n      mathText: exitMathText,\n      mathTextData: exitMathData\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMathFlow(token) {\n    this.enter(\n      {\n        type: 'math',\n        meta: null,\n        value: '',\n        data: {\n          hName: 'div',\n          hProperties: {className: ['math', 'math-display']},\n          hChildren: [{type: 'text', value: ''}]\n        }\n      },\n      token\n    )\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMathFlowMeta() {\n    this.buffer()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMathFlowMeta() {\n    const data = this.resume()\n    const node = /** @type {Math} */ (this.stack[this.stack.length - 1])\n    node.meta = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMathFlowFence() {\n    // Exit if this is the closing fence.\n    if (this.getData('mathFlowInside')) return\n    this.buffer()\n    this.setData('mathFlowInside', true)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMathFlow(token) {\n    const data = this.resume().replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n    const node = /** @type {Math} */ (this.exit(token))\n    node.value = data\n    // @ts-expect-error: we defined it.\n    node.data.hChildren[0].value = data\n    this.setData('mathFlowInside')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMathText(token) {\n    this.enter(\n      {\n        type: 'inlineMath',\n        value: '',\n        data: {\n          hName: 'span',\n          hProperties: {className: ['math', 'math-inline']},\n          hChildren: [{type: 'text', value: ''}]\n        }\n      },\n      token\n    )\n    this.buffer()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMathText(token) {\n    const data = this.resume()\n    const node = /** @type {Math} */ (this.exit(token))\n    node.value = data\n    // @ts-expect-error: we defined it.\n    node.data.hChildren[0].value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMathData(token) {\n    this.config.enter.data.call(this, token)\n    this.config.exit.data.call(this, token)\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown`.\n *\n * @param {ToOptions | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nexport function mathToMarkdown(options) {\n  let single = (options || {}).singleDollarTextMath\n\n  if (single === null || single === undefined) {\n    single = true\n  }\n\n  inlineMath.peek = inlineMathPeek\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'mathFlowMeta'},\n      {character: '\\n', inConstruct: 'mathFlowMeta'},\n      {\n        character: '$',\n        after: single ? undefined : '\\\\$',\n        inConstruct: 'phrasing'\n      },\n      {character: '$', inConstruct: 'mathFlowMeta'},\n      {atBreak: true, character: '$', after: '\\\\$'}\n    ],\n    handlers: {math, inlineMath}\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Math} node\n   */\n  // To do: next major: rename `context` to state, `safeOptions` to info.\n  // Note: fixing this code? Please also fix the similar code for code:\n  // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/main/lib/handle/code.js>\n  function math(node, _, context, safeOptions) {\n    const raw = node.value || ''\n    const tracker = track(safeOptions)\n    const sequence = '$'.repeat(Math.max(longestStreak(raw, '$') + 1, 2))\n    const exit = context.enter('mathFlow')\n    let value = tracker.move(sequence)\n\n    if (node.meta) {\n      const subexit = context.enter('mathFlowMeta')\n      value += tracker.move(\n        safe(context, node.meta, {\n          before: value,\n          after: '\\n',\n          encode: ['$'],\n          ...tracker.current()\n        })\n      )\n      subexit()\n    }\n\n    value += tracker.move('\\n')\n\n    if (raw) {\n      value += tracker.move(raw + '\\n')\n    }\n\n    value += tracker.move(sequence)\n    exit()\n    return value\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineMath} node\n   */\n  // Note: fixing this code? Please also fix the similar code for inline code:\n  // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/main/lib/handle/inline-code.js>\n  //\n  // To do: next major: rename `context` to state.\n  // To do: next major: use `state` (`safe`, `track`, `patternCompile`).\n  function inlineMath(node, _, context) {\n    let value = node.value || ''\n    let size = 1\n\n    if (!single) size++\n\n    // If there is a single dollar sign on its own in the math, use a fence of\n    // two.\n    // If there are two in a row, use one.\n    while (\n      new RegExp('(^|[^$])' + '\\\\$'.repeat(size) + '([^$]|$)').test(value)\n    ) {\n      size++\n    }\n\n    const sequence = '$'.repeat(size)\n\n    // If this is not just spaces or eols (tabs don’t count), and either the\n    // first and last character are a space or eol, or the first or last\n    // character are dollar signs, then pad with spaces.\n    if (\n      // Contains non-space.\n      /[^ \\r\\n]/.test(value) &&\n      // Starts with space and ends with space.\n      ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) ||\n        // Starts or ends with dollar.\n        /^\\$|\\$$/.test(value))\n    ) {\n      value = ' ' + value + ' '\n    }\n\n    let index = -1\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 `inlineMath`, but because eols are\n    // transformed to spaces when going from markdown to HTML anyway, we can swap\n    // them out.\n    while (++index < context.unsafe.length) {\n      const pattern = context.unsafe[index]\n      const expression = patternCompile(pattern)\n      /** @type {RegExpExecArray | null} */\n      let match\n\n      // Only look for `atBreak`s.\n      // Btw: note that `atBreak` patterns will always start the regex at LF or\n      // CR.\n      if (!pattern.atBreak) continue\n\n      while ((match = expression.exec(value))) {\n        let position = match.index\n\n        // Support CRLF (patterns only look for one of the characters).\n        if (\n          value.codePointAt(position) === 10 /* `\\n` */ &&\n          value.codePointAt(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   */\n  function inlineMathPeek() {\n    return '$'\n  }\n}\n","/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n *   Content to search in.\n * @param {string} substring\n *   Substring to look for, typically one character.\n * @returns {number}\n *   Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n  const source = String(value)\n  let index = source.indexOf(substring)\n  let expected = index\n  let count = 0\n  let max = 0\n\n  if (typeof substring !== 'string') {\n    throw new TypeError('Expected substring')\n  }\n\n  while (index !== -1) {\n    if (index === expected) {\n      if (++count > max) {\n        max = count\n      }\n    } else {\n      count = 1\n    }\n\n    expected = index + substring.length\n    index = source.indexOf(substring, expected)\n  }\n\n  return max\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-math').ToOptions} Options\n *\n * @typedef {import('mdast-util-math')} DoNotTouchAsThisImportIncludesMathInTree\n */\n\nimport {math} from 'micromark-extension-math'\nimport {mathFromMarkdown, mathToMarkdown} from 'mdast-util-math'\n\n/**\n * Plugin to support math.\n *\n * @type {import('unified').Plugin<[Options?] | void[], Root, Root>}\n */\nexport default function remarkMath(options = {}) {\n  const data = this.data()\n\n  add('micromarkExtensions', math(options))\n  add('fromMarkdownExtensions', mathFromMarkdown())\n  add('toMarkdownExtensions', mathToMarkdown(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-util-types').Extension} Extension\n * @typedef {import('./math-text.js').Options} Options\n */\n\nimport {mathFlow} from './math-flow.js'\nimport {mathText} from './math-text.js'\n\n/**\n * Create an extension for `micromark` to enable math 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 math syntax.\n */\nexport function math(options) {\n  return {\n    flow: {\n      [36]: mathFlow\n    },\n    text: {\n      [36]: mathText(options)\n    }\n  }\n}\n","import remarkMath from \"remark-math\";\nconst block = \"Block formula\";\nconst blockText = \"formula\";\nconst inline = \"Inline formula\";\nconst inlineText = \"formula\";\nconst en = {\n  block,\n  blockText,\n  inline,\n  inlineText\n};\nconst icons = {\n  Formula: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"m40 9-3-3H8l18 18L8 42h29l3-3\"/></svg>',\n  Inline: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"m37 9-3-3H8l17 18L8 42h26l3-3M5 24h10M33 24h10\"/></svg>',\n  Block: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"m36 11-3-3H12l16 16-16 16h21l3-3M6 5v38M42 5v38\"/></svg>'\n};\nfunction getMathActions(locale) {\n  return [\n    {\n      icon: icons.Formula,\n      handler: {\n        type: \"dropdown\",\n        actions: [\n          {\n            title: locale.inline,\n            icon: icons.Inline,\n            cheatsheet: `$${locale.inlineText}$`,\n            handler: {\n              type: \"action\",\n              click({ wrapText, editor }) {\n                wrapText(\"$\");\n                editor.focus();\n              }\n            }\n          },\n          {\n            title: locale.block,\n            icon: icons.Block,\n            cheatsheet: `$$↵${locale.blockText}↵$$`,\n            handler: {\n              type: \"action\",\n              click({ appendBlock, editor, codemirror }) {\n                const { line } = appendBlock(\"$$\\n\\\\TeX\\n$$\");\n                editor.setSelection(\n                  codemirror.Pos(line + 1, 0),\n                  codemirror.Pos(line + 1, 4)\n                );\n                editor.focus();\n              }\n            }\n          }\n        ]\n      }\n    }\n  ];\n}\nfunction math({\n  locale: _locale,\n  katexOptions\n} = {}) {\n  const locale = { ...en, ..._locale };\n  let katex;\n  return {\n    remark: (processor) => processor.use(remarkMath),\n    viewerEffect({ markdownBody }) {\n      const renderMath = async (selector, displayMode) => {\n        const els = markdownBody.querySelectorAll(selector);\n        if (els.length === 0)\n          return;\n        if (!katex) {\n          katex = await import(\"katex\").then((m) => m.default);\n        }\n        els.forEach((el) => {\n          katex.render(el.innerText, el, {\n            ...katexOptions,\n            throwOnError: false,\n            displayMode\n          });\n        });\n      };\n      renderMath(\".math.math-inline\", false);\n      renderMath(\".math.math-display\", true);\n    },\n    actions: getMathActions(locale)\n  };\n}\nexport {\n  math as default\n};\n","const icons = {\n  ChartGraph: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M17 6h14v9H17zM6 33h14v9H6zM28 33h14v9H28z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M24 16v8M13 33v-9h22v9\"/></svg>'\n};\nconst er = \"Entity relationship diagram\";\nconst flowchart = \"Flow chart\";\nconst gantt = \"Gantt chart\";\nconst mermaid$1 = \"Mermaid diagrams\";\nconst mindmap = \"Mindmaps\";\nconst pie = \"Pie chart\";\nconst sequence = \"Sequence diagram\";\nconst state = \"State diagram\";\nconst timeline = \"Timeline\";\nconst uj = \"User journey diagram\";\nconst en = {\n  \"class\": \"Class diagram\",\n  er,\n  flowchart,\n  gantt,\n  mermaid: mermaid$1,\n  mindmap,\n  pie,\n  sequence,\n  state,\n  timeline,\n  uj\n};\nfunction mermaid({\n  locale: _locale,\n  ...mermaidConfig\n} = {}) {\n  const locale = { ...en, ..._locale };\n  let m;\n  const actionItems = [\n    {\n      title: locale.flowchart,\n      code: `graph TD\nStart --> Stop`\n    },\n    {\n      title: locale.sequence,\n      code: `sequenceDiagram\nAlice->>John: Hello John, how are you?\nJohn-->>Alice: Great!\nAlice-)John: See you later!`\n    },\n    {\n      title: locale.class,\n      code: `classDiagram\nAnimal <|-- Duck\nAnimal <|-- Fish\nAnimal <|-- Zebra\nAnimal : +int age\nAnimal : +String gender\nAnimal: +isMammal()\nAnimal: +mate()\nclass Duck{\n+String beakColor\n+swim()\n+quack()\n}\nclass Fish{\n-int sizeInFeet\n-canEat()\n}\nclass Zebra{\n+bool is_wild\n+run()\n}`\n    },\n    {\n      title: locale.state,\n      code: `stateDiagram-v2\n[*] --> Still\nStill --> [*]\n\nStill --> Moving\nMoving --> Still\nMoving --> Crash\nCrash --> [*]`\n    },\n    {\n      title: locale.er,\n      code: `erDiagram\nCUSTOMER ||--o{ ORDER : places\nORDER ||--|{ LINE-ITEM : contains\nCUSTOMER }|..|{ DELIVERY-ADDRESS : uses`\n    },\n    {\n      title: locale.uj,\n      code: `journey\ntitle My working day\nsection Go to work\nMake tea: 5: Me\nGo upstairs: 3: Me\nDo work: 1: Me, Cat\nsection Go home\nGo downstairs: 5: Me\nSit down: 5: Me`\n    },\n    {\n      title: locale.gantt,\n      code: `gantt\ntitle A Gantt Diagram\ndateFormat  YYYY-MM-DD\nsection Section\nA task           :a1, 2014-01-01, 30d\nAnother task     :after a1  , 20d\nsection Another\nTask in sec      :2014-01-12  , 12d\nanother task      : 24d`\n    },\n    {\n      title: locale.pie,\n      code: `pie title Pets adopted by volunteers\n\"Dogs\" : 386\n\"Cats\" : 85\n\"Rats\" : 15`\n    },\n    {\n      title: locale.mindmap,\n      code: `mindmap\n      Root\n          A\n            B\n            C\n    `\n    },\n    {\n      title: locale.timeline,\n      code: `timeline\n      title History of Social Media Platform\n      2002 : LinkedIn\n      2004 : Facebook\n           : Google\n      2005 : Youtube\n      2006 : Twitter\n      `\n    }\n  ];\n  return {\n    viewerEffect({ markdownBody }) {\n      (async () => {\n        const els = markdownBody.querySelectorAll(\n          \"pre>code.language-mermaid\"\n        );\n        if (els.length === 0)\n          return;\n        if (!m) {\n          m = await import(\"mermaid\").then((c) => c.default);\n          if (mermaidConfig) {\n            m.initialize(mermaidConfig);\n          }\n        }\n        els.forEach((el, i) => {\n          const pre = el.parentElement;\n          const source = el.innerText;\n          const container = document.createElement(\"div\");\n          container.classList.add(\"bytemd-mermaid\");\n          container.style.lineHeight = \"initial\";\n          pre.replaceWith(container);\n          m.render(\n            `bytemd-mermaid-${Date.now()}-${i}`,\n            source,\n            // @ts-ignore\n            container\n          ).then((svgCode) => {\n            container.innerHTML = svgCode.svg;\n          }).catch((err) => {\n          });\n        });\n      })();\n    },\n    actions: [\n      {\n        title: locale.mermaid,\n        icon: icons.ChartGraph,\n        cheatsheet: \"```mermaid\",\n        handler: {\n          type: \"dropdown\",\n          actions: actionItems.map(({ title, code }) => ({\n            title,\n            handler: {\n              type: \"action\",\n              click({ editor, appendBlock, codemirror }) {\n                const { line } = appendBlock(\"```mermaid\\n\" + code + \"\\n```\");\n                editor.setSelection(\n                  codemirror.Pos(line + 1, 0),\n                  codemirror.Pos(line + code.split(\"\\n\").length)\n                );\n                editor.focus();\n              }\n            }\n          })),\n          ...locale\n        }\n      }\n    ]\n  };\n}\nexport {\n  mermaid as default\n};\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\nexport default  (function () { 'use strict';\n\n  // Kludges for bugs and behavior differences that can't be feature\n  // detected are enabled based on userAgent etc sniffing.\n  var userAgent = navigator.userAgent;\n  var platform = navigator.platform;\n\n  var gecko = /gecko\\/\\d/i.test(userAgent);\n  var ie_upto10 = /MSIE \\d/.test(userAgent);\n  var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n  var edge = /Edge\\/(\\d+)/.exec(userAgent);\n  var ie = ie_upto10 || ie_11up || edge;\n  var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n  var webkit = !edge && /WebKit\\//.test(userAgent);\n  var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n  var chrome = !edge && /Chrome\\//.test(userAgent);\n  var presto = /Opera\\//.test(userAgent);\n  var safari = /Apple Computer/.test(navigator.vendor);\n  var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n  var phantom = /PhantomJS/.test(userAgent);\n\n  var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n  var android = /Android/.test(userAgent);\n  // This is woefully incomplete. Suggestions for alternative methods welcome.\n  var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n  var mac = ios || /Mac/.test(platform);\n  var chromeOS = /\\bCrOS\\b/.test(userAgent);\n  var windows = /win/i.test(platform);\n\n  var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n  if (presto_version) { presto_version = Number(presto_version[1]); }\n  if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n  // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n  var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n  var captureRightClick = gecko || (ie && ie_version >= 9);\n\n  function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n  var rmClass = function(node, cls) {\n    var current = node.className;\n    var match = classTest(cls).exec(current);\n    if (match) {\n      var after = current.slice(match.index + match[0].length);\n      node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n    }\n  };\n\n  function removeChildren(e) {\n    for (var count = e.childNodes.length; count > 0; --count)\n      { e.removeChild(e.firstChild); }\n    return e\n  }\n\n  function removeChildrenAndAdd(parent, e) {\n    return removeChildren(parent).appendChild(e)\n  }\n\n  function elt(tag, content, className, style) {\n    var e = document.createElement(tag);\n    if (className) { e.className = className; }\n    if (style) { e.style.cssText = style; }\n    if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n    else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n    return e\n  }\n  // wrapper for elt, which removes the elt from the accessibility tree\n  function eltP(tag, content, className, style) {\n    var e = elt(tag, content, className, style);\n    e.setAttribute(\"role\", \"presentation\");\n    return e\n  }\n\n  var range;\n  if (document.createRange) { range = function(node, start, end, endNode) {\n    var r = document.createRange();\n    r.setEnd(endNode || node, end);\n    r.setStart(node, start);\n    return r\n  }; }\n  else { range = function(node, start, end) {\n    var r = document.body.createTextRange();\n    try { r.moveToElementText(node.parentNode); }\n    catch(e) { return r }\n    r.collapse(true);\n    r.moveEnd(\"character\", end);\n    r.moveStart(\"character\", start);\n    return r\n  }; }\n\n  function contains(parent, child) {\n    if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n      { child = child.parentNode; }\n    if (parent.contains)\n      { return parent.contains(child) }\n    do {\n      if (child.nodeType == 11) { child = child.host; }\n      if (child == parent) { return true }\n    } while (child = child.parentNode)\n  }\n\n  function activeElt() {\n    // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n    // IE < 10 will throw when accessed while the page is loading or in an iframe.\n    // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n    var activeElement;\n    try {\n      activeElement = document.activeElement;\n    } catch(e) {\n      activeElement = document.body || null;\n    }\n    while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n      { activeElement = activeElement.shadowRoot.activeElement; }\n    return activeElement\n  }\n\n  function addClass(node, cls) {\n    var current = node.className;\n    if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n  }\n  function joinClasses(a, b) {\n    var as = a.split(\" \");\n    for (var i = 0; i < as.length; i++)\n      { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n    return b\n  }\n\n  var selectInput = function(node) { node.select(); };\n  if (ios) // Mobile Safari apparently has a bug where select() is broken.\n    { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n  else if (ie) // Suppress mysterious IE10 errors\n    { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n  function bind(f) {\n    var args = Array.prototype.slice.call(arguments, 1);\n    return function(){return f.apply(null, args)}\n  }\n\n  function copyObj(obj, target, overwrite) {\n    if (!target) { target = {}; }\n    for (var prop in obj)\n      { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n        { target[prop] = obj[prop]; } }\n    return target\n  }\n\n  // Counts the column offset in a string, taking tabs into account.\n  // Used mostly to find indentation.\n  function countColumn(string, end, tabSize, startIndex, startValue) {\n    if (end == null) {\n      end = string.search(/[^\\s\\u00a0]/);\n      if (end == -1) { end = string.length; }\n    }\n    for (var i = startIndex || 0, n = startValue || 0;;) {\n      var nextTab = string.indexOf(\"\\t\", i);\n      if (nextTab < 0 || nextTab >= end)\n        { return n + (end - i) }\n      n += nextTab - i;\n      n += tabSize - (n % tabSize);\n      i = nextTab + 1;\n    }\n  }\n\n  var Delayed = function() {\n    this.id = null;\n    this.f = null;\n    this.time = 0;\n    this.handler = bind(this.onTimeout, this);\n  };\n  Delayed.prototype.onTimeout = function (self) {\n    self.id = 0;\n    if (self.time <= +new Date) {\n      self.f();\n    } else {\n      setTimeout(self.handler, self.time - +new Date);\n    }\n  };\n  Delayed.prototype.set = function (ms, f) {\n    this.f = f;\n    var time = +new Date + ms;\n    if (!this.id || time < this.time) {\n      clearTimeout(this.id);\n      this.id = setTimeout(this.handler, ms);\n      this.time = time;\n    }\n  };\n\n  function indexOf(array, elt) {\n    for (var i = 0; i < array.length; ++i)\n      { if (array[i] == elt) { return i } }\n    return -1\n  }\n\n  // Number of pixels added to scroller and sizer to hide scrollbar\n  var scrollerGap = 50;\n\n  // Returned or thrown by various protocols to signal 'I'm not\n  // handling this'.\n  var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n  // Reused option objects for setSelection & friends\n  var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n  // The inverse of countColumn -- find the offset that corresponds to\n  // a particular column.\n  function findColumn(string, goal, tabSize) {\n    for (var pos = 0, col = 0;;) {\n      var nextTab = string.indexOf(\"\\t\", pos);\n      if (nextTab == -1) { nextTab = string.length; }\n      var skipped = nextTab - pos;\n      if (nextTab == string.length || col + skipped >= goal)\n        { return pos + Math.min(skipped, goal - col) }\n      col += nextTab - pos;\n      col += tabSize - (col % tabSize);\n      pos = nextTab + 1;\n      if (col >= goal) { return pos }\n    }\n  }\n\n  var spaceStrs = [\"\"];\n  function spaceStr(n) {\n    while (spaceStrs.length <= n)\n      { spaceStrs.push(lst(spaceStrs) + \" \"); }\n    return spaceStrs[n]\n  }\n\n  function lst(arr) { return arr[arr.length-1] }\n\n  function map(array, f) {\n    var out = [];\n    for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n    return out\n  }\n\n  function insertSorted(array, value, score) {\n    var pos = 0, priority = score(value);\n    while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n    array.splice(pos, 0, value);\n  }\n\n  function nothing() {}\n\n  function createObj(base, props) {\n    var inst;\n    if (Object.create) {\n      inst = Object.create(base);\n    } else {\n      nothing.prototype = base;\n      inst = new nothing();\n    }\n    if (props) { copyObj(props, inst); }\n    return inst\n  }\n\n  var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n  function isWordCharBasic(ch) {\n    return /\\w/.test(ch) || ch > \"\\x80\" &&\n      (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n  }\n  function isWordChar(ch, helper) {\n    if (!helper) { return isWordCharBasic(ch) }\n    if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n    return helper.test(ch)\n  }\n\n  function isEmpty(obj) {\n    for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n    return true\n  }\n\n  // Extending unicode characters. A series of a non-extending char +\n  // any number of extending chars is treated as a single unit as far\n  // as editing and measuring is concerned. This is not fully correct,\n  // since some scripts/fonts/browsers also treat other configurations\n  // of code points as a group.\n  var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n  function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n  // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n  function skipExtendingChars(str, pos, dir) {\n    while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n    return pos\n  }\n\n  // Returns the value from the range [`from`; `to`] that satisfies\n  // `pred` and is closest to `from`. Assumes that at least `to`\n  // satisfies `pred`. Supports `from` being greater than `to`.\n  function findFirst(pred, from, to) {\n    // At any point we are certain `to` satisfies `pred`, don't know\n    // whether `from` does.\n    var dir = from > to ? -1 : 1;\n    for (;;) {\n      if (from == to) { return from }\n      var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n      if (mid == from) { return pred(mid) ? from : to }\n      if (pred(mid)) { to = mid; }\n      else { from = mid + dir; }\n    }\n  }\n\n  // BIDI HELPERS\n\n  function iterateBidiSections(order, from, to, f) {\n    if (!order) { return f(from, to, \"ltr\", 0) }\n    var found = false;\n    for (var i = 0; i < order.length; ++i) {\n      var part = order[i];\n      if (part.from < to && part.to > from || from == to && part.to == from) {\n        f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n        found = true;\n      }\n    }\n    if (!found) { f(from, to, \"ltr\"); }\n  }\n\n  var bidiOther = null;\n  function getBidiPartAt(order, ch, sticky) {\n    var found;\n    bidiOther = null;\n    for (var i = 0; i < order.length; ++i) {\n      var cur = order[i];\n      if (cur.from < ch && cur.to > ch) { return i }\n      if (cur.to == ch) {\n        if (cur.from != cur.to && sticky == \"before\") { found = i; }\n        else { bidiOther = i; }\n      }\n      if (cur.from == ch) {\n        if (cur.from != cur.to && sticky != \"before\") { found = i; }\n        else { bidiOther = i; }\n      }\n    }\n    return found != null ? found : bidiOther\n  }\n\n  // Bidirectional ordering algorithm\n  // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n  // that this (partially) implements.\n\n  // One-char codes used for character types:\n  // L (L):   Left-to-Right\n  // R (R):   Right-to-Left\n  // r (AL):  Right-to-Left Arabic\n  // 1 (EN):  European Number\n  // + (ES):  European Number Separator\n  // % (ET):  European Number Terminator\n  // n (AN):  Arabic Number\n  // , (CS):  Common Number Separator\n  // m (NSM): Non-Spacing Mark\n  // b (BN):  Boundary Neutral\n  // s (B):   Paragraph Separator\n  // t (S):   Segment Separator\n  // w (WS):  Whitespace\n  // N (ON):  Other Neutrals\n\n  // Returns null if characters are ordered as they appear\n  // (left-to-right), or an array of sections ({from, to, level}\n  // objects) in the order in which they occur visually.\n  var bidiOrdering = (function() {\n    // Character types for codepoints 0 to 0xff\n    var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n    // Character types for codepoints 0x600 to 0x6f9\n    var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n    function charType(code) {\n      if (code <= 0xf7) { return lowTypes.charAt(code) }\n      else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n      else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n      else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n      else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n      else if (code == 0x200c) { return \"b\" }\n      else { return \"L\" }\n    }\n\n    var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n    var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n    function BidiSpan(level, from, to) {\n      this.level = level;\n      this.from = from; this.to = to;\n    }\n\n    return function(str, direction) {\n      var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n      if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n      var len = str.length, types = [];\n      for (var i = 0; i < len; ++i)\n        { types.push(charType(str.charCodeAt(i))); }\n\n      // W1. Examine each non-spacing mark (NSM) in the level run, and\n      // change the type of the NSM to the type of the previous\n      // character. If the NSM is at the start of the level run, it will\n      // get the type of sor.\n      for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n        var type = types[i$1];\n        if (type == \"m\") { types[i$1] = prev; }\n        else { prev = type; }\n      }\n\n      // W2. Search backwards from each instance of a European number\n      // until the first strong type (R, L, AL, or sor) is found. If an\n      // AL is found, change the type of the European number to Arabic\n      // number.\n      // W3. Change all ALs to R.\n      for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n        var type$1 = types[i$2];\n        if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n        else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n      }\n\n      // W4. A single European separator between two European numbers\n      // changes to a European number. A single common separator between\n      // two numbers of the same type changes to that type.\n      for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n        var type$2 = types[i$3];\n        if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n        else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n                 (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n        prev$1 = type$2;\n      }\n\n      // W5. A sequence of European terminators adjacent to European\n      // numbers changes to all European numbers.\n      // W6. Otherwise, separators and terminators change to Other\n      // Neutral.\n      for (var i$4 = 0; i$4 < len; ++i$4) {\n        var type$3 = types[i$4];\n        if (type$3 == \",\") { types[i$4] = \"N\"; }\n        else if (type$3 == \"%\") {\n          var end = (void 0);\n          for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n          var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n          for (var j = i$4; j < end; ++j) { types[j] = replace; }\n          i$4 = end - 1;\n        }\n      }\n\n      // W7. Search backwards from each instance of a European number\n      // until the first strong type (R, L, or sor) is found. If an L is\n      // found, then change the type of the European number to L.\n      for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n        var type$4 = types[i$5];\n        if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n        else if (isStrong.test(type$4)) { cur$1 = type$4; }\n      }\n\n      // N1. A sequence of neutrals takes the direction of the\n      // surrounding strong text if the text on both sides has the same\n      // direction. European and Arabic numbers act as if they were R in\n      // terms of their influence on neutrals. Start-of-level-run (sor)\n      // and end-of-level-run (eor) are used at level run boundaries.\n      // N2. Any remaining neutrals take the embedding direction.\n      for (var i$6 = 0; i$6 < len; ++i$6) {\n        if (isNeutral.test(types[i$6])) {\n          var end$1 = (void 0);\n          for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n          var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n          var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n          var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n          for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n          i$6 = end$1 - 1;\n        }\n      }\n\n      // Here we depart from the documented algorithm, in order to avoid\n      // building up an actual levels array. Since there are only three\n      // levels (0, 1, 2) in an implementation that doesn't take\n      // explicit embedding into account, we can build up the order on\n      // the fly, without following the level-based algorithm.\n      var order = [], m;\n      for (var i$7 = 0; i$7 < len;) {\n        if (countsAsLeft.test(types[i$7])) {\n          var start = i$7;\n          for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n          order.push(new BidiSpan(0, start, i$7));\n        } else {\n          var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n          for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n          for (var j$2 = pos; j$2 < i$7;) {\n            if (countsAsNum.test(types[j$2])) {\n              if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n              var nstart = j$2;\n              for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n              order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n              at += isRTL;\n              pos = j$2;\n            } else { ++j$2; }\n          }\n          if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n        }\n      }\n      if (direction == \"ltr\") {\n        if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n          order[0].from = m[0].length;\n          order.unshift(new BidiSpan(0, 0, m[0].length));\n        }\n        if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n          lst(order).to -= m[0].length;\n          order.push(new BidiSpan(0, len - m[0].length, len));\n        }\n      }\n\n      return direction == \"rtl\" ? order.reverse() : order\n    }\n  })();\n\n  // Get the bidi ordering for the given line (and cache it). Returns\n  // false for lines that are fully left-to-right, and an array of\n  // BidiSpan objects otherwise.\n  function getOrder(line, direction) {\n    var order = line.order;\n    if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n    return order\n  }\n\n  // EVENT HANDLING\n\n  // Lightweight event framework. on/off also work on DOM nodes,\n  // registering native DOM handlers.\n\n  var noHandlers = [];\n\n  var on = function(emitter, type, f) {\n    if (emitter.addEventListener) {\n      emitter.addEventListener(type, f, false);\n    } else if (emitter.attachEvent) {\n      emitter.attachEvent(\"on\" + type, f);\n    } else {\n      var map = emitter._handlers || (emitter._handlers = {});\n      map[type] = (map[type] || noHandlers).concat(f);\n    }\n  };\n\n  function getHandlers(emitter, type) {\n    return emitter._handlers && emitter._handlers[type] || noHandlers\n  }\n\n  function off(emitter, type, f) {\n    if (emitter.removeEventListener) {\n      emitter.removeEventListener(type, f, false);\n    } else if (emitter.detachEvent) {\n      emitter.detachEvent(\"on\" + type, f);\n    } else {\n      var map = emitter._handlers, arr = map && map[type];\n      if (arr) {\n        var index = indexOf(arr, f);\n        if (index > -1)\n          { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n      }\n    }\n  }\n\n  function signal(emitter, type /*, values...*/) {\n    var handlers = getHandlers(emitter, type);\n    if (!handlers.length) { return }\n    var args = Array.prototype.slice.call(arguments, 2);\n    for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n  }\n\n  // The DOM events that CodeMirror handles can be overridden by\n  // registering a (non-DOM) handler on the editor for the event name,\n  // and preventDefault-ing the event in that handler.\n  function signalDOMEvent(cm, e, override) {\n    if (typeof e == \"string\")\n      { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n    signal(cm, override || e.type, cm, e);\n    return e_defaultPrevented(e) || e.codemirrorIgnore\n  }\n\n  function signalCursorActivity(cm) {\n    var arr = cm._handlers && cm._handlers.cursorActivity;\n    if (!arr) { return }\n    var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n    for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n      { set.push(arr[i]); } }\n  }\n\n  function hasHandler(emitter, type) {\n    return getHandlers(emitter, type).length > 0\n  }\n\n  // Add on and off methods to a constructor's prototype, to make\n  // registering events on such objects more convenient.\n  function eventMixin(ctor) {\n    ctor.prototype.on = function(type, f) {on(this, type, f);};\n    ctor.prototype.off = function(type, f) {off(this, type, f);};\n  }\n\n  // Due to the fact that we still support jurassic IE versions, some\n  // compatibility wrappers are needed.\n\n  function e_preventDefault(e) {\n    if (e.preventDefault) { e.preventDefault(); }\n    else { e.returnValue = false; }\n  }\n  function e_stopPropagation(e) {\n    if (e.stopPropagation) { e.stopPropagation(); }\n    else { e.cancelBubble = true; }\n  }\n  function e_defaultPrevented(e) {\n    return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n  }\n  function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n  function e_target(e) {return e.target || e.srcElement}\n  function e_button(e) {\n    var b = e.which;\n    if (b == null) {\n      if (e.button & 1) { b = 1; }\n      else if (e.button & 2) { b = 3; }\n      else if (e.button & 4) { b = 2; }\n    }\n    if (mac && e.ctrlKey && b == 1) { b = 3; }\n    return b\n  }\n\n  // Detect drag-and-drop\n  var dragAndDrop = function() {\n    // There is *some* kind of drag-and-drop support in IE6-8, but I\n    // couldn't get it to work yet.\n    if (ie && ie_version < 9) { return false }\n    var div = elt('div');\n    return \"draggable\" in div || \"dragDrop\" in div\n  }();\n\n  var zwspSupported;\n  function zeroWidthElement(measure) {\n    if (zwspSupported == null) {\n      var test = elt(\"span\", \"\\u200b\");\n      removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n      if (measure.firstChild.offsetHeight != 0)\n        { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n    }\n    var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n      elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n    node.setAttribute(\"cm-text\", \"\");\n    return node\n  }\n\n  // Feature-detect IE's crummy client rect reporting for bidi text\n  var badBidiRects;\n  function hasBadBidiRects(measure) {\n    if (badBidiRects != null) { return badBidiRects }\n    var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n    var r0 = range(txt, 0, 1).getBoundingClientRect();\n    var r1 = range(txt, 1, 2).getBoundingClientRect();\n    removeChildren(measure);\n    if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n    return badBidiRects = (r1.right - r0.right < 3)\n  }\n\n  // See if \"\".split is the broken IE version, if so, provide an\n  // alternative way to split lines.\n  var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n    var pos = 0, result = [], l = string.length;\n    while (pos <= l) {\n      var nl = string.indexOf(\"\\n\", pos);\n      if (nl == -1) { nl = string.length; }\n      var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n      var rt = line.indexOf(\"\\r\");\n      if (rt != -1) {\n        result.push(line.slice(0, rt));\n        pos += rt + 1;\n      } else {\n        result.push(line);\n        pos = nl + 1;\n      }\n    }\n    return result\n  } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n  var hasSelection = window.getSelection ? function (te) {\n    try { return te.selectionStart != te.selectionEnd }\n    catch(e) { return false }\n  } : function (te) {\n    var range;\n    try {range = te.ownerDocument.selection.createRange();}\n    catch(e) {}\n    if (!range || range.parentElement() != te) { return false }\n    return range.compareEndPoints(\"StartToEnd\", range) != 0\n  };\n\n  var hasCopyEvent = (function () {\n    var e = elt(\"div\");\n    if (\"oncopy\" in e) { return true }\n    e.setAttribute(\"oncopy\", \"return;\");\n    return typeof e.oncopy == \"function\"\n  })();\n\n  var badZoomedRects = null;\n  function hasBadZoomedRects(measure) {\n    if (badZoomedRects != null) { return badZoomedRects }\n    var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n    var normal = node.getBoundingClientRect();\n    var fromRange = range(node, 0, 1).getBoundingClientRect();\n    return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n  }\n\n  // Known modes, by name and by MIME\n  var modes = {}, mimeModes = {};\n\n  // Extra arguments are stored as the mode's dependencies, which is\n  // used by (legacy) mechanisms like loadmode.js to automatically\n  // load a mode. (Preferred mechanism is the require/define calls.)\n  function defineMode(name, mode) {\n    if (arguments.length > 2)\n      { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n    modes[name] = mode;\n  }\n\n  function defineMIME(mime, spec) {\n    mimeModes[mime] = spec;\n  }\n\n  // Given a MIME type, a {name, ...options} config object, or a name\n  // string, return a mode config object.\n  function resolveMode(spec) {\n    if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n      spec = mimeModes[spec];\n    } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n      var found = mimeModes[spec.name];\n      if (typeof found == \"string\") { found = {name: found}; }\n      spec = createObj(found, spec);\n      spec.name = found.name;\n    } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n      return resolveMode(\"application/xml\")\n    } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n      return resolveMode(\"application/json\")\n    }\n    if (typeof spec == \"string\") { return {name: spec} }\n    else { return spec || {name: \"null\"} }\n  }\n\n  // Given a mode spec (anything that resolveMode accepts), find and\n  // initialize an actual mode object.\n  function getMode(options, spec) {\n    spec = resolveMode(spec);\n    var mfactory = modes[spec.name];\n    if (!mfactory) { return getMode(options, \"text/plain\") }\n    var modeObj = mfactory(options, spec);\n    if (modeExtensions.hasOwnProperty(spec.name)) {\n      var exts = modeExtensions[spec.name];\n      for (var prop in exts) {\n        if (!exts.hasOwnProperty(prop)) { continue }\n        if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n        modeObj[prop] = exts[prop];\n      }\n    }\n    modeObj.name = spec.name;\n    if (spec.helperType) { modeObj.helperType = spec.helperType; }\n    if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n      { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n    return modeObj\n  }\n\n  // This can be used to attach properties to mode objects from\n  // outside the actual mode definition.\n  var modeExtensions = {};\n  function extendMode(mode, properties) {\n    var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n    copyObj(properties, exts);\n  }\n\n  function copyState(mode, state) {\n    if (state === true) { return state }\n    if (mode.copyState) { return mode.copyState(state) }\n    var nstate = {};\n    for (var n in state) {\n      var val = state[n];\n      if (val instanceof Array) { val = val.concat([]); }\n      nstate[n] = val;\n    }\n    return nstate\n  }\n\n  // Given a mode and a state (for that mode), find the inner mode and\n  // state at the position that the state refers to.\n  function innerMode(mode, state) {\n    var info;\n    while (mode.innerMode) {\n      info = mode.innerMode(state);\n      if (!info || info.mode == mode) { break }\n      state = info.state;\n      mode = info.mode;\n    }\n    return info || {mode: mode, state: state}\n  }\n\n  function startState(mode, a1, a2) {\n    return mode.startState ? mode.startState(a1, a2) : true\n  }\n\n  // STRING STREAM\n\n  // Fed to the mode parsers, provides helper functions to make\n  // parsers more succinct.\n\n  var StringStream = function(string, tabSize, lineOracle) {\n    this.pos = this.start = 0;\n    this.string = string;\n    this.tabSize = tabSize || 8;\n    this.lastColumnPos = this.lastColumnValue = 0;\n    this.lineStart = 0;\n    this.lineOracle = lineOracle;\n  };\n\n  StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n  StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n  StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n  StringStream.prototype.next = function () {\n    if (this.pos < this.string.length)\n      { return this.string.charAt(this.pos++) }\n  };\n  StringStream.prototype.eat = function (match) {\n    var ch = this.string.charAt(this.pos);\n    var ok;\n    if (typeof match == \"string\") { ok = ch == match; }\n    else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n    if (ok) {++this.pos; return ch}\n  };\n  StringStream.prototype.eatWhile = function (match) {\n    var start = this.pos;\n    while (this.eat(match)){}\n    return this.pos > start\n  };\n  StringStream.prototype.eatSpace = function () {\n    var start = this.pos;\n    while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n    return this.pos > start\n  };\n  StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n  StringStream.prototype.skipTo = function (ch) {\n    var found = this.string.indexOf(ch, this.pos);\n    if (found > -1) {this.pos = found; return true}\n  };\n  StringStream.prototype.backUp = function (n) {this.pos -= n;};\n  StringStream.prototype.column = function () {\n    if (this.lastColumnPos < this.start) {\n      this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n      this.lastColumnPos = this.start;\n    }\n    return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n  };\n  StringStream.prototype.indentation = function () {\n    return countColumn(this.string, null, this.tabSize) -\n      (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n  };\n  StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n    if (typeof pattern == \"string\") {\n      var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n      var substr = this.string.substr(this.pos, pattern.length);\n      if (cased(substr) == cased(pattern)) {\n        if (consume !== false) { this.pos += pattern.length; }\n        return true\n      }\n    } else {\n      var match = this.string.slice(this.pos).match(pattern);\n      if (match && match.index > 0) { return null }\n      if (match && consume !== false) { this.pos += match[0].length; }\n      return match\n    }\n  };\n  StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n  StringStream.prototype.hideFirstChars = function (n, inner) {\n    this.lineStart += n;\n    try { return inner() }\n    finally { this.lineStart -= n; }\n  };\n  StringStream.prototype.lookAhead = function (n) {\n    var oracle = this.lineOracle;\n    return oracle && oracle.lookAhead(n)\n  };\n  StringStream.prototype.baseToken = function () {\n    var oracle = this.lineOracle;\n    return oracle && oracle.baseToken(this.pos)\n  };\n\n  // Find the line object corresponding to the given line number.\n  function getLine(doc, n) {\n    n -= doc.first;\n    if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n    var chunk = doc;\n    while (!chunk.lines) {\n      for (var i = 0;; ++i) {\n        var child = chunk.children[i], sz = child.chunkSize();\n        if (n < sz) { chunk = child; break }\n        n -= sz;\n      }\n    }\n    return chunk.lines[n]\n  }\n\n  // Get the part of a document between two positions, as an array of\n  // strings.\n  function getBetween(doc, start, end) {\n    var out = [], n = start.line;\n    doc.iter(start.line, end.line + 1, function (line) {\n      var text = line.text;\n      if (n == end.line) { text = text.slice(0, end.ch); }\n      if (n == start.line) { text = text.slice(start.ch); }\n      out.push(text);\n      ++n;\n    });\n    return out\n  }\n  // Get the lines between from and to, as array of strings.\n  function getLines(doc, from, to) {\n    var out = [];\n    doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n    return out\n  }\n\n  // Update the height of a line, propagating the height change\n  // upwards to parent nodes.\n  function updateLineHeight(line, height) {\n    var diff = height - line.height;\n    if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n  }\n\n  // Given a line object, find its line number by walking up through\n  // its parent links.\n  function lineNo(line) {\n    if (line.parent == null) { return null }\n    var cur = line.parent, no = indexOf(cur.lines, line);\n    for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n      for (var i = 0;; ++i) {\n        if (chunk.children[i] == cur) { break }\n        no += chunk.children[i].chunkSize();\n      }\n    }\n    return no + cur.first\n  }\n\n  // Find the line at the given vertical position, using the height\n  // information in the document tree.\n  function lineAtHeight(chunk, h) {\n    var n = chunk.first;\n    outer: do {\n      for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n        var child = chunk.children[i$1], ch = child.height;\n        if (h < ch) { chunk = child; continue outer }\n        h -= ch;\n        n += child.chunkSize();\n      }\n      return n\n    } while (!chunk.lines)\n    var i = 0;\n    for (; i < chunk.lines.length; ++i) {\n      var line = chunk.lines[i], lh = line.height;\n      if (h < lh) { break }\n      h -= lh;\n    }\n    return n + i\n  }\n\n  function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n  function lineNumberFor(options, i) {\n    return String(options.lineNumberFormatter(i + options.firstLineNumber))\n  }\n\n  // A Pos instance represents a position within the text.\n  function Pos(line, ch, sticky) {\n    if ( sticky === void 0 ) sticky = null;\n\n    if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n    this.line = line;\n    this.ch = ch;\n    this.sticky = sticky;\n  }\n\n  // Compare two positions, return 0 if they are the same, a negative\n  // number when a is less, and a positive number otherwise.\n  function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n  function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n  function copyPos(x) {return Pos(x.line, x.ch)}\n  function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n  function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n  // Most of the external API clips given positions to make sure they\n  // actually exist within the document.\n  function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n  function clipPos(doc, pos) {\n    if (pos.line < doc.first) { return Pos(doc.first, 0) }\n    var last = doc.first + doc.size - 1;\n    if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n    return clipToLen(pos, getLine(doc, pos.line).text.length)\n  }\n  function clipToLen(pos, linelen) {\n    var ch = pos.ch;\n    if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n    else if (ch < 0) { return Pos(pos.line, 0) }\n    else { return pos }\n  }\n  function clipPosArray(doc, array) {\n    var out = [];\n    for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n    return out\n  }\n\n  var SavedContext = function(state, lookAhead) {\n    this.state = state;\n    this.lookAhead = lookAhead;\n  };\n\n  var Context = function(doc, state, line, lookAhead) {\n    this.state = state;\n    this.doc = doc;\n    this.line = line;\n    this.maxLookAhead = lookAhead || 0;\n    this.baseTokens = null;\n    this.baseTokenPos = 1;\n  };\n\n  Context.prototype.lookAhead = function (n) {\n    var line = this.doc.getLine(this.line + n);\n    if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n    return line\n  };\n\n  Context.prototype.baseToken = function (n) {\n    if (!this.baseTokens) { return null }\n    while (this.baseTokens[this.baseTokenPos] <= n)\n      { this.baseTokenPos += 2; }\n    var type = this.baseTokens[this.baseTokenPos + 1];\n    return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n            size: this.baseTokens[this.baseTokenPos] - n}\n  };\n\n  Context.prototype.nextLine = function () {\n    this.line++;\n    if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n  };\n\n  Context.fromSaved = function (doc, saved, line) {\n    if (saved instanceof SavedContext)\n      { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n    else\n      { return new Context(doc, copyState(doc.mode, saved), line) }\n  };\n\n  Context.prototype.save = function (copy) {\n    var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n    return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n  };\n\n\n  // Compute a style array (an array starting with a mode generation\n  // -- for invalidation -- followed by pairs of end positions and\n  // style strings), which is used to highlight the tokens on the\n  // line.\n  function highlightLine(cm, line, context, forceToEnd) {\n    // A styles array always starts with a number identifying the\n    // mode/overlays that it is based on (for easy invalidation).\n    var st = [cm.state.modeGen], lineClasses = {};\n    // Compute the base array of styles\n    runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n            lineClasses, forceToEnd);\n    var state = context.state;\n\n    // Run overlays, adjust style array.\n    var loop = function ( o ) {\n      context.baseTokens = st;\n      var overlay = cm.state.overlays[o], i = 1, at = 0;\n      context.state = true;\n      runMode(cm, line.text, overlay.mode, context, function (end, style) {\n        var start = i;\n        // Ensure there's a token end at the current position, and that i points at it\n        while (at < end) {\n          var i_end = st[i];\n          if (i_end > end)\n            { st.splice(i, 1, end, st[i+1], i_end); }\n          i += 2;\n          at = Math.min(end, i_end);\n        }\n        if (!style) { return }\n        if (overlay.opaque) {\n          st.splice(start, i - start, end, \"overlay \" + style);\n          i = start + 2;\n        } else {\n          for (; start < i; start += 2) {\n            var cur = st[start+1];\n            st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n          }\n        }\n      }, lineClasses);\n      context.state = state;\n      context.baseTokens = null;\n      context.baseTokenPos = 1;\n    };\n\n    for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n    return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n  }\n\n  function getLineStyles(cm, line, updateFrontier) {\n    if (!line.styles || line.styles[0] != cm.state.modeGen) {\n      var context = getContextBefore(cm, lineNo(line));\n      var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n      var result = highlightLine(cm, line, context);\n      if (resetState) { context.state = resetState; }\n      line.stateAfter = context.save(!resetState);\n      line.styles = result.styles;\n      if (result.classes) { line.styleClasses = result.classes; }\n      else if (line.styleClasses) { line.styleClasses = null; }\n      if (updateFrontier === cm.doc.highlightFrontier)\n        { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n    }\n    return line.styles\n  }\n\n  function getContextBefore(cm, n, precise) {\n    var doc = cm.doc, display = cm.display;\n    if (!doc.mode.startState) { return new Context(doc, true, n) }\n    var start = findStartLine(cm, n, precise);\n    var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n    var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n    doc.iter(start, n, function (line) {\n      processLine(cm, line.text, context);\n      var pos = context.line;\n      line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n      context.nextLine();\n    });\n    if (precise) { doc.modeFrontier = context.line; }\n    return context\n  }\n\n  // Lightweight form of highlight -- proceed over this line and\n  // update state, but don't save a style array. Used for lines that\n  // aren't currently visible.\n  function processLine(cm, text, context, startAt) {\n    var mode = cm.doc.mode;\n    var stream = new StringStream(text, cm.options.tabSize, context);\n    stream.start = stream.pos = startAt || 0;\n    if (text == \"\") { callBlankLine(mode, context.state); }\n    while (!stream.eol()) {\n      readToken(mode, stream, context.state);\n      stream.start = stream.pos;\n    }\n  }\n\n  function callBlankLine(mode, state) {\n    if (mode.blankLine) { return mode.blankLine(state) }\n    if (!mode.innerMode) { return }\n    var inner = innerMode(mode, state);\n    if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n  }\n\n  function readToken(mode, stream, state, inner) {\n    for (var i = 0; i < 10; i++) {\n      if (inner) { inner[0] = innerMode(mode, state).mode; }\n      var style = mode.token(stream, state);\n      if (stream.pos > stream.start) { return style }\n    }\n    throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n  }\n\n  var Token = function(stream, type, state) {\n    this.start = stream.start; this.end = stream.pos;\n    this.string = stream.current();\n    this.type = type || null;\n    this.state = state;\n  };\n\n  // Utility for getTokenAt and getLineTokens\n  function takeToken(cm, pos, precise, asArray) {\n    var doc = cm.doc, mode = doc.mode, style;\n    pos = clipPos(doc, pos);\n    var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n    var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n    if (asArray) { tokens = []; }\n    while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n      stream.start = stream.pos;\n      style = readToken(mode, stream, context.state);\n      if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n    }\n    return asArray ? tokens : new Token(stream, style, context.state)\n  }\n\n  function extractLineClasses(type, output) {\n    if (type) { for (;;) {\n      var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n      if (!lineClass) { break }\n      type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n      var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n      if (output[prop] == null)\n        { output[prop] = lineClass[2]; }\n      else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n        { output[prop] += \" \" + lineClass[2]; }\n    } }\n    return type\n  }\n\n  // Run the given mode's parser over a line, calling f for each token.\n  function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n    var flattenSpans = mode.flattenSpans;\n    if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n    var curStart = 0, curStyle = null;\n    var stream = new StringStream(text, cm.options.tabSize, context), style;\n    var inner = cm.options.addModeClass && [null];\n    if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n    while (!stream.eol()) {\n      if (stream.pos > cm.options.maxHighlightLength) {\n        flattenSpans = false;\n        if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n        stream.pos = text.length;\n        style = null;\n      } else {\n        style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n      }\n      if (inner) {\n        var mName = inner[0].name;\n        if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n      }\n      if (!flattenSpans || curStyle != style) {\n        while (curStart < stream.start) {\n          curStart = Math.min(stream.start, curStart + 5000);\n          f(curStart, curStyle);\n        }\n        curStyle = style;\n      }\n      stream.start = stream.pos;\n    }\n    while (curStart < stream.pos) {\n      // Webkit seems to refuse to render text nodes longer than 57444\n      // characters, and returns inaccurate measurements in nodes\n      // starting around 5000 chars.\n      var pos = Math.min(stream.pos, curStart + 5000);\n      f(pos, curStyle);\n      curStart = pos;\n    }\n  }\n\n  // Finds the line to start with when starting a parse. Tries to\n  // find a line with a stateAfter, so that it can start with a\n  // valid state. If that fails, it returns the line with the\n  // smallest indentation, which tends to need the least context to\n  // parse correctly.\n  function findStartLine(cm, n, precise) {\n    var minindent, minline, doc = cm.doc;\n    var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n    for (var search = n; search > lim; --search) {\n      if (search <= doc.first) { return doc.first }\n      var line = getLine(doc, search - 1), after = line.stateAfter;\n      if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n        { return search }\n      var indented = countColumn(line.text, null, cm.options.tabSize);\n      if (minline == null || minindent > indented) {\n        minline = search - 1;\n        minindent = indented;\n      }\n    }\n    return minline\n  }\n\n  function retreatFrontier(doc, n) {\n    doc.modeFrontier = Math.min(doc.modeFrontier, n);\n    if (doc.highlightFrontier < n - 10) { return }\n    var start = doc.first;\n    for (var line = n - 1; line > start; line--) {\n      var saved = getLine(doc, line).stateAfter;\n      // change is on 3\n      // state on line 1 looked ahead 2 -- so saw 3\n      // test 1 + 2 < 3 should cover this\n      if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n        start = line + 1;\n        break\n      }\n    }\n    doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n  }\n\n  // Optimize some code when these features are not used.\n  var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n  function seeReadOnlySpans() {\n    sawReadOnlySpans = true;\n  }\n\n  function seeCollapsedSpans() {\n    sawCollapsedSpans = true;\n  }\n\n  // TEXTMARKER SPANS\n\n  function MarkedSpan(marker, from, to) {\n    this.marker = marker;\n    this.from = from; this.to = to;\n  }\n\n  // Search an array of spans for a span matching the given marker.\n  function getMarkedSpanFor(spans, marker) {\n    if (spans) { for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if (span.marker == marker) { return span }\n    } }\n  }\n\n  // Remove a span from an array, returning undefined if no spans are\n  // left (we don't store arrays for lines without spans).\n  function removeMarkedSpan(spans, span) {\n    var r;\n    for (var i = 0; i < spans.length; ++i)\n      { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n    return r\n  }\n\n  // Add a span to a line.\n  function addMarkedSpan(line, span, op) {\n    var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n    if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n      line.markedSpans.push(span);\n    } else {\n      line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n      if (inThisOp) { inThisOp.add(line.markedSpans); }\n    }\n    span.marker.attachLine(line);\n  }\n\n  // Used for the algorithm that adjusts markers for a change in the\n  // document. These functions cut an array of spans at a given\n  // character position, returning an array of remaining chunks (or\n  // undefined if nothing remains).\n  function markedSpansBefore(old, startCh, isInsert) {\n    var nw;\n    if (old) { for (var i = 0; i < old.length; ++i) {\n      var span = old[i], marker = span.marker;\n      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n      if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n        var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n        ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n      }\n    } }\n    return nw\n  }\n  function markedSpansAfter(old, endCh, isInsert) {\n    var nw;\n    if (old) { for (var i = 0; i < old.length; ++i) {\n      var span = old[i], marker = span.marker;\n      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n      if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n        var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n        ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                              span.to == null ? null : span.to - endCh));\n      }\n    } }\n    return nw\n  }\n\n  // Given a change object, compute the new set of marker spans that\n  // cover the line in which the change took place. Removes spans\n  // entirely within the change, reconnects spans belonging to the\n  // same marker that appear on both sides of the change, and cuts off\n  // spans partially within the change. Returns an array of span\n  // arrays with one element for each line in (after) the change.\n  function stretchSpansOverChange(doc, change) {\n    if (change.full) { return null }\n    var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n    var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n    if (!oldFirst && !oldLast) { return null }\n\n    var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n    // Get the spans that 'stick out' on both sides\n    var first = markedSpansBefore(oldFirst, startCh, isInsert);\n    var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n    // Next, merge those two ends\n    var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n    if (first) {\n      // Fix up .to properties of first\n      for (var i = 0; i < first.length; ++i) {\n        var span = first[i];\n        if (span.to == null) {\n          var found = getMarkedSpanFor(last, span.marker);\n          if (!found) { span.to = startCh; }\n          else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n        }\n      }\n    }\n    if (last) {\n      // Fix up .from in last (or move them into first in case of sameLine)\n      for (var i$1 = 0; i$1 < last.length; ++i$1) {\n        var span$1 = last[i$1];\n        if (span$1.to != null) { span$1.to += offset; }\n        if (span$1.from == null) {\n          var found$1 = getMarkedSpanFor(first, span$1.marker);\n          if (!found$1) {\n            span$1.from = offset;\n            if (sameLine) { (first || (first = [])).push(span$1); }\n          }\n        } else {\n          span$1.from += offset;\n          if (sameLine) { (first || (first = [])).push(span$1); }\n        }\n      }\n    }\n    // Make sure we didn't create any zero-length spans\n    if (first) { first = clearEmptySpans(first); }\n    if (last && last != first) { last = clearEmptySpans(last); }\n\n    var newMarkers = [first];\n    if (!sameLine) {\n      // Fill gap with whole-line-spans\n      var gap = change.text.length - 2, gapMarkers;\n      if (gap > 0 && first)\n        { for (var i$2 = 0; i$2 < first.length; ++i$2)\n          { if (first[i$2].to == null)\n            { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n      for (var i$3 = 0; i$3 < gap; ++i$3)\n        { newMarkers.push(gapMarkers); }\n      newMarkers.push(last);\n    }\n    return newMarkers\n  }\n\n  // Remove spans that are empty and don't have a clearWhenEmpty\n  // option of false.\n  function clearEmptySpans(spans) {\n    for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n        { spans.splice(i--, 1); }\n    }\n    if (!spans.length) { return null }\n    return spans\n  }\n\n  // Used to 'clip' out readOnly ranges when making a change.\n  function removeReadOnlyRanges(doc, from, to) {\n    var markers = null;\n    doc.iter(from.line, to.line + 1, function (line) {\n      if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n        var mark = line.markedSpans[i].marker;\n        if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n          { (markers || (markers = [])).push(mark); }\n      } }\n    });\n    if (!markers) { return null }\n    var parts = [{from: from, to: to}];\n    for (var i = 0; i < markers.length; ++i) {\n      var mk = markers[i], m = mk.find(0);\n      for (var j = 0; j < parts.length; ++j) {\n        var p = parts[j];\n        if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n        var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n        if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n          { newParts.push({from: p.from, to: m.from}); }\n        if (dto > 0 || !mk.inclusiveRight && !dto)\n          { newParts.push({from: m.to, to: p.to}); }\n        parts.splice.apply(parts, newParts);\n        j += newParts.length - 3;\n      }\n    }\n    return parts\n  }\n\n  // Connect or disconnect spans from a line.\n  function detachMarkedSpans(line) {\n    var spans = line.markedSpans;\n    if (!spans) { return }\n    for (var i = 0; i < spans.length; ++i)\n      { spans[i].marker.detachLine(line); }\n    line.markedSpans = null;\n  }\n  function attachMarkedSpans(line, spans) {\n    if (!spans) { return }\n    for (var i = 0; i < spans.length; ++i)\n      { spans[i].marker.attachLine(line); }\n    line.markedSpans = spans;\n  }\n\n  // Helpers used when computing which overlapping collapsed span\n  // counts as the larger one.\n  function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n  function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n  // Returns a number indicating which of two overlapping collapsed\n  // spans is larger (and thus includes the other). Falls back to\n  // comparing ids when the spans cover exactly the same range.\n  function compareCollapsedMarkers(a, b) {\n    var lenDiff = a.lines.length - b.lines.length;\n    if (lenDiff != 0) { return lenDiff }\n    var aPos = a.find(), bPos = b.find();\n    var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n    if (fromCmp) { return -fromCmp }\n    var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n    if (toCmp) { return toCmp }\n    return b.id - a.id\n  }\n\n  // Find out whether a line ends or starts in a collapsed span. If\n  // so, return the marker for that span.\n  function collapsedSpanAtSide(line, start) {\n    var sps = sawCollapsedSpans && line.markedSpans, found;\n    if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n      sp = sps[i];\n      if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n          (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n        { found = sp.marker; }\n    } }\n    return found\n  }\n  function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n  function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n  function collapsedSpanAround(line, ch) {\n    var sps = sawCollapsedSpans && line.markedSpans, found;\n    if (sps) { for (var i = 0; i < sps.length; ++i) {\n      var sp = sps[i];\n      if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n          (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n    } }\n    return found\n  }\n\n  // Test whether there exists a collapsed span that partially\n  // overlaps (covers the start or end, but not both) of a new span.\n  // Such overlap is not allowed.\n  function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n    var line = getLine(doc, lineNo);\n    var sps = sawCollapsedSpans && line.markedSpans;\n    if (sps) { for (var i = 0; i < sps.length; ++i) {\n      var sp = sps[i];\n      if (!sp.marker.collapsed) { continue }\n      var found = sp.marker.find(0);\n      var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n      var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n      if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n      if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n          fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n        { return true }\n    } }\n  }\n\n  // A visual line is a line as drawn on the screen. Folding, for\n  // example, can cause multiple logical lines to appear on the same\n  // visual line. This finds the start of the visual line that the\n  // given line is part of (usually that is the line itself).\n  function visualLine(line) {\n    var merged;\n    while (merged = collapsedSpanAtStart(line))\n      { line = merged.find(-1, true).line; }\n    return line\n  }\n\n  function visualLineEnd(line) {\n    var merged;\n    while (merged = collapsedSpanAtEnd(line))\n      { line = merged.find(1, true).line; }\n    return line\n  }\n\n  // Returns an array of logical lines that continue the visual line\n  // started by the argument, or undefined if there are no such lines.\n  function visualLineContinued(line) {\n    var merged, lines;\n    while (merged = collapsedSpanAtEnd(line)) {\n      line = merged.find(1, true).line\n      ;(lines || (lines = [])).push(line);\n    }\n    return lines\n  }\n\n  // Get the line number of the start of the visual line that the\n  // given line number is part of.\n  function visualLineNo(doc, lineN) {\n    var line = getLine(doc, lineN), vis = visualLine(line);\n    if (line == vis) { return lineN }\n    return lineNo(vis)\n  }\n\n  // Get the line number of the start of the next visual line after\n  // the given line.\n  function visualLineEndNo(doc, lineN) {\n    if (lineN > doc.lastLine()) { return lineN }\n    var line = getLine(doc, lineN), merged;\n    if (!lineIsHidden(doc, line)) { return lineN }\n    while (merged = collapsedSpanAtEnd(line))\n      { line = merged.find(1, true).line; }\n    return lineNo(line) + 1\n  }\n\n  // Compute whether a line is hidden. Lines count as hidden when they\n  // are part of a visual line that starts with another line, or when\n  // they are entirely covered by collapsed, non-widget span.\n  function lineIsHidden(doc, line) {\n    var sps = sawCollapsedSpans && line.markedSpans;\n    if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n      sp = sps[i];\n      if (!sp.marker.collapsed) { continue }\n      if (sp.from == null) { return true }\n      if (sp.marker.widgetNode) { continue }\n      if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n        { return true }\n    } }\n  }\n  function lineIsHiddenInner(doc, line, span) {\n    if (span.to == null) {\n      var end = span.marker.find(1, true);\n      return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n    }\n    if (span.marker.inclusiveRight && span.to == line.text.length)\n      { return true }\n    for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n      sp = line.markedSpans[i];\n      if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n          (sp.to == null || sp.to != span.from) &&\n          (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n          lineIsHiddenInner(doc, line, sp)) { return true }\n    }\n  }\n\n  // Find the height above the given line.\n  function heightAtLine(lineObj) {\n    lineObj = visualLine(lineObj);\n\n    var h = 0, chunk = lineObj.parent;\n    for (var i = 0; i < chunk.lines.length; ++i) {\n      var line = chunk.lines[i];\n      if (line == lineObj) { break }\n      else { h += line.height; }\n    }\n    for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n      for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n        var cur = p.children[i$1];\n        if (cur == chunk) { break }\n        else { h += cur.height; }\n      }\n    }\n    return h\n  }\n\n  // Compute the character length of a line, taking into account\n  // collapsed ranges (see markText) that might hide parts, and join\n  // other lines onto it.\n  function lineLength(line) {\n    if (line.height == 0) { return 0 }\n    var len = line.text.length, merged, cur = line;\n    while (merged = collapsedSpanAtStart(cur)) {\n      var found = merged.find(0, true);\n      cur = found.from.line;\n      len += found.from.ch - found.to.ch;\n    }\n    cur = line;\n    while (merged = collapsedSpanAtEnd(cur)) {\n      var found$1 = merged.find(0, true);\n      len -= cur.text.length - found$1.from.ch;\n      cur = found$1.to.line;\n      len += cur.text.length - found$1.to.ch;\n    }\n    return len\n  }\n\n  // Find the longest line in the document.\n  function findMaxLine(cm) {\n    var d = cm.display, doc = cm.doc;\n    d.maxLine = getLine(doc, doc.first);\n    d.maxLineLength = lineLength(d.maxLine);\n    d.maxLineChanged = true;\n    doc.iter(function (line) {\n      var len = lineLength(line);\n      if (len > d.maxLineLength) {\n        d.maxLineLength = len;\n        d.maxLine = line;\n      }\n    });\n  }\n\n  // LINE DATA STRUCTURE\n\n  // Line objects. These hold state related to a line, including\n  // highlighting info (the styles array).\n  var Line = function(text, markedSpans, estimateHeight) {\n    this.text = text;\n    attachMarkedSpans(this, markedSpans);\n    this.height = estimateHeight ? estimateHeight(this) : 1;\n  };\n\n  Line.prototype.lineNo = function () { return lineNo(this) };\n  eventMixin(Line);\n\n  // Change the content (text, markers) of a line. Automatically\n  // invalidates cached information and tries to re-estimate the\n  // line's height.\n  function updateLine(line, text, markedSpans, estimateHeight) {\n    line.text = text;\n    if (line.stateAfter) { line.stateAfter = null; }\n    if (line.styles) { line.styles = null; }\n    if (line.order != null) { line.order = null; }\n    detachMarkedSpans(line);\n    attachMarkedSpans(line, markedSpans);\n    var estHeight = estimateHeight ? estimateHeight(line) : 1;\n    if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n  }\n\n  // Detach a line from the document tree and its markers.\n  function cleanUpLine(line) {\n    line.parent = null;\n    detachMarkedSpans(line);\n  }\n\n  // Convert a style as returned by a mode (either null, or a string\n  // containing one or more styles) to a CSS style. This is cached,\n  // and also looks for line-wide styles.\n  var styleToClassCache = {}, styleToClassCacheWithMode = {};\n  function interpretTokenStyle(style, options) {\n    if (!style || /^\\s*$/.test(style)) { return null }\n    var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n    return cache[style] ||\n      (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n  }\n\n  // Render the DOM representation of the text of a line. Also builds\n  // up a 'line map', which points at the DOM nodes that represent\n  // specific stretches of text, and is used by the measuring code.\n  // The returned object contains the DOM node, this map, and\n  // information about line-wide styles that were set by the mode.\n  function buildLineContent(cm, lineView) {\n    // The padding-right forces the element to have a 'border', which\n    // is needed on Webkit to be able to get line-level bounding\n    // rectangles for it (in measureChar).\n    var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n    var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n                   col: 0, pos: 0, cm: cm,\n                   trailingSpace: false,\n                   splitSpaces: cm.getOption(\"lineWrapping\")};\n    lineView.measure = {};\n\n    // Iterate over the logical lines that make up this visual line.\n    for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n      var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n      builder.pos = 0;\n      builder.addToken = buildToken;\n      // Optionally wire in some hacks into the token-rendering\n      // algorithm, to deal with browser quirks.\n      if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n        { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n      builder.map = [];\n      var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n      insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n      if (line.styleClasses) {\n        if (line.styleClasses.bgClass)\n          { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n        if (line.styleClasses.textClass)\n          { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n      }\n\n      // Ensure at least a single node is present, for measuring.\n      if (builder.map.length == 0)\n        { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n      // Store the map and a cache object for the current logical line\n      if (i == 0) {\n        lineView.measure.map = builder.map;\n        lineView.measure.cache = {};\n      } else {\n  (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n        ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n      }\n    }\n\n    // See issue #2901\n    if (webkit) {\n      var last = builder.content.lastChild;\n      if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n        { builder.content.className = \"cm-tab-wrap-hack\"; }\n    }\n\n    signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n    if (builder.pre.className)\n      { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n    return builder\n  }\n\n  function defaultSpecialCharPlaceholder(ch) {\n    var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n    token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n    token.setAttribute(\"aria-label\", token.title);\n    return token\n  }\n\n  // Build up the DOM representation for a single token, and add it to\n  // the line map. Takes care to render special characters separately.\n  function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n    if (!text) { return }\n    var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n    var special = builder.cm.state.specialChars, mustWrap = false;\n    var content;\n    if (!special.test(text)) {\n      builder.col += text.length;\n      content = document.createTextNode(displayText);\n      builder.map.push(builder.pos, builder.pos + text.length, content);\n      if (ie && ie_version < 9) { mustWrap = true; }\n      builder.pos += text.length;\n    } else {\n      content = document.createDocumentFragment();\n      var pos = 0;\n      while (true) {\n        special.lastIndex = pos;\n        var m = special.exec(text);\n        var skipped = m ? m.index - pos : text.length - pos;\n        if (skipped) {\n          var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n          if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n          else { content.appendChild(txt); }\n          builder.map.push(builder.pos, builder.pos + skipped, txt);\n          builder.col += skipped;\n          builder.pos += skipped;\n        }\n        if (!m) { break }\n        pos += skipped + 1;\n        var txt$1 = (void 0);\n        if (m[0] == \"\\t\") {\n          var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n          txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n          txt$1.setAttribute(\"role\", \"presentation\");\n          txt$1.setAttribute(\"cm-text\", \"\\t\");\n          builder.col += tabWidth;\n        } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n          txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n          txt$1.setAttribute(\"cm-text\", m[0]);\n          builder.col += 1;\n        } else {\n          txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n          txt$1.setAttribute(\"cm-text\", m[0]);\n          if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n          else { content.appendChild(txt$1); }\n          builder.col += 1;\n        }\n        builder.map.push(builder.pos, builder.pos + 1, txt$1);\n        builder.pos++;\n      }\n    }\n    builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n    if (style || startStyle || endStyle || mustWrap || css || attributes) {\n      var fullStyle = style || \"\";\n      if (startStyle) { fullStyle += startStyle; }\n      if (endStyle) { fullStyle += endStyle; }\n      var token = elt(\"span\", [content], fullStyle, css);\n      if (attributes) {\n        for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n          { token.setAttribute(attr, attributes[attr]); } }\n      }\n      return builder.content.appendChild(token)\n    }\n    builder.content.appendChild(content);\n  }\n\n  // Change some spaces to NBSP to prevent the browser from collapsing\n  // trailing spaces at the end of a line when rendering text (issue #1362).\n  function splitSpaces(text, trailingBefore) {\n    if (text.length > 1 && !/  /.test(text)) { return text }\n    var spaceBefore = trailingBefore, result = \"\";\n    for (var i = 0; i < text.length; i++) {\n      var ch = text.charAt(i);\n      if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n        { ch = \"\\u00a0\"; }\n      result += ch;\n      spaceBefore = ch == \" \";\n    }\n    return result\n  }\n\n  // Work around nonsense dimensions being reported for stretches of\n  // right-to-left text.\n  function buildTokenBadBidi(inner, order) {\n    return function (builder, text, style, startStyle, endStyle, css, attributes) {\n      style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n      var start = builder.pos, end = start + text.length;\n      for (;;) {\n        // Find the part that overlaps with the start of this text\n        var part = (void 0);\n        for (var i = 0; i < order.length; i++) {\n          part = order[i];\n          if (part.to > start && part.from <= start) { break }\n        }\n        if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n        inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n        startStyle = null;\n        text = text.slice(part.to - start);\n        start = part.to;\n      }\n    }\n  }\n\n  function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n    var widget = !ignoreWidget && marker.widgetNode;\n    if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n    if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n      if (!widget)\n        { widget = builder.content.appendChild(document.createElement(\"span\")); }\n      widget.setAttribute(\"cm-marker\", marker.id);\n    }\n    if (widget) {\n      builder.cm.display.input.setUneditable(widget);\n      builder.content.appendChild(widget);\n    }\n    builder.pos += size;\n    builder.trailingSpace = false;\n  }\n\n  // Outputs a number of spans to make up a line, taking highlighting\n  // and marked text into account.\n  function insertLineContent(line, builder, styles) {\n    var spans = line.markedSpans, allText = line.text, at = 0;\n    if (!spans) {\n      for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n        { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n      return\n    }\n\n    var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n    var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n    for (;;) {\n      if (nextChange == pos) { // Update current marker set\n        spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n        attributes = null;\n        collapsed = null; nextChange = Infinity;\n        var foundBookmarks = [], endStyles = (void 0);\n        for (var j = 0; j < spans.length; ++j) {\n          var sp = spans[j], m = sp.marker;\n          if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n            foundBookmarks.push(m);\n          } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n            if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n              nextChange = sp.to;\n              spanEndStyle = \"\";\n            }\n            if (m.className) { spanStyle += \" \" + m.className; }\n            if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n            if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n            if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n            // support for the old title property\n            // https://github.com/codemirror/CodeMirror/pull/5673\n            if (m.title) { (attributes || (attributes = {})).title = m.title; }\n            if (m.attributes) {\n              for (var attr in m.attributes)\n                { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n            }\n            if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n              { collapsed = sp; }\n          } else if (sp.from > pos && nextChange > sp.from) {\n            nextChange = sp.from;\n          }\n        }\n        if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n          { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n        if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n          { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n        if (collapsed && (collapsed.from || 0) == pos) {\n          buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                             collapsed.marker, collapsed.from == null);\n          if (collapsed.to == null) { return }\n          if (collapsed.to == pos) { collapsed = false; }\n        }\n      }\n      if (pos >= len) { break }\n\n      var upto = Math.min(len, nextChange);\n      while (true) {\n        if (text) {\n          var end = pos + text.length;\n          if (!collapsed) {\n            var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n            builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                             spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n          }\n          if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n          pos = end;\n          spanStartStyle = \"\";\n        }\n        text = allText.slice(at, at = styles[i++]);\n        style = interpretTokenStyle(styles[i++], builder.cm.options);\n      }\n    }\n  }\n\n\n  // These objects are used to represent the visible (currently drawn)\n  // part of the document. A LineView may correspond to multiple\n  // logical lines, if those are connected by collapsed ranges.\n  function LineView(doc, line, lineN) {\n    // The starting line\n    this.line = line;\n    // Continuing lines, if any\n    this.rest = visualLineContinued(line);\n    // Number of logical lines in this visual line\n    this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n    this.node = this.text = null;\n    this.hidden = lineIsHidden(doc, line);\n  }\n\n  // Create a range of LineView objects for the given lines.\n  function buildViewArray(cm, from, to) {\n    var array = [], nextPos;\n    for (var pos = from; pos < to; pos = nextPos) {\n      var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n      nextPos = pos + view.size;\n      array.push(view);\n    }\n    return array\n  }\n\n  var operationGroup = null;\n\n  function pushOperation(op) {\n    if (operationGroup) {\n      operationGroup.ops.push(op);\n    } else {\n      op.ownsGroup = operationGroup = {\n        ops: [op],\n        delayedCallbacks: []\n      };\n    }\n  }\n\n  function fireCallbacksForOps(group) {\n    // Calls delayed callbacks and cursorActivity handlers until no\n    // new ones appear\n    var callbacks = group.delayedCallbacks, i = 0;\n    do {\n      for (; i < callbacks.length; i++)\n        { callbacks[i].call(null); }\n      for (var j = 0; j < group.ops.length; j++) {\n        var op = group.ops[j];\n        if (op.cursorActivityHandlers)\n          { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n            { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n      }\n    } while (i < callbacks.length)\n  }\n\n  function finishOperation(op, endCb) {\n    var group = op.ownsGroup;\n    if (!group) { return }\n\n    try { fireCallbacksForOps(group); }\n    finally {\n      operationGroup = null;\n      endCb(group);\n    }\n  }\n\n  var orphanDelayedCallbacks = null;\n\n  // Often, we want to signal events at a point where we are in the\n  // middle of some work, but don't want the handler to start calling\n  // other methods on the editor, which might be in an inconsistent\n  // state or simply not expect any other events to happen.\n  // signalLater looks whether there are any handlers, and schedules\n  // them to be executed when the last operation ends, or, if no\n  // operation is active, when a timeout fires.\n  function signalLater(emitter, type /*, values...*/) {\n    var arr = getHandlers(emitter, type);\n    if (!arr.length) { return }\n    var args = Array.prototype.slice.call(arguments, 2), list;\n    if (operationGroup) {\n      list = operationGroup.delayedCallbacks;\n    } else if (orphanDelayedCallbacks) {\n      list = orphanDelayedCallbacks;\n    } else {\n      list = orphanDelayedCallbacks = [];\n      setTimeout(fireOrphanDelayed, 0);\n    }\n    var loop = function ( i ) {\n      list.push(function () { return arr[i].apply(null, args); });\n    };\n\n    for (var i = 0; i < arr.length; ++i)\n      loop( i );\n  }\n\n  function fireOrphanDelayed() {\n    var delayed = orphanDelayedCallbacks;\n    orphanDelayedCallbacks = null;\n    for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n  }\n\n  // When an aspect of a line changes, a string is added to\n  // lineView.changes. This updates the relevant part of the line's\n  // DOM structure.\n  function updateLineForChanges(cm, lineView, lineN, dims) {\n    for (var j = 0; j < lineView.changes.length; j++) {\n      var type = lineView.changes[j];\n      if (type == \"text\") { updateLineText(cm, lineView); }\n      else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n      else if (type == \"class\") { updateLineClasses(cm, lineView); }\n      else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n    }\n    lineView.changes = null;\n  }\n\n  // Lines with gutter elements, widgets or a background class need to\n  // be wrapped, and have the extra elements added to the wrapper div\n  function ensureLineWrapped(lineView) {\n    if (lineView.node == lineView.text) {\n      lineView.node = elt(\"div\", null, null, \"position: relative\");\n      if (lineView.text.parentNode)\n        { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n      lineView.node.appendChild(lineView.text);\n      if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n    }\n    return lineView.node\n  }\n\n  function updateLineBackground(cm, lineView) {\n    var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n    if (cls) { cls += \" CodeMirror-linebackground\"; }\n    if (lineView.background) {\n      if (cls) { lineView.background.className = cls; }\n      else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n    } else if (cls) {\n      var wrap = ensureLineWrapped(lineView);\n      lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n      cm.display.input.setUneditable(lineView.background);\n    }\n  }\n\n  // Wrapper around buildLineContent which will reuse the structure\n  // in display.externalMeasured when possible.\n  function getLineContent(cm, lineView) {\n    var ext = cm.display.externalMeasured;\n    if (ext && ext.line == lineView.line) {\n      cm.display.externalMeasured = null;\n      lineView.measure = ext.measure;\n      return ext.built\n    }\n    return buildLineContent(cm, lineView)\n  }\n\n  // Redraw the line's text. Interacts with the background and text\n  // classes because the mode may output tokens that influence these\n  // classes.\n  function updateLineText(cm, lineView) {\n    var cls = lineView.text.className;\n    var built = getLineContent(cm, lineView);\n    if (lineView.text == lineView.node) { lineView.node = built.pre; }\n    lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n    lineView.text = built.pre;\n    if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n      lineView.bgClass = built.bgClass;\n      lineView.textClass = built.textClass;\n      updateLineClasses(cm, lineView);\n    } else if (cls) {\n      lineView.text.className = cls;\n    }\n  }\n\n  function updateLineClasses(cm, lineView) {\n    updateLineBackground(cm, lineView);\n    if (lineView.line.wrapClass)\n      { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n    else if (lineView.node != lineView.text)\n      { lineView.node.className = \"\"; }\n    var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n    lineView.text.className = textClass || \"\";\n  }\n\n  function updateLineGutter(cm, lineView, lineN, dims) {\n    if (lineView.gutter) {\n      lineView.node.removeChild(lineView.gutter);\n      lineView.gutter = null;\n    }\n    if (lineView.gutterBackground) {\n      lineView.node.removeChild(lineView.gutterBackground);\n      lineView.gutterBackground = null;\n    }\n    if (lineView.line.gutterClass) {\n      var wrap = ensureLineWrapped(lineView);\n      lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n                                      (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n      cm.display.input.setUneditable(lineView.gutterBackground);\n      wrap.insertBefore(lineView.gutterBackground, lineView.text);\n    }\n    var markers = lineView.line.gutterMarkers;\n    if (cm.options.lineNumbers || markers) {\n      var wrap$1 = ensureLineWrapped(lineView);\n      var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n      gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n      cm.display.input.setUneditable(gutterWrap);\n      wrap$1.insertBefore(gutterWrap, lineView.text);\n      if (lineView.line.gutterClass)\n        { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n      if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n        { lineView.lineNumber = gutterWrap.appendChild(\n          elt(\"div\", lineNumberFor(cm.options, lineN),\n              \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n              (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n      if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n        var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n        if (found)\n          { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n                                     (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n      } }\n    }\n  }\n\n  function updateLineWidgets(cm, lineView, dims) {\n    if (lineView.alignable) { lineView.alignable = null; }\n    var isWidget = classTest(\"CodeMirror-linewidget\");\n    for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n      next = node.nextSibling;\n      if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n    }\n    insertLineWidgets(cm, lineView, dims);\n  }\n\n  // Build a line's DOM representation from scratch\n  function buildLineElement(cm, lineView, lineN, dims) {\n    var built = getLineContent(cm, lineView);\n    lineView.text = lineView.node = built.pre;\n    if (built.bgClass) { lineView.bgClass = built.bgClass; }\n    if (built.textClass) { lineView.textClass = built.textClass; }\n\n    updateLineClasses(cm, lineView);\n    updateLineGutter(cm, lineView, lineN, dims);\n    insertLineWidgets(cm, lineView, dims);\n    return lineView.node\n  }\n\n  // A lineView may contain multiple logical lines (when merged by\n  // collapsed spans). The widgets for all of them need to be drawn.\n  function insertLineWidgets(cm, lineView, dims) {\n    insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n    if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n      { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n  }\n\n  function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n    if (!line.widgets) { return }\n    var wrap = ensureLineWrapped(lineView);\n    for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n      var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n      if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n      positionLineWidget(widget, node, lineView, dims);\n      cm.display.input.setUneditable(node);\n      if (allowAbove && widget.above)\n        { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n      else\n        { wrap.appendChild(node); }\n      signalLater(widget, \"redraw\");\n    }\n  }\n\n  function positionLineWidget(widget, node, lineView, dims) {\n    if (widget.noHScroll) {\n  (lineView.alignable || (lineView.alignable = [])).push(node);\n      var width = dims.wrapperWidth;\n      node.style.left = dims.fixedPos + \"px\";\n      if (!widget.coverGutter) {\n        width -= dims.gutterTotalWidth;\n        node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n      }\n      node.style.width = width + \"px\";\n    }\n    if (widget.coverGutter) {\n      node.style.zIndex = 5;\n      node.style.position = \"relative\";\n      if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n    }\n  }\n\n  function widgetHeight(widget) {\n    if (widget.height != null) { return widget.height }\n    var cm = widget.doc.cm;\n    if (!cm) { return 0 }\n    if (!contains(document.body, widget.node)) {\n      var parentStyle = \"position: relative;\";\n      if (widget.coverGutter)\n        { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n      if (widget.noHScroll)\n        { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n      removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n    }\n    return widget.height = widget.node.parentNode.offsetHeight\n  }\n\n  // Return true when the given mouse event happened in a widget\n  function eventInWidget(display, e) {\n    for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n      if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n          (n.parentNode == display.sizer && n != display.mover))\n        { return true }\n    }\n  }\n\n  // POSITION MEASUREMENT\n\n  function paddingTop(display) {return display.lineSpace.offsetTop}\n  function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n  function paddingH(display) {\n    if (display.cachedPaddingH) { return display.cachedPaddingH }\n    var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n    var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n    var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n    if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n    return data\n  }\n\n  function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n  function displayWidth(cm) {\n    return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n  }\n  function displayHeight(cm) {\n    return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n  }\n\n  // Ensure the lineView.wrapping.heights array is populated. This is\n  // an array of bottom offsets for the lines that make up a drawn\n  // line. When lineWrapping is on, there might be more than one\n  // height.\n  function ensureLineHeights(cm, lineView, rect) {\n    var wrapping = cm.options.lineWrapping;\n    var curWidth = wrapping && displayWidth(cm);\n    if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n      var heights = lineView.measure.heights = [];\n      if (wrapping) {\n        lineView.measure.width = curWidth;\n        var rects = lineView.text.firstChild.getClientRects();\n        for (var i = 0; i < rects.length - 1; i++) {\n          var cur = rects[i], next = rects[i + 1];\n          if (Math.abs(cur.bottom - next.bottom) > 2)\n            { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n        }\n      }\n      heights.push(rect.bottom - rect.top);\n    }\n  }\n\n  // Find a line map (mapping character offsets to text nodes) and a\n  // measurement cache for the given line number. (A line view might\n  // contain multiple lines when collapsed ranges are present.)\n  function mapFromLineView(lineView, line, lineN) {\n    if (lineView.line == line)\n      { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n    if (lineView.rest) {\n      for (var i = 0; i < lineView.rest.length; i++)\n        { if (lineView.rest[i] == line)\n          { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n      for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n        { if (lineNo(lineView.rest[i$1]) > lineN)\n          { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n    }\n  }\n\n  // Render a line into the hidden node display.externalMeasured. Used\n  // when measurement is needed for a line that's not in the viewport.\n  function updateExternalMeasurement(cm, line) {\n    line = visualLine(line);\n    var lineN = lineNo(line);\n    var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n    view.lineN = lineN;\n    var built = view.built = buildLineContent(cm, view);\n    view.text = built.pre;\n    removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n    return view\n  }\n\n  // Get a {top, bottom, left, right} box (in line-local coordinates)\n  // for a given character.\n  function measureChar(cm, line, ch, bias) {\n    return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n  }\n\n  // Find a line view that corresponds to the given line number.\n  function findViewForLine(cm, lineN) {\n    if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n      { return cm.display.view[findViewIndex(cm, lineN)] }\n    var ext = cm.display.externalMeasured;\n    if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n      { return ext }\n  }\n\n  // Measurement can be split in two steps, the set-up work that\n  // applies to the whole line, and the measurement of the actual\n  // character. Functions like coordsChar, that need to do a lot of\n  // measurements in a row, can thus ensure that the set-up work is\n  // only done once.\n  function prepareMeasureForLine(cm, line) {\n    var lineN = lineNo(line);\n    var view = findViewForLine(cm, lineN);\n    if (view && !view.text) {\n      view = null;\n    } else if (view && view.changes) {\n      updateLineForChanges(cm, view, lineN, getDimensions(cm));\n      cm.curOp.forceUpdate = true;\n    }\n    if (!view)\n      { view = updateExternalMeasurement(cm, line); }\n\n    var info = mapFromLineView(view, line, lineN);\n    return {\n      line: line, view: view, rect: null,\n      map: info.map, cache: info.cache, before: info.before,\n      hasHeights: false\n    }\n  }\n\n  // Given a prepared measurement object, measures the position of an\n  // actual character (or fetches it from the cache).\n  function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n    if (prepared.before) { ch = -1; }\n    var key = ch + (bias || \"\"), found;\n    if (prepared.cache.hasOwnProperty(key)) {\n      found = prepared.cache[key];\n    } else {\n      if (!prepared.rect)\n        { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n      if (!prepared.hasHeights) {\n        ensureLineHeights(cm, prepared.view, prepared.rect);\n        prepared.hasHeights = true;\n      }\n      found = measureCharInner(cm, prepared, ch, bias);\n      if (!found.bogus) { prepared.cache[key] = found; }\n    }\n    return {left: found.left, right: found.right,\n            top: varHeight ? found.rtop : found.top,\n            bottom: varHeight ? found.rbottom : found.bottom}\n  }\n\n  var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n  function nodeAndOffsetInLineMap(map, ch, bias) {\n    var node, start, end, collapse, mStart, mEnd;\n    // First, search the line map for the text node corresponding to,\n    // or closest to, the target character.\n    for (var i = 0; i < map.length; i += 3) {\n      mStart = map[i];\n      mEnd = map[i + 1];\n      if (ch < mStart) {\n        start = 0; end = 1;\n        collapse = \"left\";\n      } else if (ch < mEnd) {\n        start = ch - mStart;\n        end = start + 1;\n      } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n        end = mEnd - mStart;\n        start = end - 1;\n        if (ch >= mEnd) { collapse = \"right\"; }\n      }\n      if (start != null) {\n        node = map[i + 2];\n        if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n          { collapse = bias; }\n        if (bias == \"left\" && start == 0)\n          { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n            node = map[(i -= 3) + 2];\n            collapse = \"left\";\n          } }\n        if (bias == \"right\" && start == mEnd - mStart)\n          { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n            node = map[(i += 3) + 2];\n            collapse = \"right\";\n          } }\n        break\n      }\n    }\n    return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n  }\n\n  function getUsefulRect(rects, bias) {\n    var rect = nullRect;\n    if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n      if ((rect = rects[i]).left != rect.right) { break }\n    } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n      if ((rect = rects[i$1]).left != rect.right) { break }\n    } }\n    return rect\n  }\n\n  function measureCharInner(cm, prepared, ch, bias) {\n    var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n    var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n    var rect;\n    if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n      for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n        while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n        while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n        if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n          { rect = node.parentNode.getBoundingClientRect(); }\n        else\n          { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n        if (rect.left || rect.right || start == 0) { break }\n        end = start;\n        start = start - 1;\n        collapse = \"right\";\n      }\n      if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n    } else { // If it is a widget, simply get the box for the whole widget.\n      if (start > 0) { collapse = bias = \"right\"; }\n      var rects;\n      if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n        { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n      else\n        { rect = node.getBoundingClientRect(); }\n    }\n    if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n      var rSpan = node.parentNode.getClientRects()[0];\n      if (rSpan)\n        { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n      else\n        { rect = nullRect; }\n    }\n\n    var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n    var mid = (rtop + rbot) / 2;\n    var heights = prepared.view.measure.heights;\n    var i = 0;\n    for (; i < heights.length - 1; i++)\n      { if (mid < heights[i]) { break } }\n    var top = i ? heights[i - 1] : 0, bot = heights[i];\n    var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                  right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                  top: top, bottom: bot};\n    if (!rect.left && !rect.right) { result.bogus = true; }\n    if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n    return result\n  }\n\n  // Work around problem with bounding client rects on ranges being\n  // returned incorrectly when zoomed on IE10 and below.\n  function maybeUpdateRectForZooming(measure, rect) {\n    if (!window.screen || screen.logicalXDPI == null ||\n        screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n      { return rect }\n    var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n    var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n    return {left: rect.left * scaleX, right: rect.right * scaleX,\n            top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n  }\n\n  function clearLineMeasurementCacheFor(lineView) {\n    if (lineView.measure) {\n      lineView.measure.cache = {};\n      lineView.measure.heights = null;\n      if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n        { lineView.measure.caches[i] = {}; } }\n    }\n  }\n\n  function clearLineMeasurementCache(cm) {\n    cm.display.externalMeasure = null;\n    removeChildren(cm.display.lineMeasure);\n    for (var i = 0; i < cm.display.view.length; i++)\n      { clearLineMeasurementCacheFor(cm.display.view[i]); }\n  }\n\n  function clearCaches(cm) {\n    clearLineMeasurementCache(cm);\n    cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n    if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n    cm.display.lineNumChars = null;\n  }\n\n  function pageScrollX() {\n    // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n    // which causes page_Offset and bounding client rects to use\n    // different reference viewports and invalidate our calculations.\n    if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n    return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n  }\n  function pageScrollY() {\n    if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n    return window.pageYOffset || (document.documentElement || document.body).scrollTop\n  }\n\n  function widgetTopHeight(lineObj) {\n    var ref = visualLine(lineObj);\n    var widgets = ref.widgets;\n    var height = 0;\n    if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n      { height += widgetHeight(widgets[i]); } } }\n    return height\n  }\n\n  // Converts a {top, bottom, left, right} box from line-local\n  // coordinates into another coordinate system. Context may be one of\n  // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n  // or \"page\".\n  function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n    if (!includeWidgets) {\n      var height = widgetTopHeight(lineObj);\n      rect.top += height; rect.bottom += height;\n    }\n    if (context == \"line\") { return rect }\n    if (!context) { context = \"local\"; }\n    var yOff = heightAtLine(lineObj);\n    if (context == \"local\") { yOff += paddingTop(cm.display); }\n    else { yOff -= cm.display.viewOffset; }\n    if (context == \"page\" || context == \"window\") {\n      var lOff = cm.display.lineSpace.getBoundingClientRect();\n      yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n      var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n      rect.left += xOff; rect.right += xOff;\n    }\n    rect.top += yOff; rect.bottom += yOff;\n    return rect\n  }\n\n  // Coverts a box from \"div\" coords to another coordinate system.\n  // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n  function fromCoordSystem(cm, coords, context) {\n    if (context == \"div\") { return coords }\n    var left = coords.left, top = coords.top;\n    // First move into \"page\" coordinate system\n    if (context == \"page\") {\n      left -= pageScrollX();\n      top -= pageScrollY();\n    } else if (context == \"local\" || !context) {\n      var localBox = cm.display.sizer.getBoundingClientRect();\n      left += localBox.left;\n      top += localBox.top;\n    }\n\n    var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n    return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n  }\n\n  function charCoords(cm, pos, context, lineObj, bias) {\n    if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n    return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n  }\n\n  // Returns a box for a given cursor position, which may have an\n  // 'other' property containing the position of the secondary cursor\n  // on a bidi boundary.\n  // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n  // and after `char - 1` in writing order of `char - 1`\n  // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n  // and before `char` in writing order of `char`\n  // Examples (upper-case letters are RTL, lower-case are LTR):\n  //     Pos(0, 1, ...)\n  //     before   after\n  // ab     a|b     a|b\n  // aB     a|B     aB|\n  // Ab     |Ab     A|b\n  // AB     B|A     B|A\n  // Every position after the last character on a line is considered to stick\n  // to the last character on the line.\n  function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n    lineObj = lineObj || getLine(cm.doc, pos.line);\n    if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n    function get(ch, right) {\n      var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n      if (right) { m.left = m.right; } else { m.right = m.left; }\n      return intoCoordSystem(cm, lineObj, m, context)\n    }\n    var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n    if (ch >= lineObj.text.length) {\n      ch = lineObj.text.length;\n      sticky = \"before\";\n    } else if (ch <= 0) {\n      ch = 0;\n      sticky = \"after\";\n    }\n    if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n    function getBidi(ch, partPos, invert) {\n      var part = order[partPos], right = part.level == 1;\n      return get(invert ? ch - 1 : ch, right != invert)\n    }\n    var partPos = getBidiPartAt(order, ch, sticky);\n    var other = bidiOther;\n    var val = getBidi(ch, partPos, sticky == \"before\");\n    if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n    return val\n  }\n\n  // Used to cheaply estimate the coordinates for a position. Used for\n  // intermediate scroll updates.\n  function estimateCoords(cm, pos) {\n    var left = 0;\n    pos = clipPos(cm.doc, pos);\n    if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n    var lineObj = getLine(cm.doc, pos.line);\n    var top = heightAtLine(lineObj) + paddingTop(cm.display);\n    return {left: left, right: left, top: top, bottom: top + lineObj.height}\n  }\n\n  // Positions returned by coordsChar contain some extra information.\n  // xRel is the relative x position of the input coordinates compared\n  // to the found position (so xRel > 0 means the coordinates are to\n  // the right of the character position, for example). When outside\n  // is true, that means the coordinates lie outside the line's\n  // vertical range.\n  function PosWithInfo(line, ch, sticky, outside, xRel) {\n    var pos = Pos(line, ch, sticky);\n    pos.xRel = xRel;\n    if (outside) { pos.outside = outside; }\n    return pos\n  }\n\n  // Compute the character position closest to the given coordinates.\n  // Input must be lineSpace-local (\"div\" coordinate system).\n  function coordsChar(cm, x, y) {\n    var doc = cm.doc;\n    y += cm.display.viewOffset;\n    if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n    var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n    if (lineN > last)\n      { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n    if (x < 0) { x = 0; }\n\n    var lineObj = getLine(doc, lineN);\n    for (;;) {\n      var found = coordsCharInner(cm, lineObj, lineN, x, y);\n      var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n      if (!collapsed) { return found }\n      var rangeEnd = collapsed.find(1);\n      if (rangeEnd.line == lineN) { return rangeEnd }\n      lineObj = getLine(doc, lineN = rangeEnd.line);\n    }\n  }\n\n  function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n    y -= widgetTopHeight(lineObj);\n    var end = lineObj.text.length;\n    var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n    end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n    return {begin: begin, end: end}\n  }\n\n  function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n    if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n    var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n    return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n  }\n\n  // Returns true if the given side of a box is after the given\n  // coordinates, in top-to-bottom, left-to-right order.\n  function boxIsAfter(box, x, y, left) {\n    return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n  }\n\n  function coordsCharInner(cm, lineObj, lineNo, x, y) {\n    // Move y into line-local coordinate space\n    y -= heightAtLine(lineObj);\n    var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n    // When directly calling `measureCharPrepared`, we have to adjust\n    // for the widgets at this line.\n    var widgetHeight = widgetTopHeight(lineObj);\n    var begin = 0, end = lineObj.text.length, ltr = true;\n\n    var order = getOrder(lineObj, cm.doc.direction);\n    // If the line isn't plain left-to-right text, first figure out\n    // which bidi section the coordinates fall into.\n    if (order) {\n      var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n                   (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n      ltr = part.level != 1;\n      // The awkward -1 offsets are needed because findFirst (called\n      // on these below) will treat its first bound as inclusive,\n      // second as exclusive, but we want to actually address the\n      // characters in the part's range\n      begin = ltr ? part.from : part.to - 1;\n      end = ltr ? part.to : part.from - 1;\n    }\n\n    // A binary search to find the first character whose bounding box\n    // starts after the coordinates. If we run across any whose box wrap\n    // the coordinates, store that.\n    var chAround = null, boxAround = null;\n    var ch = findFirst(function (ch) {\n      var box = measureCharPrepared(cm, preparedMeasure, ch);\n      box.top += widgetHeight; box.bottom += widgetHeight;\n      if (!boxIsAfter(box, x, y, false)) { return false }\n      if (box.top <= y && box.left <= x) {\n        chAround = ch;\n        boxAround = box;\n      }\n      return true\n    }, begin, end);\n\n    var baseX, sticky, outside = false;\n    // If a box around the coordinates was found, use that\n    if (boxAround) {\n      // Distinguish coordinates nearer to the left or right side of the box\n      var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n      ch = chAround + (atStart ? 0 : 1);\n      sticky = atStart ? \"after\" : \"before\";\n      baseX = atLeft ? boxAround.left : boxAround.right;\n    } else {\n      // (Adjust for extended bound, if necessary.)\n      if (!ltr && (ch == end || ch == begin)) { ch++; }\n      // To determine which side to associate with, get the box to the\n      // left of the character and compare it's vertical position to the\n      // coordinates\n      sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n        (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n        \"after\" : \"before\";\n      // Now get accurate coordinates for this place, in order to get a\n      // base X position\n      var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n      baseX = coords.left;\n      outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n    }\n\n    ch = skipExtendingChars(lineObj.text, ch, 1);\n    return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n  }\n\n  function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n    // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n    // situation, we can take this ordering to correspond to the visual\n    // ordering. This finds the first part whose end is after the given\n    // coordinates.\n    var index = findFirst(function (i) {\n      var part = order[i], ltr = part.level != 1;\n      return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n                                     \"line\", lineObj, preparedMeasure), x, y, true)\n    }, 0, order.length - 1);\n    var part = order[index];\n    // If this isn't the first part, the part's start is also after\n    // the coordinates, and the coordinates aren't on the same line as\n    // that start, move one part back.\n    if (index > 0) {\n      var ltr = part.level != 1;\n      var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n                               \"line\", lineObj, preparedMeasure);\n      if (boxIsAfter(start, x, y, true) && start.top > y)\n        { part = order[index - 1]; }\n    }\n    return part\n  }\n\n  function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n    // In a wrapped line, rtl text on wrapping boundaries can do things\n    // that don't correspond to the ordering in our `order` array at\n    // all, so a binary search doesn't work, and we want to return a\n    // part that only spans one line so that the binary search in\n    // coordsCharInner is safe. As such, we first find the extent of the\n    // wrapped line, and then do a flat search in which we discard any\n    // spans that aren't on the line.\n    var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n    var begin = ref.begin;\n    var end = ref.end;\n    if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n    var part = null, closestDist = null;\n    for (var i = 0; i < order.length; i++) {\n      var p = order[i];\n      if (p.from >= end || p.to <= begin) { continue }\n      var ltr = p.level != 1;\n      var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n      // Weigh against spans ending before this, so that they are only\n      // picked if nothing ends after\n      var dist = endX < x ? x - endX + 1e9 : endX - x;\n      if (!part || closestDist > dist) {\n        part = p;\n        closestDist = dist;\n      }\n    }\n    if (!part) { part = order[order.length - 1]; }\n    // Clip the part to the wrapped line.\n    if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n    if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n    return part\n  }\n\n  var measureText;\n  // Compute the default text height.\n  function textHeight(display) {\n    if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n    if (measureText == null) {\n      measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n      // Measure a bunch of lines, for browsers that compute\n      // fractional heights.\n      for (var i = 0; i < 49; ++i) {\n        measureText.appendChild(document.createTextNode(\"x\"));\n        measureText.appendChild(elt(\"br\"));\n      }\n      measureText.appendChild(document.createTextNode(\"x\"));\n    }\n    removeChildrenAndAdd(display.measure, measureText);\n    var height = measureText.offsetHeight / 50;\n    if (height > 3) { display.cachedTextHeight = height; }\n    removeChildren(display.measure);\n    return height || 1\n  }\n\n  // Compute the default character width.\n  function charWidth(display) {\n    if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n    var anchor = elt(\"span\", \"xxxxxxxxxx\");\n    var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n    removeChildrenAndAdd(display.measure, pre);\n    var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n    if (width > 2) { display.cachedCharWidth = width; }\n    return width || 10\n  }\n\n  // Do a bulk-read of the DOM positions and sizes needed to draw the\n  // view, so that we don't interleave reading and writing to the DOM.\n  function getDimensions(cm) {\n    var d = cm.display, left = {}, width = {};\n    var gutterLeft = d.gutters.clientLeft;\n    for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n      var id = cm.display.gutterSpecs[i].className;\n      left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n      width[id] = n.clientWidth;\n    }\n    return {fixedPos: compensateForHScroll(d),\n            gutterTotalWidth: d.gutters.offsetWidth,\n            gutterLeft: left,\n            gutterWidth: width,\n            wrapperWidth: d.wrapper.clientWidth}\n  }\n\n  // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n  // but using getBoundingClientRect to get a sub-pixel-accurate\n  // result.\n  function compensateForHScroll(display) {\n    return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n  }\n\n  // Returns a function that estimates the height of a line, to use as\n  // first approximation until the line becomes visible (and is thus\n  // properly measurable).\n  function estimateHeight(cm) {\n    var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n    var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n    return function (line) {\n      if (lineIsHidden(cm.doc, line)) { return 0 }\n\n      var widgetsHeight = 0;\n      if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n        if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n      } }\n\n      if (wrapping)\n        { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n      else\n        { return widgetsHeight + th }\n    }\n  }\n\n  function estimateLineHeights(cm) {\n    var doc = cm.doc, est = estimateHeight(cm);\n    doc.iter(function (line) {\n      var estHeight = est(line);\n      if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n    });\n  }\n\n  // Given a mouse event, find the corresponding position. If liberal\n  // is false, it checks whether a gutter or scrollbar was clicked,\n  // and returns null if it was. forRect is used by rectangular\n  // selections, and tries to estimate a character position even for\n  // coordinates beyond the right of the text.\n  function posFromMouse(cm, e, liberal, forRect) {\n    var display = cm.display;\n    if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n    var x, y, space = display.lineSpace.getBoundingClientRect();\n    // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n    try { x = e.clientX - space.left; y = e.clientY - space.top; }\n    catch (e$1) { return null }\n    var coords = coordsChar(cm, x, y), line;\n    if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n      var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n      coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n    }\n    return coords\n  }\n\n  // Find the view element corresponding to a given line. Return null\n  // when the line isn't visible.\n  function findViewIndex(cm, n) {\n    if (n >= cm.display.viewTo) { return null }\n    n -= cm.display.viewFrom;\n    if (n < 0) { return null }\n    var view = cm.display.view;\n    for (var i = 0; i < view.length; i++) {\n      n -= view[i].size;\n      if (n < 0) { return i }\n    }\n  }\n\n  // Updates the display.view data structure for a given change to the\n  // document. From and to are in pre-change coordinates. Lendiff is\n  // the amount of lines added or subtracted by the change. This is\n  // used for changes that span multiple lines, or change the way\n  // lines are divided into visual lines. regLineChange (below)\n  // registers single-line changes.\n  function regChange(cm, from, to, lendiff) {\n    if (from == null) { from = cm.doc.first; }\n    if (to == null) { to = cm.doc.first + cm.doc.size; }\n    if (!lendiff) { lendiff = 0; }\n\n    var display = cm.display;\n    if (lendiff && to < display.viewTo &&\n        (display.updateLineNumbers == null || display.updateLineNumbers > from))\n      { display.updateLineNumbers = from; }\n\n    cm.curOp.viewChanged = true;\n\n    if (from >= display.viewTo) { // Change after\n      if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n        { resetView(cm); }\n    } else if (to <= display.viewFrom) { // Change before\n      if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n        resetView(cm);\n      } else {\n        display.viewFrom += lendiff;\n        display.viewTo += lendiff;\n      }\n    } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n      resetView(cm);\n    } else if (from <= display.viewFrom) { // Top overlap\n      var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n      if (cut) {\n        display.view = display.view.slice(cut.index);\n        display.viewFrom = cut.lineN;\n        display.viewTo += lendiff;\n      } else {\n        resetView(cm);\n      }\n    } else if (to >= display.viewTo) { // Bottom overlap\n      var cut$1 = viewCuttingPoint(cm, from, from, -1);\n      if (cut$1) {\n        display.view = display.view.slice(0, cut$1.index);\n        display.viewTo = cut$1.lineN;\n      } else {\n        resetView(cm);\n      }\n    } else { // Gap in the middle\n      var cutTop = viewCuttingPoint(cm, from, from, -1);\n      var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n      if (cutTop && cutBot) {\n        display.view = display.view.slice(0, cutTop.index)\n          .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n          .concat(display.view.slice(cutBot.index));\n        display.viewTo += lendiff;\n      } else {\n        resetView(cm);\n      }\n    }\n\n    var ext = display.externalMeasured;\n    if (ext) {\n      if (to < ext.lineN)\n        { ext.lineN += lendiff; }\n      else if (from < ext.lineN + ext.size)\n        { display.externalMeasured = null; }\n    }\n  }\n\n  // Register a change to a single line. Type must be one of \"text\",\n  // \"gutter\", \"class\", \"widget\"\n  function regLineChange(cm, line, type) {\n    cm.curOp.viewChanged = true;\n    var display = cm.display, ext = cm.display.externalMeasured;\n    if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n      { display.externalMeasured = null; }\n\n    if (line < display.viewFrom || line >= display.viewTo) { return }\n    var lineView = display.view[findViewIndex(cm, line)];\n    if (lineView.node == null) { return }\n    var arr = lineView.changes || (lineView.changes = []);\n    if (indexOf(arr, type) == -1) { arr.push(type); }\n  }\n\n  // Clear the view.\n  function resetView(cm) {\n    cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n    cm.display.view = [];\n    cm.display.viewOffset = 0;\n  }\n\n  function viewCuttingPoint(cm, oldN, newN, dir) {\n    var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n    if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n      { return {index: index, lineN: newN} }\n    var n = cm.display.viewFrom;\n    for (var i = 0; i < index; i++)\n      { n += view[i].size; }\n    if (n != oldN) {\n      if (dir > 0) {\n        if (index == view.length - 1) { return null }\n        diff = (n + view[index].size) - oldN;\n        index++;\n      } else {\n        diff = n - oldN;\n      }\n      oldN += diff; newN += diff;\n    }\n    while (visualLineNo(cm.doc, newN) != newN) {\n      if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n      newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n      index += dir;\n    }\n    return {index: index, lineN: newN}\n  }\n\n  // Force the view to cover a given range, adding empty view element\n  // or clipping off existing ones as needed.\n  function adjustView(cm, from, to) {\n    var display = cm.display, view = display.view;\n    if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n      display.view = buildViewArray(cm, from, to);\n      display.viewFrom = from;\n    } else {\n      if (display.viewFrom > from)\n        { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n      else if (display.viewFrom < from)\n        { display.view = display.view.slice(findViewIndex(cm, from)); }\n      display.viewFrom = from;\n      if (display.viewTo < to)\n        { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n      else if (display.viewTo > to)\n        { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n    }\n    display.viewTo = to;\n  }\n\n  // Count the number of lines in the view whose DOM representation is\n  // out of date (or nonexistent).\n  function countDirtyView(cm) {\n    var view = cm.display.view, dirty = 0;\n    for (var i = 0; i < view.length; i++) {\n      var lineView = view[i];\n      if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n    }\n    return dirty\n  }\n\n  function updateSelection(cm) {\n    cm.display.input.showSelection(cm.display.input.prepareSelection());\n  }\n\n  function prepareSelection(cm, primary) {\n    if ( primary === void 0 ) primary = true;\n\n    var doc = cm.doc, result = {};\n    var curFragment = result.cursors = document.createDocumentFragment();\n    var selFragment = result.selection = document.createDocumentFragment();\n\n    var customCursor = cm.options.$customCursor;\n    if (customCursor) { primary = true; }\n    for (var i = 0; i < doc.sel.ranges.length; i++) {\n      if (!primary && i == doc.sel.primIndex) { continue }\n      var range = doc.sel.ranges[i];\n      if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n      var collapsed = range.empty();\n      if (customCursor) {\n        var head = customCursor(cm, range);\n        if (head) { drawSelectionCursor(cm, head, curFragment); }\n      } else if (collapsed || cm.options.showCursorWhenSelecting) {\n        drawSelectionCursor(cm, range.head, curFragment);\n      }\n      if (!collapsed)\n        { drawSelectionRange(cm, range, selFragment); }\n    }\n    return result\n  }\n\n  // Draws a cursor for the given range\n  function drawSelectionCursor(cm, head, output) {\n    var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n    var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n    cursor.style.left = pos.left + \"px\";\n    cursor.style.top = pos.top + \"px\";\n    cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n    if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n      var charPos = charCoords(cm, head, \"div\", null, null);\n      var width = charPos.right - charPos.left;\n      cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n    }\n\n    if (pos.other) {\n      // Secondary cursor, shown when on a 'jump' in bi-directional text\n      var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n      otherCursor.style.display = \"\";\n      otherCursor.style.left = pos.other.left + \"px\";\n      otherCursor.style.top = pos.other.top + \"px\";\n      otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n    }\n  }\n\n  function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n  // Draws the given range as a highlighted selection\n  function drawSelectionRange(cm, range, output) {\n    var display = cm.display, doc = cm.doc;\n    var fragment = document.createDocumentFragment();\n    var padding = paddingH(cm.display), leftSide = padding.left;\n    var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n    var docLTR = doc.direction == \"ltr\";\n\n    function add(left, top, width, bottom) {\n      if (top < 0) { top = 0; }\n      top = Math.round(top);\n      bottom = Math.round(bottom);\n      fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n                             top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n                             height: \" + (bottom - top) + \"px\")));\n    }\n\n    function drawForLine(line, fromArg, toArg) {\n      var lineObj = getLine(doc, line);\n      var lineLen = lineObj.text.length;\n      var start, end;\n      function coords(ch, bias) {\n        return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n      }\n\n      function wrapX(pos, dir, side) {\n        var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n        var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n        var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n        return coords(ch, prop)[prop]\n      }\n\n      var order = getOrder(lineObj, doc.direction);\n      iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n        var ltr = dir == \"ltr\";\n        var fromPos = coords(from, ltr ? \"left\" : \"right\");\n        var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n        var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n        var first = i == 0, last = !order || i == order.length - 1;\n        if (toPos.top - fromPos.top <= 3) { // Single line\n          var openLeft = (docLTR ? openStart : openEnd) && first;\n          var openRight = (docLTR ? openEnd : openStart) && last;\n          var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n          var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n          add(left, fromPos.top, right - left, fromPos.bottom);\n        } else { // Multiple lines\n          var topLeft, topRight, botLeft, botRight;\n          if (ltr) {\n            topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n            topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n            botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n            botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n          } else {\n            topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n            topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n            botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n            botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n          }\n          add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n          if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n          add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n        }\n\n        if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n        if (cmpCoords(toPos, start) < 0) { start = toPos; }\n        if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n        if (cmpCoords(toPos, end) < 0) { end = toPos; }\n      });\n      return {start: start, end: end}\n    }\n\n    var sFrom = range.from(), sTo = range.to();\n    if (sFrom.line == sTo.line) {\n      drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n    } else {\n      var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n      var singleVLine = visualLine(fromLine) == visualLine(toLine);\n      var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n      var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n      if (singleVLine) {\n        if (leftEnd.top < rightStart.top - 2) {\n          add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n          add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n        } else {\n          add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n        }\n      }\n      if (leftEnd.bottom < rightStart.top)\n        { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n    }\n\n    output.appendChild(fragment);\n  }\n\n  // Cursor-blinking\n  function restartBlink(cm) {\n    if (!cm.state.focused) { return }\n    var display = cm.display;\n    clearInterval(display.blinker);\n    var on = true;\n    display.cursorDiv.style.visibility = \"\";\n    if (cm.options.cursorBlinkRate > 0)\n      { display.blinker = setInterval(function () {\n        if (!cm.hasFocus()) { onBlur(cm); }\n        display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n      }, cm.options.cursorBlinkRate); }\n    else if (cm.options.cursorBlinkRate < 0)\n      { display.cursorDiv.style.visibility = \"hidden\"; }\n  }\n\n  function ensureFocus(cm) {\n    if (!cm.hasFocus()) {\n      cm.display.input.focus();\n      if (!cm.state.focused) { onFocus(cm); }\n    }\n  }\n\n  function delayBlurEvent(cm) {\n    cm.state.delayingBlurEvent = true;\n    setTimeout(function () { if (cm.state.delayingBlurEvent) {\n      cm.state.delayingBlurEvent = false;\n      if (cm.state.focused) { onBlur(cm); }\n    } }, 100);\n  }\n\n  function onFocus(cm, e) {\n    if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n    if (cm.options.readOnly == \"nocursor\") { return }\n    if (!cm.state.focused) {\n      signal(cm, \"focus\", cm, e);\n      cm.state.focused = true;\n      addClass(cm.display.wrapper, \"CodeMirror-focused\");\n      // This test prevents this from firing when a context\n      // menu is closed (since the input reset would kill the\n      // select-all detection hack)\n      if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n        cm.display.input.reset();\n        if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n      }\n      cm.display.input.receivedFocus();\n    }\n    restartBlink(cm);\n  }\n  function onBlur(cm, e) {\n    if (cm.state.delayingBlurEvent) { return }\n\n    if (cm.state.focused) {\n      signal(cm, \"blur\", cm, e);\n      cm.state.focused = false;\n      rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n    }\n    clearInterval(cm.display.blinker);\n    setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n  }\n\n  // Read the actual heights of the rendered lines, and update their\n  // stored heights to match.\n  function updateHeightsInViewport(cm) {\n    var display = cm.display;\n    var prevBottom = display.lineDiv.offsetTop;\n    var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n    var oldHeight = display.lineDiv.getBoundingClientRect().top;\n    var mustScroll = 0;\n    for (var i = 0; i < display.view.length; i++) {\n      var cur = display.view[i], wrapping = cm.options.lineWrapping;\n      var height = (void 0), width = 0;\n      if (cur.hidden) { continue }\n      oldHeight += cur.line.height;\n      if (ie && ie_version < 8) {\n        var bot = cur.node.offsetTop + cur.node.offsetHeight;\n        height = bot - prevBottom;\n        prevBottom = bot;\n      } else {\n        var box = cur.node.getBoundingClientRect();\n        height = box.bottom - box.top;\n        // Check that lines don't extend past the right of the current\n        // editor width\n        if (!wrapping && cur.text.firstChild)\n          { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n      }\n      var diff = cur.line.height - height;\n      if (diff > .005 || diff < -.005) {\n        if (oldHeight < viewTop) { mustScroll -= diff; }\n        updateLineHeight(cur.line, height);\n        updateWidgetHeight(cur.line);\n        if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n          { updateWidgetHeight(cur.rest[j]); } }\n      }\n      if (width > cm.display.sizerWidth) {\n        var chWidth = Math.ceil(width / charWidth(cm.display));\n        if (chWidth > cm.display.maxLineLength) {\n          cm.display.maxLineLength = chWidth;\n          cm.display.maxLine = cur.line;\n          cm.display.maxLineChanged = true;\n        }\n      }\n    }\n    if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n  }\n\n  // Read and store the height of line widgets associated with the\n  // given line.\n  function updateWidgetHeight(line) {\n    if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n      var w = line.widgets[i], parent = w.node.parentNode;\n      if (parent) { w.height = parent.offsetHeight; }\n    } }\n  }\n\n  // Compute the lines that are visible in a given viewport (defaults\n  // the the current scroll position). viewport may contain top,\n  // height, and ensure (see op.scrollToPos) properties.\n  function visibleLines(display, doc, viewport) {\n    var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n    top = Math.floor(top - paddingTop(display));\n    var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n    var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n    // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n    // forces those lines into the viewport (if possible).\n    if (viewport && viewport.ensure) {\n      var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n      if (ensureFrom < from) {\n        from = ensureFrom;\n        to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n      } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n        from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n        to = ensureTo;\n      }\n    }\n    return {from: from, to: Math.max(to, from + 1)}\n  }\n\n  // SCROLLING THINGS INTO VIEW\n\n  // If an editor sits on the top or bottom of the window, partially\n  // scrolled out of view, this ensures that the cursor is visible.\n  function maybeScrollWindow(cm, rect) {\n    if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n    var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n    if (rect.top + box.top < 0) { doScroll = true; }\n    else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n    if (doScroll != null && !phantom) {\n      var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n                         top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n                         height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n                         left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n      cm.display.lineSpace.appendChild(scrollNode);\n      scrollNode.scrollIntoView(doScroll);\n      cm.display.lineSpace.removeChild(scrollNode);\n    }\n  }\n\n  // Scroll a given position into view (immediately), verifying that\n  // it actually became visible (as line heights are accurately\n  // measured, the position of something may 'drift' during drawing).\n  function scrollPosIntoView(cm, pos, end, margin) {\n    if (margin == null) { margin = 0; }\n    var rect;\n    if (!cm.options.lineWrapping && pos == end) {\n      // Set pos and end to the cursor positions around the character pos sticks to\n      // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n      // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n      end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n      pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n    }\n    for (var limit = 0; limit < 5; limit++) {\n      var changed = false;\n      var coords = cursorCoords(cm, pos);\n      var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n      rect = {left: Math.min(coords.left, endCoords.left),\n              top: Math.min(coords.top, endCoords.top) - margin,\n              right: Math.max(coords.left, endCoords.left),\n              bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n      var scrollPos = calculateScrollPos(cm, rect);\n      var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n      if (scrollPos.scrollTop != null) {\n        updateScrollTop(cm, scrollPos.scrollTop);\n        if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n      }\n      if (scrollPos.scrollLeft != null) {\n        setScrollLeft(cm, scrollPos.scrollLeft);\n        if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n      }\n      if (!changed) { break }\n    }\n    return rect\n  }\n\n  // Scroll a given set of coordinates into view (immediately).\n  function scrollIntoView(cm, rect) {\n    var scrollPos = calculateScrollPos(cm, rect);\n    if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n    if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n  }\n\n  // Calculate a new scroll position needed to scroll the given\n  // rectangle into view. Returns an object with scrollTop and\n  // scrollLeft properties. When these are undefined, the\n  // vertical/horizontal position does not need to be adjusted.\n  function calculateScrollPos(cm, rect) {\n    var display = cm.display, snapMargin = textHeight(cm.display);\n    if (rect.top < 0) { rect.top = 0; }\n    var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n    var screen = displayHeight(cm), result = {};\n    if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n    var docBottom = cm.doc.height + paddingVert(display);\n    var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n    if (rect.top < screentop) {\n      result.scrollTop = atTop ? 0 : rect.top;\n    } else if (rect.bottom > screentop + screen) {\n      var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n      if (newTop != screentop) { result.scrollTop = newTop; }\n    }\n\n    var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n    var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n    var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n    var tooWide = rect.right - rect.left > screenw;\n    if (tooWide) { rect.right = rect.left + screenw; }\n    if (rect.left < 10)\n      { result.scrollLeft = 0; }\n    else if (rect.left < screenleft)\n      { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n    else if (rect.right > screenw + screenleft - 3)\n      { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n    return result\n  }\n\n  // Store a relative adjustment to the scroll position in the current\n  // operation (to be applied when the operation finishes).\n  function addToScrollTop(cm, top) {\n    if (top == null) { return }\n    resolveScrollToPos(cm);\n    cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n  }\n\n  // Make sure that at the end of the operation the current cursor is\n  // shown.\n  function ensureCursorVisible(cm) {\n    resolveScrollToPos(cm);\n    var cur = cm.getCursor();\n    cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n  }\n\n  function scrollToCoords(cm, x, y) {\n    if (x != null || y != null) { resolveScrollToPos(cm); }\n    if (x != null) { cm.curOp.scrollLeft = x; }\n    if (y != null) { cm.curOp.scrollTop = y; }\n  }\n\n  function scrollToRange(cm, range) {\n    resolveScrollToPos(cm);\n    cm.curOp.scrollToPos = range;\n  }\n\n  // When an operation has its scrollToPos property set, and another\n  // scroll action is applied before the end of the operation, this\n  // 'simulates' scrolling that position into view in a cheap way, so\n  // that the effect of intermediate scroll commands is not ignored.\n  function resolveScrollToPos(cm) {\n    var range = cm.curOp.scrollToPos;\n    if (range) {\n      cm.curOp.scrollToPos = null;\n      var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n      scrollToCoordsRange(cm, from, to, range.margin);\n    }\n  }\n\n  function scrollToCoordsRange(cm, from, to, margin) {\n    var sPos = calculateScrollPos(cm, {\n      left: Math.min(from.left, to.left),\n      top: Math.min(from.top, to.top) - margin,\n      right: Math.max(from.right, to.right),\n      bottom: Math.max(from.bottom, to.bottom) + margin\n    });\n    scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n  }\n\n  // Sync the scrollable area and scrollbars, ensure the viewport\n  // covers the visible area.\n  function updateScrollTop(cm, val) {\n    if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n    if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n    setScrollTop(cm, val, true);\n    if (gecko) { updateDisplaySimple(cm); }\n    startWorker(cm, 100);\n  }\n\n  function setScrollTop(cm, val, forceScroll) {\n    val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n    if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n    cm.doc.scrollTop = val;\n    cm.display.scrollbars.setScrollTop(val);\n    if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n  }\n\n  // Sync scroller and scrollbar, ensure the gutter elements are\n  // aligned.\n  function setScrollLeft(cm, val, isScroller, forceScroll) {\n    val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n    if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n    cm.doc.scrollLeft = val;\n    alignHorizontally(cm);\n    if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n    cm.display.scrollbars.setScrollLeft(val);\n  }\n\n  // SCROLLBARS\n\n  // Prepare DOM reads needed to update the scrollbars. Done in one\n  // shot to minimize update/measure roundtrips.\n  function measureForScrollbars(cm) {\n    var d = cm.display, gutterW = d.gutters.offsetWidth;\n    var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n    return {\n      clientHeight: d.scroller.clientHeight,\n      viewHeight: d.wrapper.clientHeight,\n      scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n      viewWidth: d.wrapper.clientWidth,\n      barLeft: cm.options.fixedGutter ? gutterW : 0,\n      docHeight: docH,\n      scrollHeight: docH + scrollGap(cm) + d.barHeight,\n      nativeBarWidth: d.nativeBarWidth,\n      gutterWidth: gutterW\n    }\n  }\n\n  var NativeScrollbars = function(place, scroll, cm) {\n    this.cm = cm;\n    var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n    var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n    vert.tabIndex = horiz.tabIndex = -1;\n    place(vert); place(horiz);\n\n    on(vert, \"scroll\", function () {\n      if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n    });\n    on(horiz, \"scroll\", function () {\n      if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n    });\n\n    this.checkedZeroWidth = false;\n    // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n    if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n  };\n\n  NativeScrollbars.prototype.update = function (measure) {\n    var needsH = measure.scrollWidth > measure.clientWidth + 1;\n    var needsV = measure.scrollHeight > measure.clientHeight + 1;\n    var sWidth = measure.nativeBarWidth;\n\n    if (needsV) {\n      this.vert.style.display = \"block\";\n      this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n      var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n      // A bug in IE8 can cause this value to be negative, so guard it.\n      this.vert.firstChild.style.height =\n        Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n    } else {\n      this.vert.scrollTop = 0;\n      this.vert.style.display = \"\";\n      this.vert.firstChild.style.height = \"0\";\n    }\n\n    if (needsH) {\n      this.horiz.style.display = \"block\";\n      this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n      this.horiz.style.left = measure.barLeft + \"px\";\n      var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n      this.horiz.firstChild.style.width =\n        Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n    } else {\n      this.horiz.style.display = \"\";\n      this.horiz.firstChild.style.width = \"0\";\n    }\n\n    if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n      if (sWidth == 0) { this.zeroWidthHack(); }\n      this.checkedZeroWidth = true;\n    }\n\n    return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n  };\n\n  NativeScrollbars.prototype.setScrollLeft = function (pos) {\n    if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n    if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n  };\n\n  NativeScrollbars.prototype.setScrollTop = function (pos) {\n    if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n    if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n  };\n\n  NativeScrollbars.prototype.zeroWidthHack = function () {\n    var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n    this.horiz.style.height = this.vert.style.width = w;\n    this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n    this.disableHoriz = new Delayed;\n    this.disableVert = new Delayed;\n  };\n\n  NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n    bar.style.pointerEvents = \"auto\";\n    function maybeDisable() {\n      // To find out whether the scrollbar is still visible, we\n      // check whether the element under the pixel in the bottom\n      // right corner of the scrollbar box is the scrollbar box\n      // itself (when the bar is still visible) or its filler child\n      // (when the bar is hidden). If it is still visible, we keep\n      // it enabled, if it's hidden, we disable pointer events.\n      var box = bar.getBoundingClientRect();\n      var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n          : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n      if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n      else { delay.set(1000, maybeDisable); }\n    }\n    delay.set(1000, maybeDisable);\n  };\n\n  NativeScrollbars.prototype.clear = function () {\n    var parent = this.horiz.parentNode;\n    parent.removeChild(this.horiz);\n    parent.removeChild(this.vert);\n  };\n\n  var NullScrollbars = function () {};\n\n  NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n  NullScrollbars.prototype.setScrollLeft = function () {};\n  NullScrollbars.prototype.setScrollTop = function () {};\n  NullScrollbars.prototype.clear = function () {};\n\n  function updateScrollbars(cm, measure) {\n    if (!measure) { measure = measureForScrollbars(cm); }\n    var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n    updateScrollbarsInner(cm, measure);\n    for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n      if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n        { updateHeightsInViewport(cm); }\n      updateScrollbarsInner(cm, measureForScrollbars(cm));\n      startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n    }\n  }\n\n  // Re-synchronize the fake scrollbars with the actual size of the\n  // content.\n  function updateScrollbarsInner(cm, measure) {\n    var d = cm.display;\n    var sizes = d.scrollbars.update(measure);\n\n    d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n    d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n    d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n    if (sizes.right && sizes.bottom) {\n      d.scrollbarFiller.style.display = \"block\";\n      d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n      d.scrollbarFiller.style.width = sizes.right + \"px\";\n    } else { d.scrollbarFiller.style.display = \"\"; }\n    if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n      d.gutterFiller.style.display = \"block\";\n      d.gutterFiller.style.height = sizes.bottom + \"px\";\n      d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n    } else { d.gutterFiller.style.display = \"\"; }\n  }\n\n  var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n  function initScrollbars(cm) {\n    if (cm.display.scrollbars) {\n      cm.display.scrollbars.clear();\n      if (cm.display.scrollbars.addClass)\n        { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n    }\n\n    cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n      cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n      // Prevent clicks in the scrollbars from killing focus\n      on(node, \"mousedown\", function () {\n        if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n      });\n      node.setAttribute(\"cm-not-content\", \"true\");\n    }, function (pos, axis) {\n      if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n      else { updateScrollTop(cm, pos); }\n    }, cm);\n    if (cm.display.scrollbars.addClass)\n      { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n  }\n\n  // Operations are used to wrap a series of changes to the editor\n  // state in such a way that each change won't have to update the\n  // cursor and display (which would be awkward, slow, and\n  // error-prone). Instead, display updates are batched and then all\n  // combined and executed at once.\n\n  var nextOpId = 0;\n  // Start a new operation.\n  function startOperation(cm) {\n    cm.curOp = {\n      cm: cm,\n      viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n      startHeight: cm.doc.height, // Used to detect need to update scrollbar\n      forceUpdate: false,      // Used to force a redraw\n      updateInput: 0,       // Whether to reset the input textarea\n      typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n      changeObjs: null,        // Accumulated changes, for firing change events\n      cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n      cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n      selectionChanged: false, // Whether the selection needs to be redrawn\n      updateMaxLine: false,    // Set when the widest line needs to be determined anew\n      scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n      scrollToPos: null,       // Used to scroll to a specific position\n      focus: false,\n      id: ++nextOpId,          // Unique ID\n      markArrays: null         // Used by addMarkedSpan\n    };\n    pushOperation(cm.curOp);\n  }\n\n  // Finish an operation, updating the display and signalling delayed events\n  function endOperation(cm) {\n    var op = cm.curOp;\n    if (op) { finishOperation(op, function (group) {\n      for (var i = 0; i < group.ops.length; i++)\n        { group.ops[i].cm.curOp = null; }\n      endOperations(group);\n    }); }\n  }\n\n  // The DOM updates done when an operation finishes are batched so\n  // that the minimum number of relayouts are required.\n  function endOperations(group) {\n    var ops = group.ops;\n    for (var i = 0; i < ops.length; i++) // Read DOM\n      { endOperation_R1(ops[i]); }\n    for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n      { endOperation_W1(ops[i$1]); }\n    for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n      { endOperation_R2(ops[i$2]); }\n    for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n      { endOperation_W2(ops[i$3]); }\n    for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n      { endOperation_finish(ops[i$4]); }\n  }\n\n  function endOperation_R1(op) {\n    var cm = op.cm, display = cm.display;\n    maybeClipScrollbars(cm);\n    if (op.updateMaxLine) { findMaxLine(cm); }\n\n    op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n      op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                         op.scrollToPos.to.line >= display.viewTo) ||\n      display.maxLineChanged && cm.options.lineWrapping;\n    op.update = op.mustUpdate &&\n      new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n  }\n\n  function endOperation_W1(op) {\n    op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n  }\n\n  function endOperation_R2(op) {\n    var cm = op.cm, display = cm.display;\n    if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n    op.barMeasure = measureForScrollbars(cm);\n\n    // If the max line changed since it was last measured, measure it,\n    // and ensure the document's width matches it.\n    // updateDisplay_W2 will use these properties to do the actual resizing\n    if (display.maxLineChanged && !cm.options.lineWrapping) {\n      op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n      cm.display.sizerWidth = op.adjustWidthTo;\n      op.barMeasure.scrollWidth =\n        Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n      op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n    }\n\n    if (op.updatedDisplay || op.selectionChanged)\n      { op.preparedSelection = display.input.prepareSelection(); }\n  }\n\n  function endOperation_W2(op) {\n    var cm = op.cm;\n\n    if (op.adjustWidthTo != null) {\n      cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n      if (op.maxScrollLeft < cm.doc.scrollLeft)\n        { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n      cm.display.maxLineChanged = false;\n    }\n\n    var takeFocus = op.focus && op.focus == activeElt();\n    if (op.preparedSelection)\n      { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n    if (op.updatedDisplay || op.startHeight != cm.doc.height)\n      { updateScrollbars(cm, op.barMeasure); }\n    if (op.updatedDisplay)\n      { setDocumentHeight(cm, op.barMeasure); }\n\n    if (op.selectionChanged) { restartBlink(cm); }\n\n    if (cm.state.focused && op.updateInput)\n      { cm.display.input.reset(op.typing); }\n    if (takeFocus) { ensureFocus(op.cm); }\n  }\n\n  function endOperation_finish(op) {\n    var cm = op.cm, display = cm.display, doc = cm.doc;\n\n    if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n    // Abort mouse wheel delta measurement, when scrolling explicitly\n    if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n      { display.wheelStartX = display.wheelStartY = null; }\n\n    // Propagate the scroll position to the actual DOM scroller\n    if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n    if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n    // If we need to scroll a specific position into view, do so.\n    if (op.scrollToPos) {\n      var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                   clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n      maybeScrollWindow(cm, rect);\n    }\n\n    // Fire events for markers that are hidden/unidden by editing or\n    // undoing\n    var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n    if (hidden) { for (var i = 0; i < hidden.length; ++i)\n      { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n    if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n      { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n    if (display.wrapper.offsetHeight)\n      { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n    // Fire change events, and delayed event handlers\n    if (op.changeObjs)\n      { signal(cm, \"changes\", cm, op.changeObjs); }\n    if (op.update)\n      { op.update.finish(); }\n  }\n\n  // Run the given function in an operation\n  function runInOp(cm, f) {\n    if (cm.curOp) { return f() }\n    startOperation(cm);\n    try { return f() }\n    finally { endOperation(cm); }\n  }\n  // Wraps a function in an operation. Returns the wrapped function.\n  function operation(cm, f) {\n    return function() {\n      if (cm.curOp) { return f.apply(cm, arguments) }\n      startOperation(cm);\n      try { return f.apply(cm, arguments) }\n      finally { endOperation(cm); }\n    }\n  }\n  // Used to add methods to editor and doc instances, wrapping them in\n  // operations.\n  function methodOp(f) {\n    return function() {\n      if (this.curOp) { return f.apply(this, arguments) }\n      startOperation(this);\n      try { return f.apply(this, arguments) }\n      finally { endOperation(this); }\n    }\n  }\n  function docMethodOp(f) {\n    return function() {\n      var cm = this.cm;\n      if (!cm || cm.curOp) { return f.apply(this, arguments) }\n      startOperation(cm);\n      try { return f.apply(this, arguments) }\n      finally { endOperation(cm); }\n    }\n  }\n\n  // HIGHLIGHT WORKER\n\n  function startWorker(cm, time) {\n    if (cm.doc.highlightFrontier < cm.display.viewTo)\n      { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n  }\n\n  function highlightWorker(cm) {\n    var doc = cm.doc;\n    if (doc.highlightFrontier >= cm.display.viewTo) { return }\n    var end = +new Date + cm.options.workTime;\n    var context = getContextBefore(cm, doc.highlightFrontier);\n    var changedLines = [];\n\n    doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n      if (context.line >= cm.display.viewFrom) { // Visible\n        var oldStyles = line.styles;\n        var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n        var highlighted = highlightLine(cm, line, context, true);\n        if (resetState) { context.state = resetState; }\n        line.styles = highlighted.styles;\n        var oldCls = line.styleClasses, newCls = highlighted.classes;\n        if (newCls) { line.styleClasses = newCls; }\n        else if (oldCls) { line.styleClasses = null; }\n        var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n          oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n        for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n        if (ischange) { changedLines.push(context.line); }\n        line.stateAfter = context.save();\n        context.nextLine();\n      } else {\n        if (line.text.length <= cm.options.maxHighlightLength)\n          { processLine(cm, line.text, context); }\n        line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n        context.nextLine();\n      }\n      if (+new Date > end) {\n        startWorker(cm, cm.options.workDelay);\n        return true\n      }\n    });\n    doc.highlightFrontier = context.line;\n    doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n    if (changedLines.length) { runInOp(cm, function () {\n      for (var i = 0; i < changedLines.length; i++)\n        { regLineChange(cm, changedLines[i], \"text\"); }\n    }); }\n  }\n\n  // DISPLAY DRAWING\n\n  var DisplayUpdate = function(cm, viewport, force) {\n    var display = cm.display;\n\n    this.viewport = viewport;\n    // Store some values that we'll need later (but don't want to force a relayout for)\n    this.visible = visibleLines(display, cm.doc, viewport);\n    this.editorIsHidden = !display.wrapper.offsetWidth;\n    this.wrapperHeight = display.wrapper.clientHeight;\n    this.wrapperWidth = display.wrapper.clientWidth;\n    this.oldDisplayWidth = displayWidth(cm);\n    this.force = force;\n    this.dims = getDimensions(cm);\n    this.events = [];\n  };\n\n  DisplayUpdate.prototype.signal = function (emitter, type) {\n    if (hasHandler(emitter, type))\n      { this.events.push(arguments); }\n  };\n  DisplayUpdate.prototype.finish = function () {\n    for (var i = 0; i < this.events.length; i++)\n      { signal.apply(null, this.events[i]); }\n  };\n\n  function maybeClipScrollbars(cm) {\n    var display = cm.display;\n    if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n      display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n      display.heightForcer.style.height = scrollGap(cm) + \"px\";\n      display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n      display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n      display.scrollbarsClipped = true;\n    }\n  }\n\n  function selectionSnapshot(cm) {\n    if (cm.hasFocus()) { return null }\n    var active = activeElt();\n    if (!active || !contains(cm.display.lineDiv, active)) { return null }\n    var result = {activeElt: active};\n    if (window.getSelection) {\n      var sel = window.getSelection();\n      if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n        result.anchorNode = sel.anchorNode;\n        result.anchorOffset = sel.anchorOffset;\n        result.focusNode = sel.focusNode;\n        result.focusOffset = sel.focusOffset;\n      }\n    }\n    return result\n  }\n\n  function restoreSelection(snapshot) {\n    if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n    snapshot.activeElt.focus();\n    if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n        snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n      var sel = window.getSelection(), range = document.createRange();\n      range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n      range.collapse(false);\n      sel.removeAllRanges();\n      sel.addRange(range);\n      sel.extend(snapshot.focusNode, snapshot.focusOffset);\n    }\n  }\n\n  // Does the actual updating of the line display. Bails out\n  // (returning false) when there is nothing to be done and forced is\n  // false.\n  function updateDisplayIfNeeded(cm, update) {\n    var display = cm.display, doc = cm.doc;\n\n    if (update.editorIsHidden) {\n      resetView(cm);\n      return false\n    }\n\n    // Bail out if the visible area is already rendered and nothing changed.\n    if (!update.force &&\n        update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n        display.renderedView == display.view && countDirtyView(cm) == 0)\n      { return false }\n\n    if (maybeUpdateLineNumberWidth(cm)) {\n      resetView(cm);\n      update.dims = getDimensions(cm);\n    }\n\n    // Compute a suitable new viewport (from & to)\n    var end = doc.first + doc.size;\n    var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n    var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n    if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n    if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n    if (sawCollapsedSpans) {\n      from = visualLineNo(cm.doc, from);\n      to = visualLineEndNo(cm.doc, to);\n    }\n\n    var different = from != display.viewFrom || to != display.viewTo ||\n      display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n    adjustView(cm, from, to);\n\n    display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n    // Position the mover div to align with the current scroll position\n    cm.display.mover.style.top = display.viewOffset + \"px\";\n\n    var toUpdate = countDirtyView(cm);\n    if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n      { return false }\n\n    // For big changes, we hide the enclosing element during the\n    // update, since that speeds up the operations on most browsers.\n    var selSnapshot = selectionSnapshot(cm);\n    if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n    patchDisplay(cm, display.updateLineNumbers, update.dims);\n    if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n    display.renderedView = display.view;\n    // There might have been a widget with a focused element that got\n    // hidden or updated, if so re-focus it.\n    restoreSelection(selSnapshot);\n\n    // Prevent selection and cursors from interfering with the scroll\n    // width and height.\n    removeChildren(display.cursorDiv);\n    removeChildren(display.selectionDiv);\n    display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n    if (different) {\n      display.lastWrapHeight = update.wrapperHeight;\n      display.lastWrapWidth = update.wrapperWidth;\n      startWorker(cm, 400);\n    }\n\n    display.updateLineNumbers = null;\n\n    return true\n  }\n\n  function postUpdateDisplay(cm, update) {\n    var viewport = update.viewport;\n\n    for (var first = true;; first = false) {\n      if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n        // Clip forced viewport to actual scrollable area.\n        if (viewport && viewport.top != null)\n          { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n        // Updated line heights might result in the drawn area not\n        // actually covering the viewport. Keep looping until it does.\n        update.visible = visibleLines(cm.display, cm.doc, viewport);\n        if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n          { break }\n      } else if (first) {\n        update.visible = visibleLines(cm.display, cm.doc, viewport);\n      }\n      if (!updateDisplayIfNeeded(cm, update)) { break }\n      updateHeightsInViewport(cm);\n      var barMeasure = measureForScrollbars(cm);\n      updateSelection(cm);\n      updateScrollbars(cm, barMeasure);\n      setDocumentHeight(cm, barMeasure);\n      update.force = false;\n    }\n\n    update.signal(cm, \"update\", cm);\n    if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n      update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n      cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n    }\n  }\n\n  function updateDisplaySimple(cm, viewport) {\n    var update = new DisplayUpdate(cm, viewport);\n    if (updateDisplayIfNeeded(cm, update)) {\n      updateHeightsInViewport(cm);\n      postUpdateDisplay(cm, update);\n      var barMeasure = measureForScrollbars(cm);\n      updateSelection(cm);\n      updateScrollbars(cm, barMeasure);\n      setDocumentHeight(cm, barMeasure);\n      update.finish();\n    }\n  }\n\n  // Sync the actual display DOM structure with display.view, removing\n  // nodes for lines that are no longer in view, and creating the ones\n  // that are not there yet, and updating the ones that are out of\n  // date.\n  function patchDisplay(cm, updateNumbersFrom, dims) {\n    var display = cm.display, lineNumbers = cm.options.lineNumbers;\n    var container = display.lineDiv, cur = container.firstChild;\n\n    function rm(node) {\n      var next = node.nextSibling;\n      // Works around a throw-scroll bug in OS X Webkit\n      if (webkit && mac && cm.display.currentWheelTarget == node)\n        { node.style.display = \"none\"; }\n      else\n        { node.parentNode.removeChild(node); }\n      return next\n    }\n\n    var view = display.view, lineN = display.viewFrom;\n    // Loop over the elements in the view, syncing cur (the DOM nodes\n    // in display.lineDiv) with the view as we go.\n    for (var i = 0; i < view.length; i++) {\n      var lineView = view[i];\n      if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n        var node = buildLineElement(cm, lineView, lineN, dims);\n        container.insertBefore(node, cur);\n      } else { // Already drawn\n        while (cur != lineView.node) { cur = rm(cur); }\n        var updateNumber = lineNumbers && updateNumbersFrom != null &&\n          updateNumbersFrom <= lineN && lineView.lineNumber;\n        if (lineView.changes) {\n          if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n          updateLineForChanges(cm, lineView, lineN, dims);\n        }\n        if (updateNumber) {\n          removeChildren(lineView.lineNumber);\n          lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n        }\n        cur = lineView.node.nextSibling;\n      }\n      lineN += lineView.size;\n    }\n    while (cur) { cur = rm(cur); }\n  }\n\n  function updateGutterSpace(display) {\n    var width = display.gutters.offsetWidth;\n    display.sizer.style.marginLeft = width + \"px\";\n    // Send an event to consumers responding to changes in gutter width.\n    signalLater(display, \"gutterChanged\", display);\n  }\n\n  function setDocumentHeight(cm, measure) {\n    cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n    cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n    cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n  }\n\n  // Re-align line numbers and gutter marks to compensate for\n  // horizontal scrolling.\n  function alignHorizontally(cm) {\n    var display = cm.display, view = display.view;\n    if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n    var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n    var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n    for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n      if (cm.options.fixedGutter) {\n        if (view[i].gutter)\n          { view[i].gutter.style.left = left; }\n        if (view[i].gutterBackground)\n          { view[i].gutterBackground.style.left = left; }\n      }\n      var align = view[i].alignable;\n      if (align) { for (var j = 0; j < align.length; j++)\n        { align[j].style.left = left; } }\n    } }\n    if (cm.options.fixedGutter)\n      { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n  }\n\n  // Used to ensure that the line number gutter is still the right\n  // size for the current document size. Returns true when an update\n  // is needed.\n  function maybeUpdateLineNumberWidth(cm) {\n    if (!cm.options.lineNumbers) { return false }\n    var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n    if (last.length != display.lineNumChars) {\n      var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                                 \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n      var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n      display.lineGutter.style.width = \"\";\n      display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n      display.lineNumWidth = display.lineNumInnerWidth + padding;\n      display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n      display.lineGutter.style.width = display.lineNumWidth + \"px\";\n      updateGutterSpace(cm.display);\n      return true\n    }\n    return false\n  }\n\n  function getGutters(gutters, lineNumbers) {\n    var result = [], sawLineNumbers = false;\n    for (var i = 0; i < gutters.length; i++) {\n      var name = gutters[i], style = null;\n      if (typeof name != \"string\") { style = name.style; name = name.className; }\n      if (name == \"CodeMirror-linenumbers\") {\n        if (!lineNumbers) { continue }\n        else { sawLineNumbers = true; }\n      }\n      result.push({className: name, style: style});\n    }\n    if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n    return result\n  }\n\n  // Rebuild the gutter elements, ensure the margin to the left of the\n  // code matches their width.\n  function renderGutters(display) {\n    var gutters = display.gutters, specs = display.gutterSpecs;\n    removeChildren(gutters);\n    display.lineGutter = null;\n    for (var i = 0; i < specs.length; ++i) {\n      var ref = specs[i];\n      var className = ref.className;\n      var style = ref.style;\n      var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n      if (style) { gElt.style.cssText = style; }\n      if (className == \"CodeMirror-linenumbers\") {\n        display.lineGutter = gElt;\n        gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n      }\n    }\n    gutters.style.display = specs.length ? \"\" : \"none\";\n    updateGutterSpace(display);\n  }\n\n  function updateGutters(cm) {\n    renderGutters(cm.display);\n    regChange(cm);\n    alignHorizontally(cm);\n  }\n\n  // The display handles the DOM integration, both for input reading\n  // and content drawing. It holds references to DOM nodes and\n  // display-related state.\n\n  function Display(place, doc, input, options) {\n    var d = this;\n    this.input = input;\n\n    // Covers bottom-right square when both scrollbars are present.\n    d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n    d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n    // Covers bottom of gutter when coverGutterNextToScrollbar is on\n    // and h scrollbar is present.\n    d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n    d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n    // Will contain the actual code, positioned to cover the viewport.\n    d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n    // Elements are added to these to represent selection and cursors.\n    d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n    d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n    // A visibility: hidden element used to find the size of things.\n    d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n    // When lines outside of the viewport are measured, they are drawn in this.\n    d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n    // Wraps everything that needs to exist inside the vertically-padded coordinate system\n    d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n                      null, \"position: relative; outline: none\");\n    var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n    // Moved around its parent to cover visible view.\n    d.mover = elt(\"div\", [lines], null, \"position: relative\");\n    // Set to the height of the document, allowing scrolling.\n    d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n    d.sizerWidth = null;\n    // Behavior of elts with overflow: auto and padding is\n    // inconsistent across browsers. This is used to ensure the\n    // scrollable area is big enough.\n    d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n    // Will contain the gutters, if any.\n    d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n    d.lineGutter = null;\n    // Actual scrollable element.\n    d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n    d.scroller.setAttribute(\"tabIndex\", \"-1\");\n    // The element in which the editor lives.\n    d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n    // This attribute is respected by automatic translation systems such as Google Translate,\n    // and may also be respected by tools used by human translators.\n    d.wrapper.setAttribute('translate', 'no');\n\n    // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n    if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n    if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n    if (place) {\n      if (place.appendChild) { place.appendChild(d.wrapper); }\n      else { place(d.wrapper); }\n    }\n\n    // Current rendered range (may be bigger than the view window).\n    d.viewFrom = d.viewTo = doc.first;\n    d.reportedViewFrom = d.reportedViewTo = doc.first;\n    // Information about the rendered lines.\n    d.view = [];\n    d.renderedView = null;\n    // Holds info about a single rendered line when it was rendered\n    // for measurement, while not in view.\n    d.externalMeasured = null;\n    // Empty space (in pixels) above the view\n    d.viewOffset = 0;\n    d.lastWrapHeight = d.lastWrapWidth = 0;\n    d.updateLineNumbers = null;\n\n    d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n    d.scrollbarsClipped = false;\n\n    // Used to only resize the line number gutter when necessary (when\n    // the amount of lines crosses a boundary that makes its width change)\n    d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n    // Set to true when a non-horizontal-scrolling line widget is\n    // added. As an optimization, line widget aligning is skipped when\n    // this is false.\n    d.alignWidgets = false;\n\n    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n    // Tracks the maximum line length so that the horizontal scrollbar\n    // can be kept static when scrolling.\n    d.maxLine = null;\n    d.maxLineLength = 0;\n    d.maxLineChanged = false;\n\n    // Used for measuring wheel scrolling granularity\n    d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n    // True when shift is held down.\n    d.shift = false;\n\n    // Used to track whether anything happened since the context menu\n    // was opened.\n    d.selForContextMenu = null;\n\n    d.activeTouch = null;\n\n    d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n    renderGutters(d);\n\n    input.init(d);\n  }\n\n  // Since the delta values reported on mouse wheel events are\n  // unstandardized between browsers and even browser versions, and\n  // generally horribly unpredictable, this code starts by measuring\n  // the scroll effect that the first few mouse wheel events have,\n  // and, from that, detects the way it can convert deltas to pixel\n  // offsets afterwards.\n  //\n  // The reason we want to know the amount a wheel event will scroll\n  // is that it gives us a chance to update the display before the\n  // actual scrolling happens, reducing flickering.\n\n  var wheelSamples = 0, wheelPixelsPerUnit = null;\n  // Fill in a browser-detected starting value on browsers where we\n  // know one. These don't have to be accurate -- the result of them\n  // being wrong would just be a slight flicker on the first wheel\n  // scroll (if it is large enough).\n  if (ie) { wheelPixelsPerUnit = -.53; }\n  else if (gecko) { wheelPixelsPerUnit = 15; }\n  else if (chrome) { wheelPixelsPerUnit = -.7; }\n  else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n  function wheelEventDelta(e) {\n    var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n    if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n    if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n    else if (dy == null) { dy = e.wheelDelta; }\n    return {x: dx, y: dy}\n  }\n  function wheelEventPixels(e) {\n    var delta = wheelEventDelta(e);\n    delta.x *= wheelPixelsPerUnit;\n    delta.y *= wheelPixelsPerUnit;\n    return delta\n  }\n\n  function onScrollWheel(cm, e) {\n    var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n    var pixelsPerUnit = wheelPixelsPerUnit;\n    if (e.deltaMode === 0) {\n      dx = e.deltaX;\n      dy = e.deltaY;\n      pixelsPerUnit = 1;\n    }\n\n    var display = cm.display, scroll = display.scroller;\n    // Quit if there's nothing to scroll here\n    var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n    var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n    if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n    // Webkit browsers on OS X abort momentum scrolls when the target\n    // of the scroll event is removed from the scrollable element.\n    // This hack (see related code in patchDisplay) makes sure the\n    // element is kept around.\n    if (dy && mac && webkit) {\n      outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n        for (var i = 0; i < view.length; i++) {\n          if (view[i].node == cur) {\n            cm.display.currentWheelTarget = cur;\n            break outer\n          }\n        }\n      }\n    }\n\n    // On some browsers, horizontal scrolling will cause redraws to\n    // happen before the gutter has been realigned, causing it to\n    // wriggle around in a most unseemly way. When we have an\n    // estimated pixels/delta value, we just handle horizontal\n    // scrolling entirely here. It'll be slightly off from native, but\n    // better than glitching out.\n    if (dx && !gecko && !presto && pixelsPerUnit != null) {\n      if (dy && canScrollY)\n        { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n      setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n      // Only prevent default scrolling if vertical scrolling is\n      // actually possible. Otherwise, it causes vertical scroll\n      // jitter on OSX trackpads when deltaX is small and deltaY\n      // is large (issue #3579)\n      if (!dy || (dy && canScrollY))\n        { e_preventDefault(e); }\n      display.wheelStartX = null; // Abort measurement, if in progress\n      return\n    }\n\n    // 'Project' the visible viewport to cover the area that is being\n    // scrolled into view (if we know enough to estimate it).\n    if (dy && pixelsPerUnit != null) {\n      var pixels = dy * pixelsPerUnit;\n      var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n      if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n      else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n      updateDisplaySimple(cm, {top: top, bottom: bot});\n    }\n\n    if (wheelSamples < 20 && e.deltaMode !== 0) {\n      if (display.wheelStartX == null) {\n        display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n        display.wheelDX = dx; display.wheelDY = dy;\n        setTimeout(function () {\n          if (display.wheelStartX == null) { return }\n          var movedX = scroll.scrollLeft - display.wheelStartX;\n          var movedY = scroll.scrollTop - display.wheelStartY;\n          var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n            (movedX && display.wheelDX && movedX / display.wheelDX);\n          display.wheelStartX = display.wheelStartY = null;\n          if (!sample) { return }\n          wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n          ++wheelSamples;\n        }, 200);\n      } else {\n        display.wheelDX += dx; display.wheelDY += dy;\n      }\n    }\n  }\n\n  // Selection objects are immutable. A new one is created every time\n  // the selection changes. A selection is one or more non-overlapping\n  // (and non-touching) ranges, sorted, and an integer that indicates\n  // which one is the primary selection (the one that's scrolled into\n  // view, that getCursor returns, etc).\n  var Selection = function(ranges, primIndex) {\n    this.ranges = ranges;\n    this.primIndex = primIndex;\n  };\n\n  Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n  Selection.prototype.equals = function (other) {\n    if (other == this) { return true }\n    if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n    for (var i = 0; i < this.ranges.length; i++) {\n      var here = this.ranges[i], there = other.ranges[i];\n      if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n    }\n    return true\n  };\n\n  Selection.prototype.deepCopy = function () {\n    var out = [];\n    for (var i = 0; i < this.ranges.length; i++)\n      { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n    return new Selection(out, this.primIndex)\n  };\n\n  Selection.prototype.somethingSelected = function () {\n    for (var i = 0; i < this.ranges.length; i++)\n      { if (!this.ranges[i].empty()) { return true } }\n    return false\n  };\n\n  Selection.prototype.contains = function (pos, end) {\n    if (!end) { end = pos; }\n    for (var i = 0; i < this.ranges.length; i++) {\n      var range = this.ranges[i];\n      if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n        { return i }\n    }\n    return -1\n  };\n\n  var Range = function(anchor, head) {\n    this.anchor = anchor; this.head = head;\n  };\n\n  Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n  Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n  Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n  // Take an unsorted, potentially overlapping set of ranges, and\n  // build a selection out of it. 'Consumes' ranges array (modifying\n  // it).\n  function normalizeSelection(cm, ranges, primIndex) {\n    var mayTouch = cm && cm.options.selectionsMayTouch;\n    var prim = ranges[primIndex];\n    ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n    primIndex = indexOf(ranges, prim);\n    for (var i = 1; i < ranges.length; i++) {\n      var cur = ranges[i], prev = ranges[i - 1];\n      var diff = cmp(prev.to(), cur.from());\n      if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n        var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n        var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n        if (i <= primIndex) { --primIndex; }\n        ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n      }\n    }\n    return new Selection(ranges, primIndex)\n  }\n\n  function simpleSelection(anchor, head) {\n    return new Selection([new Range(anchor, head || anchor)], 0)\n  }\n\n  // Compute the position of the end of a change (its 'to' property\n  // refers to the pre-change end).\n  function changeEnd(change) {\n    if (!change.text) { return change.to }\n    return Pos(change.from.line + change.text.length - 1,\n               lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n  }\n\n  // Adjust a position to refer to the post-change position of the\n  // same text, or the end of the change if the change covers it.\n  function adjustForChange(pos, change) {\n    if (cmp(pos, change.from) < 0) { return pos }\n    if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n    var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n    if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n    return Pos(line, ch)\n  }\n\n  function computeSelAfterChange(doc, change) {\n    var out = [];\n    for (var i = 0; i < doc.sel.ranges.length; i++) {\n      var range = doc.sel.ranges[i];\n      out.push(new Range(adjustForChange(range.anchor, change),\n                         adjustForChange(range.head, change)));\n    }\n    return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n  }\n\n  function offsetPos(pos, old, nw) {\n    if (pos.line == old.line)\n      { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n    else\n      { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n  }\n\n  // Used by replaceSelections to allow moving the selection to the\n  // start or around the replaced test. Hint may be \"start\" or \"around\".\n  function computeReplacedSel(doc, changes, hint) {\n    var out = [];\n    var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n    for (var i = 0; i < changes.length; i++) {\n      var change = changes[i];\n      var from = offsetPos(change.from, oldPrev, newPrev);\n      var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n      oldPrev = change.to;\n      newPrev = to;\n      if (hint == \"around\") {\n        var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n        out[i] = new Range(inv ? to : from, inv ? from : to);\n      } else {\n        out[i] = new Range(from, from);\n      }\n    }\n    return new Selection(out, doc.sel.primIndex)\n  }\n\n  // Used to get the editor into a consistent state again when options change.\n\n  function loadMode(cm) {\n    cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n    resetModeState(cm);\n  }\n\n  function resetModeState(cm) {\n    cm.doc.iter(function (line) {\n      if (line.stateAfter) { line.stateAfter = null; }\n      if (line.styles) { line.styles = null; }\n    });\n    cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n    startWorker(cm, 100);\n    cm.state.modeGen++;\n    if (cm.curOp) { regChange(cm); }\n  }\n\n  // DOCUMENT DATA STRUCTURE\n\n  // By default, updates that start and end at the beginning of a line\n  // are treated specially, in order to make the association of line\n  // widgets and marker elements with the text behave more intuitive.\n  function isWholeLineUpdate(doc, change) {\n    return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n      (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n  }\n\n  // Perform a change on the document data structure.\n  function updateDoc(doc, change, markedSpans, estimateHeight) {\n    function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n    function update(line, text, spans) {\n      updateLine(line, text, spans, estimateHeight);\n      signalLater(line, \"change\", line, change);\n    }\n    function linesFor(start, end) {\n      var result = [];\n      for (var i = start; i < end; ++i)\n        { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n      return result\n    }\n\n    var from = change.from, to = change.to, text = change.text;\n    var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n    var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n    // Adjust the line structure\n    if (change.full) {\n      doc.insert(0, linesFor(0, text.length));\n      doc.remove(text.length, doc.size - text.length);\n    } else if (isWholeLineUpdate(doc, change)) {\n      // This is a whole-line replace. Treated specially to make\n      // sure line objects move the way they are supposed to.\n      var added = linesFor(0, text.length - 1);\n      update(lastLine, lastLine.text, lastSpans);\n      if (nlines) { doc.remove(from.line, nlines); }\n      if (added.length) { doc.insert(from.line, added); }\n    } else if (firstLine == lastLine) {\n      if (text.length == 1) {\n        update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n      } else {\n        var added$1 = linesFor(1, text.length - 1);\n        added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n        update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n        doc.insert(from.line + 1, added$1);\n      }\n    } else if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n      doc.remove(from.line + 1, nlines);\n    } else {\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n      update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n      var added$2 = linesFor(1, text.length - 1);\n      if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n      doc.insert(from.line + 1, added$2);\n    }\n\n    signalLater(doc, \"change\", doc, change);\n  }\n\n  // Call f for all linked documents.\n  function linkedDocs(doc, f, sharedHistOnly) {\n    function propagate(doc, skip, sharedHist) {\n      if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n        var rel = doc.linked[i];\n        if (rel.doc == skip) { continue }\n        var shared = sharedHist && rel.sharedHist;\n        if (sharedHistOnly && !shared) { continue }\n        f(rel.doc, shared);\n        propagate(rel.doc, doc, shared);\n      } }\n    }\n    propagate(doc, null, true);\n  }\n\n  // Attach a document to an editor.\n  function attachDoc(cm, doc) {\n    if (doc.cm) { throw new Error(\"This document is already in use.\") }\n    cm.doc = doc;\n    doc.cm = cm;\n    estimateLineHeights(cm);\n    loadMode(cm);\n    setDirectionClass(cm);\n    cm.options.direction = doc.direction;\n    if (!cm.options.lineWrapping) { findMaxLine(cm); }\n    cm.options.mode = doc.modeOption;\n    regChange(cm);\n  }\n\n  function setDirectionClass(cm) {\n  (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n  }\n\n  function directionChanged(cm) {\n    runInOp(cm, function () {\n      setDirectionClass(cm);\n      regChange(cm);\n    });\n  }\n\n  function History(prev) {\n    // Arrays of change events and selections. Doing something adds an\n    // event to done and clears undo. Undoing moves events from done\n    // to undone, redoing moves them in the other direction.\n    this.done = []; this.undone = [];\n    this.undoDepth = prev ? prev.undoDepth : Infinity;\n    // Used to track when changes can be merged into a single undo\n    // event\n    this.lastModTime = this.lastSelTime = 0;\n    this.lastOp = this.lastSelOp = null;\n    this.lastOrigin = this.lastSelOrigin = null;\n    // Used by the isClean() method\n    this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n  }\n\n  // Create a history change event from an updateDoc-style change\n  // object.\n  function historyChangeFromChange(doc, change) {\n    var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n    attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n    linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n    return histChange\n  }\n\n  // Pop all selection events off the end of a history array. Stop at\n  // a change event.\n  function clearSelectionEvents(array) {\n    while (array.length) {\n      var last = lst(array);\n      if (last.ranges) { array.pop(); }\n      else { break }\n    }\n  }\n\n  // Find the top change event in the history. Pop off selection\n  // events that are in the way.\n  function lastChangeEvent(hist, force) {\n    if (force) {\n      clearSelectionEvents(hist.done);\n      return lst(hist.done)\n    } else if (hist.done.length && !lst(hist.done).ranges) {\n      return lst(hist.done)\n    } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n      hist.done.pop();\n      return lst(hist.done)\n    }\n  }\n\n  // Register a change in the history. Merges changes that are within\n  // a single operation, or are close together with an origin that\n  // allows merging (starting with \"+\") into a single event.\n  function addChangeToHistory(doc, change, selAfter, opId) {\n    var hist = doc.history;\n    hist.undone.length = 0;\n    var time = +new Date, cur;\n    var last;\n\n    if ((hist.lastOp == opId ||\n         hist.lastOrigin == change.origin && change.origin &&\n         ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n          change.origin.charAt(0) == \"*\")) &&\n        (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n      // Merge this change into the last event\n      last = lst(cur.changes);\n      if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n        // Optimized case for simple insertion -- don't want to add\n        // new changesets for every character typed\n        last.to = changeEnd(change);\n      } else {\n        // Add new sub-event\n        cur.changes.push(historyChangeFromChange(doc, change));\n      }\n    } else {\n      // Can not be merged, start a new event.\n      var before = lst(hist.done);\n      if (!before || !before.ranges)\n        { pushSelectionToHistory(doc.sel, hist.done); }\n      cur = {changes: [historyChangeFromChange(doc, change)],\n             generation: hist.generation};\n      hist.done.push(cur);\n      while (hist.done.length > hist.undoDepth) {\n        hist.done.shift();\n        if (!hist.done[0].ranges) { hist.done.shift(); }\n      }\n    }\n    hist.done.push(selAfter);\n    hist.generation = ++hist.maxGeneration;\n    hist.lastModTime = hist.lastSelTime = time;\n    hist.lastOp = hist.lastSelOp = opId;\n    hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n    if (!last) { signal(doc, \"historyAdded\"); }\n  }\n\n  function selectionEventCanBeMerged(doc, origin, prev, sel) {\n    var ch = origin.charAt(0);\n    return ch == \"*\" ||\n      ch == \"+\" &&\n      prev.ranges.length == sel.ranges.length &&\n      prev.somethingSelected() == sel.somethingSelected() &&\n      new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n  }\n\n  // Called whenever the selection changes, sets the new selection as\n  // the pending selection in the history, and pushes the old pending\n  // selection into the 'done' array when it was significantly\n  // different (in number of selected ranges, emptiness, or time).\n  function addSelectionToHistory(doc, sel, opId, options) {\n    var hist = doc.history, origin = options && options.origin;\n\n    // A new event is started when the previous origin does not match\n    // the current, or the origins don't allow matching. Origins\n    // starting with * are always merged, those starting with + are\n    // merged when similar and close together in time.\n    if (opId == hist.lastSelOp ||\n        (origin && hist.lastSelOrigin == origin &&\n         (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n          selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n      { hist.done[hist.done.length - 1] = sel; }\n    else\n      { pushSelectionToHistory(sel, hist.done); }\n\n    hist.lastSelTime = +new Date;\n    hist.lastSelOrigin = origin;\n    hist.lastSelOp = opId;\n    if (options && options.clearRedo !== false)\n      { clearSelectionEvents(hist.undone); }\n  }\n\n  function pushSelectionToHistory(sel, dest) {\n    var top = lst(dest);\n    if (!(top && top.ranges && top.equals(sel)))\n      { dest.push(sel); }\n  }\n\n  // Used to store marked span information in the history.\n  function attachLocalSpans(doc, change, from, to) {\n    var existing = change[\"spans_\" + doc.id], n = 0;\n    doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n      if (line.markedSpans)\n        { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n      ++n;\n    });\n  }\n\n  // When un/re-doing restores text containing marked spans, those\n  // that have been explicitly cleared should not be restored.\n  function removeClearedSpans(spans) {\n    if (!spans) { return null }\n    var out;\n    for (var i = 0; i < spans.length; ++i) {\n      if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n      else if (out) { out.push(spans[i]); }\n    }\n    return !out ? spans : out.length ? out : null\n  }\n\n  // Retrieve and filter the old marked spans stored in a change event.\n  function getOldSpans(doc, change) {\n    var found = change[\"spans_\" + doc.id];\n    if (!found) { return null }\n    var nw = [];\n    for (var i = 0; i < change.text.length; ++i)\n      { nw.push(removeClearedSpans(found[i])); }\n    return nw\n  }\n\n  // Used for un/re-doing changes from the history. Combines the\n  // result of computing the existing spans with the set of spans that\n  // existed in the history (so that deleting around a span and then\n  // undoing brings back the span).\n  function mergeOldSpans(doc, change) {\n    var old = getOldSpans(doc, change);\n    var stretched = stretchSpansOverChange(doc, change);\n    if (!old) { return stretched }\n    if (!stretched) { return old }\n\n    for (var i = 0; i < old.length; ++i) {\n      var oldCur = old[i], stretchCur = stretched[i];\n      if (oldCur && stretchCur) {\n        spans: for (var j = 0; j < stretchCur.length; ++j) {\n          var span = stretchCur[j];\n          for (var k = 0; k < oldCur.length; ++k)\n            { if (oldCur[k].marker == span.marker) { continue spans } }\n          oldCur.push(span);\n        }\n      } else if (stretchCur) {\n        old[i] = stretchCur;\n      }\n    }\n    return old\n  }\n\n  // Used both to provide a JSON-safe object in .getHistory, and, when\n  // detaching a document, to split the history in two\n  function copyHistoryArray(events, newGroup, instantiateSel) {\n    var copy = [];\n    for (var i = 0; i < events.length; ++i) {\n      var event = events[i];\n      if (event.ranges) {\n        copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n        continue\n      }\n      var changes = event.changes, newChanges = [];\n      copy.push({changes: newChanges});\n      for (var j = 0; j < changes.length; ++j) {\n        var change = changes[j], m = (void 0);\n        newChanges.push({from: change.from, to: change.to, text: change.text});\n        if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n          if (indexOf(newGroup, Number(m[1])) > -1) {\n            lst(newChanges)[prop] = change[prop];\n            delete change[prop];\n          }\n        } } }\n      }\n    }\n    return copy\n  }\n\n  // The 'scroll' parameter given to many of these indicated whether\n  // the new cursor position should be scrolled into view after\n  // modifying the selection.\n\n  // If shift is held or the extend flag is set, extends a range to\n  // include a given position (and optionally a second position).\n  // Otherwise, simply returns the range between the given positions.\n  // Used for cursor motion and such.\n  function extendRange(range, head, other, extend) {\n    if (extend) {\n      var anchor = range.anchor;\n      if (other) {\n        var posBefore = cmp(head, anchor) < 0;\n        if (posBefore != (cmp(other, anchor) < 0)) {\n          anchor = head;\n          head = other;\n        } else if (posBefore != (cmp(head, other) < 0)) {\n          head = other;\n        }\n      }\n      return new Range(anchor, head)\n    } else {\n      return new Range(other || head, head)\n    }\n  }\n\n  // Extend the primary selection range, discard the rest.\n  function extendSelection(doc, head, other, options, extend) {\n    if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n    setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n  }\n\n  // Extend all selections (pos is an array of selections with length\n  // equal the number of selections)\n  function extendSelections(doc, heads, options) {\n    var out = [];\n    var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n    for (var i = 0; i < doc.sel.ranges.length; i++)\n      { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n    var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n    setSelection(doc, newSel, options);\n  }\n\n  // Updates a single range in the selection.\n  function replaceOneSelection(doc, i, range, options) {\n    var ranges = doc.sel.ranges.slice(0);\n    ranges[i] = range;\n    setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n  }\n\n  // Reset the selection to a single range.\n  function setSimpleSelection(doc, anchor, head, options) {\n    setSelection(doc, simpleSelection(anchor, head), options);\n  }\n\n  // Give beforeSelectionChange handlers a change to influence a\n  // selection update.\n  function filterSelectionChange(doc, sel, options) {\n    var obj = {\n      ranges: sel.ranges,\n      update: function(ranges) {\n        this.ranges = [];\n        for (var i = 0; i < ranges.length; i++)\n          { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                     clipPos(doc, ranges[i].head)); }\n      },\n      origin: options && options.origin\n    };\n    signal(doc, \"beforeSelectionChange\", doc, obj);\n    if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n    if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n    else { return sel }\n  }\n\n  function setSelectionReplaceHistory(doc, sel, options) {\n    var done = doc.history.done, last = lst(done);\n    if (last && last.ranges) {\n      done[done.length - 1] = sel;\n      setSelectionNoUndo(doc, sel, options);\n    } else {\n      setSelection(doc, sel, options);\n    }\n  }\n\n  // Set a new selection.\n  function setSelection(doc, sel, options) {\n    setSelectionNoUndo(doc, sel, options);\n    addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n  }\n\n  function setSelectionNoUndo(doc, sel, options) {\n    if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n      { sel = filterSelectionChange(doc, sel, options); }\n\n    var bias = options && options.bias ||\n      (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n    setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n    if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n      { ensureCursorVisible(doc.cm); }\n  }\n\n  function setSelectionInner(doc, sel) {\n    if (sel.equals(doc.sel)) { return }\n\n    doc.sel = sel;\n\n    if (doc.cm) {\n      doc.cm.curOp.updateInput = 1;\n      doc.cm.curOp.selectionChanged = true;\n      signalCursorActivity(doc.cm);\n    }\n    signalLater(doc, \"cursorActivity\", doc);\n  }\n\n  // Verify that the selection does not partially select any atomic\n  // marked ranges.\n  function reCheckSelection(doc) {\n    setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n  }\n\n  // Return a selection that does not partially select any atomic\n  // ranges.\n  function skipAtomicInSelection(doc, sel, bias, mayClear) {\n    var out;\n    for (var i = 0; i < sel.ranges.length; i++) {\n      var range = sel.ranges[i];\n      var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n      var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n      var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n      if (out || newAnchor != range.anchor || newHead != range.head) {\n        if (!out) { out = sel.ranges.slice(0, i); }\n        out[i] = new Range(newAnchor, newHead);\n      }\n    }\n    return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n  }\n\n  function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n    var line = getLine(doc, pos.line);\n    if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n      var sp = line.markedSpans[i], m = sp.marker;\n\n      // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n      // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n      // is with selectLeft/Right\n      var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n      var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n      if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n          (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n        if (mayClear) {\n          signal(m, \"beforeCursorEnter\");\n          if (m.explicitlyCleared) {\n            if (!line.markedSpans) { break }\n            else {--i; continue}\n          }\n        }\n        if (!m.atomic) { continue }\n\n        if (oldPos) {\n          var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n          if (dir < 0 ? preventCursorRight : preventCursorLeft)\n            { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n          if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n            { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n        }\n\n        var far = m.find(dir < 0 ? -1 : 1);\n        if (dir < 0 ? preventCursorLeft : preventCursorRight)\n          { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n        return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n      }\n    } }\n    return pos\n  }\n\n  // Ensure a given position is not inside an atomic range.\n  function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n    var dir = bias || 1;\n    var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n        (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n        skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n        (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n    if (!found) {\n      doc.cantEdit = true;\n      return Pos(doc.first, 0)\n    }\n    return found\n  }\n\n  function movePos(doc, pos, dir, line) {\n    if (dir < 0 && pos.ch == 0) {\n      if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n      else { return null }\n    } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n      if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n      else { return null }\n    } else {\n      return new Pos(pos.line, pos.ch + dir)\n    }\n  }\n\n  function selectAll(cm) {\n    cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n  }\n\n  // UPDATING\n\n  // Allow \"beforeChange\" event handlers to influence a change\n  function filterChange(doc, change, update) {\n    var obj = {\n      canceled: false,\n      from: change.from,\n      to: change.to,\n      text: change.text,\n      origin: change.origin,\n      cancel: function () { return obj.canceled = true; }\n    };\n    if (update) { obj.update = function (from, to, text, origin) {\n      if (from) { obj.from = clipPos(doc, from); }\n      if (to) { obj.to = clipPos(doc, to); }\n      if (text) { obj.text = text; }\n      if (origin !== undefined) { obj.origin = origin; }\n    }; }\n    signal(doc, \"beforeChange\", doc, obj);\n    if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n    if (obj.canceled) {\n      if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n      return null\n    }\n    return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n  }\n\n  // Apply a change to a document, and add it to the document's\n  // history, and propagating it to all linked documents.\n  function makeChange(doc, change, ignoreReadOnly) {\n    if (doc.cm) {\n      if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n      if (doc.cm.state.suppressEdits) { return }\n    }\n\n    if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n      change = filterChange(doc, change, true);\n      if (!change) { return }\n    }\n\n    // Possibly split or suppress the update based on the presence\n    // of read-only spans in its range.\n    var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n    if (split) {\n      for (var i = split.length - 1; i >= 0; --i)\n        { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n    } else {\n      makeChangeInner(doc, change);\n    }\n  }\n\n  function makeChangeInner(doc, change) {\n    if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n    var selAfter = computeSelAfterChange(doc, change);\n    addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n    makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n    var rebased = [];\n\n    linkedDocs(doc, function (doc, sharedHist) {\n      if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n        rebaseHist(doc.history, change);\n        rebased.push(doc.history);\n      }\n      makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n    });\n  }\n\n  // Revert a change stored in a document's history.\n  function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n    var suppress = doc.cm && doc.cm.state.suppressEdits;\n    if (suppress && !allowSelectionOnly) { return }\n\n    var hist = doc.history, event, selAfter = doc.sel;\n    var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n    // Verify that there is a useable event (so that ctrl-z won't\n    // needlessly clear selection events)\n    var i = 0;\n    for (; i < source.length; i++) {\n      event = source[i];\n      if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n        { break }\n    }\n    if (i == source.length) { return }\n    hist.lastOrigin = hist.lastSelOrigin = null;\n\n    for (;;) {\n      event = source.pop();\n      if (event.ranges) {\n        pushSelectionToHistory(event, dest);\n        if (allowSelectionOnly && !event.equals(doc.sel)) {\n          setSelection(doc, event, {clearRedo: false});\n          return\n        }\n        selAfter = event;\n      } else if (suppress) {\n        source.push(event);\n        return\n      } else { break }\n    }\n\n    // Build up a reverse change object to add to the opposite history\n    // stack (redo when undoing, and vice versa).\n    var antiChanges = [];\n    pushSelectionToHistory(selAfter, dest);\n    dest.push({changes: antiChanges, generation: hist.generation});\n    hist.generation = event.generation || ++hist.maxGeneration;\n\n    var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n    var loop = function ( i ) {\n      var change = event.changes[i];\n      change.origin = type;\n      if (filter && !filterChange(doc, change, false)) {\n        source.length = 0;\n        return {}\n      }\n\n      antiChanges.push(historyChangeFromChange(doc, change));\n\n      var after = i ? computeSelAfterChange(doc, change) : lst(source);\n      makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n      if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n      var rebased = [];\n\n      // Propagate to the linked documents\n      linkedDocs(doc, function (doc, sharedHist) {\n        if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n          rebaseHist(doc.history, change);\n          rebased.push(doc.history);\n        }\n        makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n      });\n    };\n\n    for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n      var returned = loop( i$1 );\n\n      if ( returned ) return returned.v;\n    }\n  }\n\n  // Sub-views need their line numbers shifted when text is added\n  // above or below them in the parent document.\n  function shiftDoc(doc, distance) {\n    if (distance == 0) { return }\n    doc.first += distance;\n    doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n      Pos(range.anchor.line + distance, range.anchor.ch),\n      Pos(range.head.line + distance, range.head.ch)\n    ); }), doc.sel.primIndex);\n    if (doc.cm) {\n      regChange(doc.cm, doc.first, doc.first - distance, distance);\n      for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n        { regLineChange(doc.cm, l, \"gutter\"); }\n    }\n  }\n\n  // More lower-level change function, handling only a single document\n  // (not linked ones).\n  function makeChangeSingleDoc(doc, change, selAfter, spans) {\n    if (doc.cm && !doc.cm.curOp)\n      { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n    if (change.to.line < doc.first) {\n      shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n      return\n    }\n    if (change.from.line > doc.lastLine()) { return }\n\n    // Clip the change to the size of this doc\n    if (change.from.line < doc.first) {\n      var shift = change.text.length - 1 - (doc.first - change.from.line);\n      shiftDoc(doc, shift);\n      change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n                text: [lst(change.text)], origin: change.origin};\n    }\n    var last = doc.lastLine();\n    if (change.to.line > last) {\n      change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n                text: [change.text[0]], origin: change.origin};\n    }\n\n    change.removed = getBetween(doc, change.from, change.to);\n\n    if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n    if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n    else { updateDoc(doc, change, spans); }\n    setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n    if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n      { doc.cantEdit = false; }\n  }\n\n  // Handle the interaction of a change to a document with the editor\n  // that this document is part of.\n  function makeChangeSingleDocInEditor(cm, change, spans) {\n    var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n    var recomputeMaxLength = false, checkWidthStart = from.line;\n    if (!cm.options.lineWrapping) {\n      checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n      doc.iter(checkWidthStart, to.line + 1, function (line) {\n        if (line == display.maxLine) {\n          recomputeMaxLength = true;\n          return true\n        }\n      });\n    }\n\n    if (doc.sel.contains(change.from, change.to) > -1)\n      { signalCursorActivity(cm); }\n\n    updateDoc(doc, change, spans, estimateHeight(cm));\n\n    if (!cm.options.lineWrapping) {\n      doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n        var len = lineLength(line);\n        if (len > display.maxLineLength) {\n          display.maxLine = line;\n          display.maxLineLength = len;\n          display.maxLineChanged = true;\n          recomputeMaxLength = false;\n        }\n      });\n      if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n    }\n\n    retreatFrontier(doc, from.line);\n    startWorker(cm, 400);\n\n    var lendiff = change.text.length - (to.line - from.line) - 1;\n    // Remember that these lines changed, for updating the display\n    if (change.full)\n      { regChange(cm); }\n    else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n      { regLineChange(cm, from.line, \"text\"); }\n    else\n      { regChange(cm, from.line, to.line + 1, lendiff); }\n\n    var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n    if (changeHandler || changesHandler) {\n      var obj = {\n        from: from, to: to,\n        text: change.text,\n        removed: change.removed,\n        origin: change.origin\n      };\n      if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n      if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n    }\n    cm.display.selForContextMenu = null;\n  }\n\n  function replaceRange(doc, code, from, to, origin) {\n    var assign;\n\n    if (!to) { to = from; }\n    if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n    if (typeof code == \"string\") { code = doc.splitLines(code); }\n    makeChange(doc, {from: from, to: to, text: code, origin: origin});\n  }\n\n  // Rebasing/resetting history to deal with externally-sourced changes\n\n  function rebaseHistSelSingle(pos, from, to, diff) {\n    if (to < pos.line) {\n      pos.line += diff;\n    } else if (from < pos.line) {\n      pos.line = from;\n      pos.ch = 0;\n    }\n  }\n\n  // Tries to rebase an array of history events given a change in the\n  // document. If the change touches the same lines as the event, the\n  // event, and everything 'behind' it, is discarded. If the change is\n  // before the event, the event's positions are updated. Uses a\n  // copy-on-write scheme for the positions, to avoid having to\n  // reallocate them all on every rebase, but also avoid problems with\n  // shared position objects being unsafely updated.\n  function rebaseHistArray(array, from, to, diff) {\n    for (var i = 0; i < array.length; ++i) {\n      var sub = array[i], ok = true;\n      if (sub.ranges) {\n        if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n        for (var j = 0; j < sub.ranges.length; j++) {\n          rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n          rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n        }\n        continue\n      }\n      for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n        var cur = sub.changes[j$1];\n        if (to < cur.from.line) {\n          cur.from = Pos(cur.from.line + diff, cur.from.ch);\n          cur.to = Pos(cur.to.line + diff, cur.to.ch);\n        } else if (from <= cur.to.line) {\n          ok = false;\n          break\n        }\n      }\n      if (!ok) {\n        array.splice(0, i + 1);\n        i = 0;\n      }\n    }\n  }\n\n  function rebaseHist(hist, change) {\n    var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n    rebaseHistArray(hist.done, from, to, diff);\n    rebaseHistArray(hist.undone, from, to, diff);\n  }\n\n  // Utility for applying a change to a line by handle or number,\n  // returning the number and optionally registering the line as\n  // changed.\n  function changeLine(doc, handle, changeType, op) {\n    var no = handle, line = handle;\n    if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n    else { no = lineNo(handle); }\n    if (no == null) { return null }\n    if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n    return line\n  }\n\n  // The document is represented as a BTree consisting of leaves, with\n  // chunk of lines in them, and branches, with up to ten leaves or\n  // other branch nodes below them. The top node is always a branch\n  // node, and is the document object itself (meaning it has\n  // additional methods and properties).\n  //\n  // All nodes have parent links. The tree is used both to go from\n  // line numbers to line objects, and to go from objects to numbers.\n  // It also indexes by height, and is used to convert between height\n  // and line object, and to find the total height of the document.\n  //\n  // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n  function LeafChunk(lines) {\n    this.lines = lines;\n    this.parent = null;\n    var height = 0;\n    for (var i = 0; i < lines.length; ++i) {\n      lines[i].parent = this;\n      height += lines[i].height;\n    }\n    this.height = height;\n  }\n\n  LeafChunk.prototype = {\n    chunkSize: function() { return this.lines.length },\n\n    // Remove the n lines at offset 'at'.\n    removeInner: function(at, n) {\n      for (var i = at, e = at + n; i < e; ++i) {\n        var line = this.lines[i];\n        this.height -= line.height;\n        cleanUpLine(line);\n        signalLater(line, \"delete\");\n      }\n      this.lines.splice(at, n);\n    },\n\n    // Helper used to collapse a small branch into a single leaf.\n    collapse: function(lines) {\n      lines.push.apply(lines, this.lines);\n    },\n\n    // Insert the given array of lines at offset 'at', count them as\n    // having the given height.\n    insertInner: function(at, lines, height) {\n      this.height += height;\n      this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n      for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n    },\n\n    // Used to iterate over a part of the tree.\n    iterN: function(at, n, op) {\n      for (var e = at + n; at < e; ++at)\n        { if (op(this.lines[at])) { return true } }\n    }\n  };\n\n  function BranchChunk(children) {\n    this.children = children;\n    var size = 0, height = 0;\n    for (var i = 0; i < children.length; ++i) {\n      var ch = children[i];\n      size += ch.chunkSize(); height += ch.height;\n      ch.parent = this;\n    }\n    this.size = size;\n    this.height = height;\n    this.parent = null;\n  }\n\n  BranchChunk.prototype = {\n    chunkSize: function() { return this.size },\n\n    removeInner: function(at, n) {\n      this.size -= n;\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at < sz) {\n          var rm = Math.min(n, sz - at), oldHeight = child.height;\n          child.removeInner(at, rm);\n          this.height -= oldHeight - child.height;\n          if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n          if ((n -= rm) == 0) { break }\n          at = 0;\n        } else { at -= sz; }\n      }\n      // If the result is smaller than 25 lines, ensure that it is a\n      // single leaf node.\n      if (this.size - n < 25 &&\n          (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n        var lines = [];\n        this.collapse(lines);\n        this.children = [new LeafChunk(lines)];\n        this.children[0].parent = this;\n      }\n    },\n\n    collapse: function(lines) {\n      for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n    },\n\n    insertInner: function(at, lines, height) {\n      this.size += lines.length;\n      this.height += height;\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at <= sz) {\n          child.insertInner(at, lines, height);\n          if (child.lines && child.lines.length > 50) {\n            // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n            // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n            var remaining = child.lines.length % 25 + 25;\n            for (var pos = remaining; pos < child.lines.length;) {\n              var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n              child.height -= leaf.height;\n              this.children.splice(++i, 0, leaf);\n              leaf.parent = this;\n            }\n            child.lines = child.lines.slice(0, remaining);\n            this.maybeSpill();\n          }\n          break\n        }\n        at -= sz;\n      }\n    },\n\n    // When a node has grown, check whether it should be split.\n    maybeSpill: function() {\n      if (this.children.length <= 10) { return }\n      var me = this;\n      do {\n        var spilled = me.children.splice(me.children.length - 5, 5);\n        var sibling = new BranchChunk(spilled);\n        if (!me.parent) { // Become the parent node\n          var copy = new BranchChunk(me.children);\n          copy.parent = me;\n          me.children = [copy, sibling];\n          me = copy;\n       } else {\n          me.size -= sibling.size;\n          me.height -= sibling.height;\n          var myIndex = indexOf(me.parent.children, me);\n          me.parent.children.splice(myIndex + 1, 0, sibling);\n        }\n        sibling.parent = me.parent;\n      } while (me.children.length > 10)\n      me.parent.maybeSpill();\n    },\n\n    iterN: function(at, n, op) {\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at < sz) {\n          var used = Math.min(n, sz - at);\n          if (child.iterN(at, used, op)) { return true }\n          if ((n -= used) == 0) { break }\n          at = 0;\n        } else { at -= sz; }\n      }\n    }\n  };\n\n  // Line widgets are block elements displayed above or below a line.\n\n  var LineWidget = function(doc, node, options) {\n    if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n      { this[opt] = options[opt]; } } }\n    this.doc = doc;\n    this.node = node;\n  };\n\n  LineWidget.prototype.clear = function () {\n    var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n    if (no == null || !ws) { return }\n    for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n    if (!ws.length) { line.widgets = null; }\n    var height = widgetHeight(this);\n    updateLineHeight(line, Math.max(0, line.height - height));\n    if (cm) {\n      runInOp(cm, function () {\n        adjustScrollWhenAboveVisible(cm, line, -height);\n        regLineChange(cm, no, \"widget\");\n      });\n      signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n    }\n  };\n\n  LineWidget.prototype.changed = function () {\n      var this$1 = this;\n\n    var oldH = this.height, cm = this.doc.cm, line = this.line;\n    this.height = null;\n    var diff = widgetHeight(this) - oldH;\n    if (!diff) { return }\n    if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n    if (cm) {\n      runInOp(cm, function () {\n        cm.curOp.forceUpdate = true;\n        adjustScrollWhenAboveVisible(cm, line, diff);\n        signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n      });\n    }\n  };\n  eventMixin(LineWidget);\n\n  function adjustScrollWhenAboveVisible(cm, line, diff) {\n    if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n      { addToScrollTop(cm, diff); }\n  }\n\n  function addLineWidget(doc, handle, node, options) {\n    var widget = new LineWidget(doc, node, options);\n    var cm = doc.cm;\n    if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n    changeLine(doc, handle, \"widget\", function (line) {\n      var widgets = line.widgets || (line.widgets = []);\n      if (widget.insertAt == null) { widgets.push(widget); }\n      else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n      widget.line = line;\n      if (cm && !lineIsHidden(doc, line)) {\n        var aboveVisible = heightAtLine(line) < doc.scrollTop;\n        updateLineHeight(line, line.height + widgetHeight(widget));\n        if (aboveVisible) { addToScrollTop(cm, widget.height); }\n        cm.curOp.forceUpdate = true;\n      }\n      return true\n    });\n    if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n    return widget\n  }\n\n  // TEXTMARKERS\n\n  // Created with markText and setBookmark methods. A TextMarker is a\n  // handle that can be used to clear or find a marked position in the\n  // document. Line objects hold arrays (markedSpans) containing\n  // {from, to, marker} object pointing to such marker objects, and\n  // indicating that such a marker is present on that line. Multiple\n  // lines may point to the same marker when it spans across lines.\n  // The spans will have null for their from/to properties when the\n  // marker continues beyond the start/end of the line. Markers have\n  // links back to the lines they currently touch.\n\n  // Collapsed markers have unique ids, in order to be able to order\n  // them, which is needed for uniquely determining an outer marker\n  // when they overlap (they may nest, but not partially overlap).\n  var nextMarkerId = 0;\n\n  var TextMarker = function(doc, type) {\n    this.lines = [];\n    this.type = type;\n    this.doc = doc;\n    this.id = ++nextMarkerId;\n  };\n\n  // Clear the marker.\n  TextMarker.prototype.clear = function () {\n    if (this.explicitlyCleared) { return }\n    var cm = this.doc.cm, withOp = cm && !cm.curOp;\n    if (withOp) { startOperation(cm); }\n    if (hasHandler(this, \"clear\")) {\n      var found = this.find();\n      if (found) { signalLater(this, \"clear\", found.from, found.to); }\n    }\n    var min = null, max = null;\n    for (var i = 0; i < this.lines.length; ++i) {\n      var line = this.lines[i];\n      var span = getMarkedSpanFor(line.markedSpans, this);\n      if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n      else if (cm) {\n        if (span.to != null) { max = lineNo(line); }\n        if (span.from != null) { min = lineNo(line); }\n      }\n      line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n      if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n        { updateLineHeight(line, textHeight(cm.display)); }\n    }\n    if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n      var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n      if (len > cm.display.maxLineLength) {\n        cm.display.maxLine = visual;\n        cm.display.maxLineLength = len;\n        cm.display.maxLineChanged = true;\n      }\n    } }\n\n    if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n    this.lines.length = 0;\n    this.explicitlyCleared = true;\n    if (this.atomic && this.doc.cantEdit) {\n      this.doc.cantEdit = false;\n      if (cm) { reCheckSelection(cm.doc); }\n    }\n    if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n    if (withOp) { endOperation(cm); }\n    if (this.parent) { this.parent.clear(); }\n  };\n\n  // Find the position of the marker in the document. Returns a {from,\n  // to} object by default. Side can be passed to get a specific side\n  // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n  // Pos objects returned contain a line object, rather than a line\n  // number (used to prevent looking up the same line twice).\n  TextMarker.prototype.find = function (side, lineObj) {\n    if (side == null && this.type == \"bookmark\") { side = 1; }\n    var from, to;\n    for (var i = 0; i < this.lines.length; ++i) {\n      var line = this.lines[i];\n      var span = getMarkedSpanFor(line.markedSpans, this);\n      if (span.from != null) {\n        from = Pos(lineObj ? line : lineNo(line), span.from);\n        if (side == -1) { return from }\n      }\n      if (span.to != null) {\n        to = Pos(lineObj ? line : lineNo(line), span.to);\n        if (side == 1) { return to }\n      }\n    }\n    return from && {from: from, to: to}\n  };\n\n  // Signals that the marker's widget changed, and surrounding layout\n  // should be recomputed.\n  TextMarker.prototype.changed = function () {\n      var this$1 = this;\n\n    var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n    if (!pos || !cm) { return }\n    runInOp(cm, function () {\n      var line = pos.line, lineN = lineNo(pos.line);\n      var view = findViewForLine(cm, lineN);\n      if (view) {\n        clearLineMeasurementCacheFor(view);\n        cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n      }\n      cm.curOp.updateMaxLine = true;\n      if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n        var oldHeight = widget.height;\n        widget.height = null;\n        var dHeight = widgetHeight(widget) - oldHeight;\n        if (dHeight)\n          { updateLineHeight(line, line.height + dHeight); }\n      }\n      signalLater(cm, \"markerChanged\", cm, this$1);\n    });\n  };\n\n  TextMarker.prototype.attachLine = function (line) {\n    if (!this.lines.length && this.doc.cm) {\n      var op = this.doc.cm.curOp;\n      if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n        { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n    }\n    this.lines.push(line);\n  };\n\n  TextMarker.prototype.detachLine = function (line) {\n    this.lines.splice(indexOf(this.lines, line), 1);\n    if (!this.lines.length && this.doc.cm) {\n      var op = this.doc.cm.curOp\n      ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n    }\n  };\n  eventMixin(TextMarker);\n\n  // Create a marker, wire it up to the right lines, and\n  function markText(doc, from, to, options, type) {\n    // Shared markers (across linked documents) are handled separately\n    // (markTextShared will call out to this again, once per\n    // document).\n    if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n    // Ensure we are in an operation.\n    if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n    var marker = new TextMarker(doc, type), diff = cmp(from, to);\n    if (options) { copyObj(options, marker, false); }\n    // Don't connect empty markers unless clearWhenEmpty is false\n    if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n      { return marker }\n    if (marker.replacedWith) {\n      // Showing up as a widget implies collapsed (widget replaces text)\n      marker.collapsed = true;\n      marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n      if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n      if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n    }\n    if (marker.collapsed) {\n      if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n          from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n        { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n      seeCollapsedSpans();\n    }\n\n    if (marker.addToHistory)\n      { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n    var curLine = from.line, cm = doc.cm, updateMaxLine;\n    doc.iter(curLine, to.line + 1, function (line) {\n      if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n        { updateMaxLine = true; }\n      if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n      addMarkedSpan(line, new MarkedSpan(marker,\n                                         curLine == from.line ? from.ch : null,\n                                         curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n      ++curLine;\n    });\n    // lineIsHidden depends on the presence of the spans, so needs a second pass\n    if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n      if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n    }); }\n\n    if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n    if (marker.readOnly) {\n      seeReadOnlySpans();\n      if (doc.history.done.length || doc.history.undone.length)\n        { doc.clearHistory(); }\n    }\n    if (marker.collapsed) {\n      marker.id = ++nextMarkerId;\n      marker.atomic = true;\n    }\n    if (cm) {\n      // Sync editor state\n      if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n      if (marker.collapsed)\n        { regChange(cm, from.line, to.line + 1); }\n      else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n               marker.attributes || marker.title)\n        { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n      if (marker.atomic) { reCheckSelection(cm.doc); }\n      signalLater(cm, \"markerAdded\", cm, marker);\n    }\n    return marker\n  }\n\n  // SHARED TEXTMARKERS\n\n  // A shared marker spans multiple linked documents. It is\n  // implemented as a meta-marker-object controlling multiple normal\n  // markers.\n  var SharedTextMarker = function(markers, primary) {\n    this.markers = markers;\n    this.primary = primary;\n    for (var i = 0; i < markers.length; ++i)\n      { markers[i].parent = this; }\n  };\n\n  SharedTextMarker.prototype.clear = function () {\n    if (this.explicitlyCleared) { return }\n    this.explicitlyCleared = true;\n    for (var i = 0; i < this.markers.length; ++i)\n      { this.markers[i].clear(); }\n    signalLater(this, \"clear\");\n  };\n\n  SharedTextMarker.prototype.find = function (side, lineObj) {\n    return this.primary.find(side, lineObj)\n  };\n  eventMixin(SharedTextMarker);\n\n  function markTextShared(doc, from, to, options, type) {\n    options = copyObj(options);\n    options.shared = false;\n    var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n    var widget = options.widgetNode;\n    linkedDocs(doc, function (doc) {\n      if (widget) { options.widgetNode = widget.cloneNode(true); }\n      markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n      for (var i = 0; i < doc.linked.length; ++i)\n        { if (doc.linked[i].isParent) { return } }\n      primary = lst(markers);\n    });\n    return new SharedTextMarker(markers, primary)\n  }\n\n  function findSharedMarkers(doc) {\n    return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n  }\n\n  function copySharedMarkers(doc, markers) {\n    for (var i = 0; i < markers.length; i++) {\n      var marker = markers[i], pos = marker.find();\n      var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n      if (cmp(mFrom, mTo)) {\n        var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n        marker.markers.push(subMark);\n        subMark.parent = marker;\n      }\n    }\n  }\n\n  function detachSharedMarkers(markers) {\n    var loop = function ( i ) {\n      var marker = markers[i], linked = [marker.primary.doc];\n      linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n      for (var j = 0; j < marker.markers.length; j++) {\n        var subMarker = marker.markers[j];\n        if (indexOf(linked, subMarker.doc) == -1) {\n          subMarker.parent = null;\n          marker.markers.splice(j--, 1);\n        }\n      }\n    };\n\n    for (var i = 0; i < markers.length; i++) loop( i );\n  }\n\n  var nextDocId = 0;\n  var Doc = function(text, mode, firstLine, lineSep, direction) {\n    if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n    if (firstLine == null) { firstLine = 0; }\n\n    BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n    this.first = firstLine;\n    this.scrollTop = this.scrollLeft = 0;\n    this.cantEdit = false;\n    this.cleanGeneration = 1;\n    this.modeFrontier = this.highlightFrontier = firstLine;\n    var start = Pos(firstLine, 0);\n    this.sel = simpleSelection(start);\n    this.history = new History(null);\n    this.id = ++nextDocId;\n    this.modeOption = mode;\n    this.lineSep = lineSep;\n    this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n    this.extend = false;\n\n    if (typeof text == \"string\") { text = this.splitLines(text); }\n    updateDoc(this, {from: start, to: start, text: text});\n    setSelection(this, simpleSelection(start), sel_dontScroll);\n  };\n\n  Doc.prototype = createObj(BranchChunk.prototype, {\n    constructor: Doc,\n    // Iterate over the document. Supports two forms -- with only one\n    // argument, it calls that for each line in the document. With\n    // three, it iterates over the range given by the first two (with\n    // the second being non-inclusive).\n    iter: function(from, to, op) {\n      if (op) { this.iterN(from - this.first, to - from, op); }\n      else { this.iterN(this.first, this.first + this.size, from); }\n    },\n\n    // Non-public interface for adding and removing lines.\n    insert: function(at, lines) {\n      var height = 0;\n      for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n      this.insertInner(at - this.first, lines, height);\n    },\n    remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n    // From here, the methods are part of the public interface. Most\n    // are also available from CodeMirror (editor) instances.\n\n    getValue: function(lineSep) {\n      var lines = getLines(this, this.first, this.first + this.size);\n      if (lineSep === false) { return lines }\n      return lines.join(lineSep || this.lineSeparator())\n    },\n    setValue: docMethodOp(function(code) {\n      var top = Pos(this.first, 0), last = this.first + this.size - 1;\n      makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n                        text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n      if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n      setSelection(this, simpleSelection(top), sel_dontScroll);\n    }),\n    replaceRange: function(code, from, to, origin) {\n      from = clipPos(this, from);\n      to = to ? clipPos(this, to) : from;\n      replaceRange(this, code, from, to, origin);\n    },\n    getRange: function(from, to, lineSep) {\n      var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n      if (lineSep === false) { return lines }\n      if (lineSep === '') { return lines.join('') }\n      return lines.join(lineSep || this.lineSeparator())\n    },\n\n    getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n    getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n    getLineNumber: function(line) {return lineNo(line)},\n\n    getLineHandleVisualStart: function(line) {\n      if (typeof line == \"number\") { line = getLine(this, line); }\n      return visualLine(line)\n    },\n\n    lineCount: function() {return this.size},\n    firstLine: function() {return this.first},\n    lastLine: function() {return this.first + this.size - 1},\n\n    clipPos: function(pos) {return clipPos(this, pos)},\n\n    getCursor: function(start) {\n      var range = this.sel.primary(), pos;\n      if (start == null || start == \"head\") { pos = range.head; }\n      else if (start == \"anchor\") { pos = range.anchor; }\n      else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n      else { pos = range.from(); }\n      return pos\n    },\n    listSelections: function() { return this.sel.ranges },\n    somethingSelected: function() {return this.sel.somethingSelected()},\n\n    setCursor: docMethodOp(function(line, ch, options) {\n      setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n    }),\n    setSelection: docMethodOp(function(anchor, head, options) {\n      setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n    }),\n    extendSelection: docMethodOp(function(head, other, options) {\n      extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n    }),\n    extendSelections: docMethodOp(function(heads, options) {\n      extendSelections(this, clipPosArray(this, heads), options);\n    }),\n    extendSelectionsBy: docMethodOp(function(f, options) {\n      var heads = map(this.sel.ranges, f);\n      extendSelections(this, clipPosArray(this, heads), options);\n    }),\n    setSelections: docMethodOp(function(ranges, primary, options) {\n      if (!ranges.length) { return }\n      var out = [];\n      for (var i = 0; i < ranges.length; i++)\n        { out[i] = new Range(clipPos(this, ranges[i].anchor),\n                           clipPos(this, ranges[i].head || ranges[i].anchor)); }\n      if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n      setSelection(this, normalizeSelection(this.cm, out, primary), options);\n    }),\n    addSelection: docMethodOp(function(anchor, head, options) {\n      var ranges = this.sel.ranges.slice(0);\n      ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n      setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n    }),\n\n    getSelection: function(lineSep) {\n      var ranges = this.sel.ranges, lines;\n      for (var i = 0; i < ranges.length; i++) {\n        var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n        lines = lines ? lines.concat(sel) : sel;\n      }\n      if (lineSep === false) { return lines }\n      else { return lines.join(lineSep || this.lineSeparator()) }\n    },\n    getSelections: function(lineSep) {\n      var parts = [], ranges = this.sel.ranges;\n      for (var i = 0; i < ranges.length; i++) {\n        var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n        if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n        parts[i] = sel;\n      }\n      return parts\n    },\n    replaceSelection: function(code, collapse, origin) {\n      var dup = [];\n      for (var i = 0; i < this.sel.ranges.length; i++)\n        { dup[i] = code; }\n      this.replaceSelections(dup, collapse, origin || \"+input\");\n    },\n    replaceSelections: docMethodOp(function(code, collapse, origin) {\n      var changes = [], sel = this.sel;\n      for (var i = 0; i < sel.ranges.length; i++) {\n        var range = sel.ranges[i];\n        changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n      }\n      var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n      for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n        { makeChange(this, changes[i$1]); }\n      if (newSel) { setSelectionReplaceHistory(this, newSel); }\n      else if (this.cm) { ensureCursorVisible(this.cm); }\n    }),\n    undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n    redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n    undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n    redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n    setExtending: function(val) {this.extend = val;},\n    getExtending: function() {return this.extend},\n\n    historySize: function() {\n      var hist = this.history, done = 0, undone = 0;\n      for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n      for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n      return {undo: done, redo: undone}\n    },\n    clearHistory: function() {\n      var this$1 = this;\n\n      this.history = new History(this.history);\n      linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n    },\n\n    markClean: function() {\n      this.cleanGeneration = this.changeGeneration(true);\n    },\n    changeGeneration: function(forceSplit) {\n      if (forceSplit)\n        { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n      return this.history.generation\n    },\n    isClean: function (gen) {\n      return this.history.generation == (gen || this.cleanGeneration)\n    },\n\n    getHistory: function() {\n      return {done: copyHistoryArray(this.history.done),\n              undone: copyHistoryArray(this.history.undone)}\n    },\n    setHistory: function(histData) {\n      var hist = this.history = new History(this.history);\n      hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n      hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n    },\n\n    setGutterMarker: docMethodOp(function(line, gutterID, value) {\n      return changeLine(this, line, \"gutter\", function (line) {\n        var markers = line.gutterMarkers || (line.gutterMarkers = {});\n        markers[gutterID] = value;\n        if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n        return true\n      })\n    }),\n\n    clearGutter: docMethodOp(function(gutterID) {\n      var this$1 = this;\n\n      this.iter(function (line) {\n        if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n          changeLine(this$1, line, \"gutter\", function () {\n            line.gutterMarkers[gutterID] = null;\n            if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n            return true\n          });\n        }\n      });\n    }),\n\n    lineInfo: function(line) {\n      var n;\n      if (typeof line == \"number\") {\n        if (!isLine(this, line)) { return null }\n        n = line;\n        line = getLine(this, line);\n        if (!line) { return null }\n      } else {\n        n = lineNo(line);\n        if (n == null) { return null }\n      }\n      return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n              textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n              widgets: line.widgets}\n    },\n\n    addLineClass: docMethodOp(function(handle, where, cls) {\n      return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n        var prop = where == \"text\" ? \"textClass\"\n                 : where == \"background\" ? \"bgClass\"\n                 : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n        if (!line[prop]) { line[prop] = cls; }\n        else if (classTest(cls).test(line[prop])) { return false }\n        else { line[prop] += \" \" + cls; }\n        return true\n      })\n    }),\n    removeLineClass: docMethodOp(function(handle, where, cls) {\n      return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n        var prop = where == \"text\" ? \"textClass\"\n                 : where == \"background\" ? \"bgClass\"\n                 : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n        var cur = line[prop];\n        if (!cur) { return false }\n        else if (cls == null) { line[prop] = null; }\n        else {\n          var found = cur.match(classTest(cls));\n          if (!found) { return false }\n          var end = found.index + found[0].length;\n          line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n        }\n        return true\n      })\n    }),\n\n    addLineWidget: docMethodOp(function(handle, node, options) {\n      return addLineWidget(this, handle, node, options)\n    }),\n    removeLineWidget: function(widget) { widget.clear(); },\n\n    markText: function(from, to, options) {\n      return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n    },\n    setBookmark: function(pos, options) {\n      var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n                      insertLeft: options && options.insertLeft,\n                      clearWhenEmpty: false, shared: options && options.shared,\n                      handleMouseEvents: options && options.handleMouseEvents};\n      pos = clipPos(this, pos);\n      return markText(this, pos, pos, realOpts, \"bookmark\")\n    },\n    findMarksAt: function(pos) {\n      pos = clipPos(this, pos);\n      var markers = [], spans = getLine(this, pos.line).markedSpans;\n      if (spans) { for (var i = 0; i < spans.length; ++i) {\n        var span = spans[i];\n        if ((span.from == null || span.from <= pos.ch) &&\n            (span.to == null || span.to >= pos.ch))\n          { markers.push(span.marker.parent || span.marker); }\n      } }\n      return markers\n    },\n    findMarks: function(from, to, filter) {\n      from = clipPos(this, from); to = clipPos(this, to);\n      var found = [], lineNo = from.line;\n      this.iter(from.line, to.line + 1, function (line) {\n        var spans = line.markedSpans;\n        if (spans) { for (var i = 0; i < spans.length; i++) {\n          var span = spans[i];\n          if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n                span.from == null && lineNo != from.line ||\n                span.from != null && lineNo == to.line && span.from >= to.ch) &&\n              (!filter || filter(span.marker)))\n            { found.push(span.marker.parent || span.marker); }\n        } }\n        ++lineNo;\n      });\n      return found\n    },\n    getAllMarks: function() {\n      var markers = [];\n      this.iter(function (line) {\n        var sps = line.markedSpans;\n        if (sps) { for (var i = 0; i < sps.length; ++i)\n          { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n      });\n      return markers\n    },\n\n    posFromIndex: function(off) {\n      var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n      this.iter(function (line) {\n        var sz = line.text.length + sepSize;\n        if (sz > off) { ch = off; return true }\n        off -= sz;\n        ++lineNo;\n      });\n      return clipPos(this, Pos(lineNo, ch))\n    },\n    indexFromPos: function (coords) {\n      coords = clipPos(this, coords);\n      var index = coords.ch;\n      if (coords.line < this.first || coords.ch < 0) { return 0 }\n      var sepSize = this.lineSeparator().length;\n      this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n        index += line.text.length + sepSize;\n      });\n      return index\n    },\n\n    copy: function(copyHistory) {\n      var doc = new Doc(getLines(this, this.first, this.first + this.size),\n                        this.modeOption, this.first, this.lineSep, this.direction);\n      doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n      doc.sel = this.sel;\n      doc.extend = false;\n      if (copyHistory) {\n        doc.history.undoDepth = this.history.undoDepth;\n        doc.setHistory(this.getHistory());\n      }\n      return doc\n    },\n\n    linkedDoc: function(options) {\n      if (!options) { options = {}; }\n      var from = this.first, to = this.first + this.size;\n      if (options.from != null && options.from > from) { from = options.from; }\n      if (options.to != null && options.to < to) { to = options.to; }\n      var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n      if (options.sharedHist) { copy.history = this.history\n      ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n      copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n      copySharedMarkers(copy, findSharedMarkers(this));\n      return copy\n    },\n    unlinkDoc: function(other) {\n      if (other instanceof CodeMirror) { other = other.doc; }\n      if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n        var link = this.linked[i];\n        if (link.doc != other) { continue }\n        this.linked.splice(i, 1);\n        other.unlinkDoc(this);\n        detachSharedMarkers(findSharedMarkers(this));\n        break\n      } }\n      // If the histories were shared, split them again\n      if (other.history == this.history) {\n        var splitIds = [other.id];\n        linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n        other.history = new History(null);\n        other.history.done = copyHistoryArray(this.history.done, splitIds);\n        other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n      }\n    },\n    iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n    getMode: function() {return this.mode},\n    getEditor: function() {return this.cm},\n\n    splitLines: function(str) {\n      if (this.lineSep) { return str.split(this.lineSep) }\n      return splitLinesAuto(str)\n    },\n    lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n    setDirection: docMethodOp(function (dir) {\n      if (dir != \"rtl\") { dir = \"ltr\"; }\n      if (dir == this.direction) { return }\n      this.direction = dir;\n      this.iter(function (line) { return line.order = null; });\n      if (this.cm) { directionChanged(this.cm); }\n    })\n  });\n\n  // Public alias.\n  Doc.prototype.eachLine = Doc.prototype.iter;\n\n  // Kludge to work around strange IE behavior where it'll sometimes\n  // re-fire a series of drag-related events right after the drop (#1551)\n  var lastDrop = 0;\n\n  function onDrop(e) {\n    var cm = this;\n    clearDragCursor(cm);\n    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n      { return }\n    e_preventDefault(e);\n    if (ie) { lastDrop = +new Date; }\n    var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n    if (!pos || cm.isReadOnly()) { return }\n    // Might be a file drop, in which case we simply extract the text\n    // and insert it.\n    if (files && files.length && window.FileReader && window.File) {\n      var n = files.length, text = Array(n), read = 0;\n      var markAsReadAndPasteIfAllFilesAreRead = function () {\n        if (++read == n) {\n          operation(cm, function () {\n            pos = clipPos(cm.doc, pos);\n            var change = {from: pos, to: pos,\n                          text: cm.doc.splitLines(\n                              text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n                          origin: \"paste\"};\n            makeChange(cm.doc, change);\n            setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n          })();\n        }\n      };\n      var readTextFromFile = function (file, i) {\n        if (cm.options.allowDropFileTypes &&\n            indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n          markAsReadAndPasteIfAllFilesAreRead();\n          return\n        }\n        var reader = new FileReader;\n        reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n        reader.onload = function () {\n          var content = reader.result;\n          if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n            markAsReadAndPasteIfAllFilesAreRead();\n            return\n          }\n          text[i] = content;\n          markAsReadAndPasteIfAllFilesAreRead();\n        };\n        reader.readAsText(file);\n      };\n      for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n    } else { // Normal drop\n      // Don't do a replace if the drop happened inside of the selected text.\n      if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n        cm.state.draggingText(e);\n        // Ensure the editor is re-focused\n        setTimeout(function () { return cm.display.input.focus(); }, 20);\n        return\n      }\n      try {\n        var text$1 = e.dataTransfer.getData(\"Text\");\n        if (text$1) {\n          var selected;\n          if (cm.state.draggingText && !cm.state.draggingText.copy)\n            { selected = cm.listSelections(); }\n          setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n          if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n            { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n          cm.replaceSelection(text$1, \"around\", \"paste\");\n          cm.display.input.focus();\n        }\n      }\n      catch(e$1){}\n    }\n  }\n\n  function onDragStart(cm, e) {\n    if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n    e.dataTransfer.setData(\"Text\", cm.getSelection());\n    e.dataTransfer.effectAllowed = \"copyMove\";\n\n    // Use dummy image instead of default browsers image.\n    // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n    if (e.dataTransfer.setDragImage && !safari) {\n      var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n      img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n      if (presto) {\n        img.width = img.height = 1;\n        cm.display.wrapper.appendChild(img);\n        // Force a relayout, or Opera won't use our image for some obscure reason\n        img._top = img.offsetTop;\n      }\n      e.dataTransfer.setDragImage(img, 0, 0);\n      if (presto) { img.parentNode.removeChild(img); }\n    }\n  }\n\n  function onDragOver(cm, e) {\n    var pos = posFromMouse(cm, e);\n    if (!pos) { return }\n    var frag = document.createDocumentFragment();\n    drawSelectionCursor(cm, pos, frag);\n    if (!cm.display.dragCursor) {\n      cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n      cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n    }\n    removeChildrenAndAdd(cm.display.dragCursor, frag);\n  }\n\n  function clearDragCursor(cm) {\n    if (cm.display.dragCursor) {\n      cm.display.lineSpace.removeChild(cm.display.dragCursor);\n      cm.display.dragCursor = null;\n    }\n  }\n\n  // These must be handled carefully, because naively registering a\n  // handler for each editor will cause the editors to never be\n  // garbage collected.\n\n  function forEachCodeMirror(f) {\n    if (!document.getElementsByClassName) { return }\n    var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n    for (var i = 0; i < byClass.length; i++) {\n      var cm = byClass[i].CodeMirror;\n      if (cm) { editors.push(cm); }\n    }\n    if (editors.length) { editors[0].operation(function () {\n      for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n    }); }\n  }\n\n  var globalsRegistered = false;\n  function ensureGlobalHandlers() {\n    if (globalsRegistered) { return }\n    registerGlobalHandlers();\n    globalsRegistered = true;\n  }\n  function registerGlobalHandlers() {\n    // When the window resizes, we need to refresh active editors.\n    var resizeTimer;\n    on(window, \"resize\", function () {\n      if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n        resizeTimer = null;\n        forEachCodeMirror(onResize);\n      }, 100); }\n    });\n    // When the window loses focus, we want to show the editor as blurred\n    on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n  }\n  // Called when the window resizes\n  function onResize(cm) {\n    var d = cm.display;\n    // Might be a text scaling operation, clear size caches.\n    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n    d.scrollbarsClipped = false;\n    cm.setSize();\n  }\n\n  var keyNames = {\n    3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n    19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n    36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n    46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n    106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n    173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n    221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n    63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n  };\n\n  // Number keys\n  for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n  // Alphabetic keys\n  for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n  // Function keys\n  for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n  var keyMap = {};\n\n  keyMap.basic = {\n    \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n    \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n    \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n    \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n    \"Esc\": \"singleSelection\"\n  };\n  // Note that the save and find-related commands aren't defined by\n  // default. User code or addons can define them. Unknown commands\n  // are simply ignored.\n  keyMap.pcDefault = {\n    \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n    \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n    \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n    \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n    \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n    \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n    \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n    \"fallthrough\": \"basic\"\n  };\n  // Very basic readline/emacs-style bindings, which are standard on Mac.\n  keyMap.emacsy = {\n    \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n    \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n    \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n    \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n  };\n  keyMap.macDefault = {\n    \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n    \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n    \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n    \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n    \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n    \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n    \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n    \"fallthrough\": [\"basic\", \"emacsy\"]\n  };\n  keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n  // KEYMAP DISPATCH\n\n  function normalizeKeyName(name) {\n    var parts = name.split(/-(?!$)/);\n    name = parts[parts.length - 1];\n    var alt, ctrl, shift, cmd;\n    for (var i = 0; i < parts.length - 1; i++) {\n      var mod = parts[i];\n      if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n      else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n      else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n      else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n      else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n    }\n    if (alt) { name = \"Alt-\" + name; }\n    if (ctrl) { name = \"Ctrl-\" + name; }\n    if (cmd) { name = \"Cmd-\" + name; }\n    if (shift) { name = \"Shift-\" + name; }\n    return name\n  }\n\n  // This is a kludge to keep keymaps mostly working as raw objects\n  // (backwards compatibility) while at the same time support features\n  // like normalization and multi-stroke key bindings. It compiles a\n  // new normalized keymap, and then updates the old object to reflect\n  // this.\n  function normalizeKeyMap(keymap) {\n    var copy = {};\n    for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n      var value = keymap[keyname];\n      if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n      if (value == \"...\") { delete keymap[keyname]; continue }\n\n      var keys = map(keyname.split(\" \"), normalizeKeyName);\n      for (var i = 0; i < keys.length; i++) {\n        var val = (void 0), name = (void 0);\n        if (i == keys.length - 1) {\n          name = keys.join(\" \");\n          val = value;\n        } else {\n          name = keys.slice(0, i + 1).join(\" \");\n          val = \"...\";\n        }\n        var prev = copy[name];\n        if (!prev) { copy[name] = val; }\n        else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n      }\n      delete keymap[keyname];\n    } }\n    for (var prop in copy) { keymap[prop] = copy[prop]; }\n    return keymap\n  }\n\n  function lookupKey(key, map, handle, context) {\n    map = getKeyMap(map);\n    var found = map.call ? map.call(key, context) : map[key];\n    if (found === false) { return \"nothing\" }\n    if (found === \"...\") { return \"multi\" }\n    if (found != null && handle(found)) { return \"handled\" }\n\n    if (map.fallthrough) {\n      if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n        { return lookupKey(key, map.fallthrough, handle, context) }\n      for (var i = 0; i < map.fallthrough.length; i++) {\n        var result = lookupKey(key, map.fallthrough[i], handle, context);\n        if (result) { return result }\n      }\n    }\n  }\n\n  // Modifier key presses don't count as 'real' key presses for the\n  // purpose of keymap fallthrough.\n  function isModifierKey(value) {\n    var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n    return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n  }\n\n  function addModifierNames(name, event, noShift) {\n    var base = name;\n    if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n    if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n    if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n    if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n    return name\n  }\n\n  // Look up the name of a key as indicated by an event object.\n  function keyName(event, noShift) {\n    if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n    var name = keyNames[event.keyCode];\n    if (name == null || event.altGraphKey) { return false }\n    // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n    // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n    if (event.keyCode == 3 && event.code) { name = event.code; }\n    return addModifierNames(name, event, noShift)\n  }\n\n  function getKeyMap(val) {\n    return typeof val == \"string\" ? keyMap[val] : val\n  }\n\n  // Helper for deleting text near the selection(s), used to implement\n  // backspace, delete, and similar functionality.\n  function deleteNearSelection(cm, compute) {\n    var ranges = cm.doc.sel.ranges, kill = [];\n    // Build up a set of ranges to kill first, merging overlapping\n    // ranges.\n    for (var i = 0; i < ranges.length; i++) {\n      var toKill = compute(ranges[i]);\n      while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n        var replaced = kill.pop();\n        if (cmp(replaced.from, toKill.from) < 0) {\n          toKill.from = replaced.from;\n          break\n        }\n      }\n      kill.push(toKill);\n    }\n    // Next, remove those actual ranges.\n    runInOp(cm, function () {\n      for (var i = kill.length - 1; i >= 0; i--)\n        { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n      ensureCursorVisible(cm);\n    });\n  }\n\n  function moveCharLogically(line, ch, dir) {\n    var target = skipExtendingChars(line.text, ch + dir, dir);\n    return target < 0 || target > line.text.length ? null : target\n  }\n\n  function moveLogically(line, start, dir) {\n    var ch = moveCharLogically(line, start.ch, dir);\n    return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n  }\n\n  function endOfLine(visually, cm, lineObj, lineNo, dir) {\n    if (visually) {\n      if (cm.doc.direction == \"rtl\") { dir = -dir; }\n      var order = getOrder(lineObj, cm.doc.direction);\n      if (order) {\n        var part = dir < 0 ? lst(order) : order[0];\n        var moveInStorageOrder = (dir < 0) == (part.level == 1);\n        var sticky = moveInStorageOrder ? \"after\" : \"before\";\n        var ch;\n        // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n        // it could be that the last bidi part is not on the last visual line,\n        // since visual lines contain content order-consecutive chunks.\n        // Thus, in rtl, we are looking for the first (content-order) character\n        // in the rtl chunk that is on the last line (that is, the same line\n        // as the last (content-order) character).\n        if (part.level > 0 || cm.doc.direction == \"rtl\") {\n          var prep = prepareMeasureForLine(cm, lineObj);\n          ch = dir < 0 ? lineObj.text.length - 1 : 0;\n          var targetTop = measureCharPrepared(cm, prep, ch).top;\n          ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n          if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n        } else { ch = dir < 0 ? part.to : part.from; }\n        return new Pos(lineNo, ch, sticky)\n      }\n    }\n    return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n  }\n\n  function moveVisually(cm, line, start, dir) {\n    var bidi = getOrder(line, cm.doc.direction);\n    if (!bidi) { return moveLogically(line, start, dir) }\n    if (start.ch >= line.text.length) {\n      start.ch = line.text.length;\n      start.sticky = \"before\";\n    } else if (start.ch <= 0) {\n      start.ch = 0;\n      start.sticky = \"after\";\n    }\n    var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n    if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n      // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n      // nothing interesting happens.\n      return moveLogically(line, start, dir)\n    }\n\n    var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n    var prep;\n    var getWrappedLineExtent = function (ch) {\n      if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n      prep = prep || prepareMeasureForLine(cm, line);\n      return wrappedLineExtentChar(cm, line, prep, ch)\n    };\n    var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n    if (cm.doc.direction == \"rtl\" || part.level == 1) {\n      var moveInStorageOrder = (part.level == 1) == (dir < 0);\n      var ch = mv(start, moveInStorageOrder ? 1 : -1);\n      if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n        // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n        var sticky = moveInStorageOrder ? \"before\" : \"after\";\n        return new Pos(start.line, ch, sticky)\n      }\n    }\n\n    // Case 3: Could not move within this bidi part in this visual line, so leave\n    // the current bidi part\n\n    var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n      var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n        ? new Pos(start.line, mv(ch, 1), \"before\")\n        : new Pos(start.line, ch, \"after\"); };\n\n      for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n        var part = bidi[partPos];\n        var moveInStorageOrder = (dir > 0) == (part.level != 1);\n        var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n        if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n        ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n        if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n      }\n    };\n\n    // Case 3a: Look for other bidi parts on the same visual line\n    var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n    if (res) { return res }\n\n    // Case 3b: Look for other bidi parts on the next visual line\n    var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n    if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n      res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n      if (res) { return res }\n    }\n\n    // Case 4: Nowhere to move\n    return null\n  }\n\n  // Commands are parameter-less actions that can be performed on an\n  // editor, mostly used for keybindings.\n  var commands = {\n    selectAll: selectAll,\n    singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n    killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n      if (range.empty()) {\n        var len = getLine(cm.doc, range.head.line).text.length;\n        if (range.head.ch == len && range.head.line < cm.lastLine())\n          { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n        else\n          { return {from: range.head, to: Pos(range.head.line, len)} }\n      } else {\n        return {from: range.from(), to: range.to()}\n      }\n    }); },\n    deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n      from: Pos(range.from().line, 0),\n      to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n    }); }); },\n    delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n      from: Pos(range.from().line, 0), to: range.from()\n    }); }); },\n    delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n      var top = cm.charCoords(range.head, \"div\").top + 5;\n      var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n      return {from: leftPos, to: range.from()}\n    }); },\n    delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n      var top = cm.charCoords(range.head, \"div\").top + 5;\n      var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n      return {from: range.from(), to: rightPos }\n    }); },\n    undo: function (cm) { return cm.undo(); },\n    redo: function (cm) { return cm.redo(); },\n    undoSelection: function (cm) { return cm.undoSelection(); },\n    redoSelection: function (cm) { return cm.redoSelection(); },\n    goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n    goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n    goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n      {origin: \"+move\", bias: 1}\n    ); },\n    goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n      {origin: \"+move\", bias: 1}\n    ); },\n    goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n      {origin: \"+move\", bias: -1}\n    ); },\n    goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n      var top = cm.cursorCoords(range.head, \"div\").top + 5;\n      return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n    }, sel_move); },\n    goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n      var top = cm.cursorCoords(range.head, \"div\").top + 5;\n      return cm.coordsChar({left: 0, top: top}, \"div\")\n    }, sel_move); },\n    goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n      var top = cm.cursorCoords(range.head, \"div\").top + 5;\n      var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n      if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n      return pos\n    }, sel_move); },\n    goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n    goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n    goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n    goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n    goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n    goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n    goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n    goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n    goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n    goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n    goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n    goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n    delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n    delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n    delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n    delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n    delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n    delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n    indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n    indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n    indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n    insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n    insertSoftTab: function (cm) {\n      var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n      for (var i = 0; i < ranges.length; i++) {\n        var pos = ranges[i].from();\n        var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n        spaces.push(spaceStr(tabSize - col % tabSize));\n      }\n      cm.replaceSelections(spaces);\n    },\n    defaultTab: function (cm) {\n      if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n      else { cm.execCommand(\"insertTab\"); }\n    },\n    // Swap the two chars left and right of each selection's head.\n    // Move cursor behind the two swapped characters afterwards.\n    //\n    // Doesn't consider line feeds a character.\n    // Doesn't scan more than one line above to find a character.\n    // Doesn't do anything on an empty line.\n    // Doesn't do anything with non-empty selections.\n    transposeChars: function (cm) { return runInOp(cm, function () {\n      var ranges = cm.listSelections(), newSel = [];\n      for (var i = 0; i < ranges.length; i++) {\n        if (!ranges[i].empty()) { continue }\n        var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n        if (line) {\n          if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n          if (cur.ch > 0) {\n            cur = new Pos(cur.line, cur.ch + 1);\n            cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n                            Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n          } else if (cur.line > cm.doc.first) {\n            var prev = getLine(cm.doc, cur.line - 1).text;\n            if (prev) {\n              cur = new Pos(cur.line, 1);\n              cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n                              prev.charAt(prev.length - 1),\n                              Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n            }\n          }\n        }\n        newSel.push(new Range(cur, cur));\n      }\n      cm.setSelections(newSel);\n    }); },\n    newlineAndIndent: function (cm) { return runInOp(cm, function () {\n      var sels = cm.listSelections();\n      for (var i = sels.length - 1; i >= 0; i--)\n        { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n      sels = cm.listSelections();\n      for (var i$1 = 0; i$1 < sels.length; i$1++)\n        { cm.indentLine(sels[i$1].from().line, null, true); }\n      ensureCursorVisible(cm);\n    }); },\n    openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n    toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n  };\n\n\n  function lineStart(cm, lineN) {\n    var line = getLine(cm.doc, lineN);\n    var visual = visualLine(line);\n    if (visual != line) { lineN = lineNo(visual); }\n    return endOfLine(true, cm, visual, lineN, 1)\n  }\n  function lineEnd(cm, lineN) {\n    var line = getLine(cm.doc, lineN);\n    var visual = visualLineEnd(line);\n    if (visual != line) { lineN = lineNo(visual); }\n    return endOfLine(true, cm, line, lineN, -1)\n  }\n  function lineStartSmart(cm, pos) {\n    var start = lineStart(cm, pos.line);\n    var line = getLine(cm.doc, start.line);\n    var order = getOrder(line, cm.doc.direction);\n    if (!order || order[0].level == 0) {\n      var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n      var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n      return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n    }\n    return start\n  }\n\n  // Run a handler that was bound to a key.\n  function doHandleBinding(cm, bound, dropShift) {\n    if (typeof bound == \"string\") {\n      bound = commands[bound];\n      if (!bound) { return false }\n    }\n    // Ensure previous input has been read, so that the handler sees a\n    // consistent view of the document\n    cm.display.input.ensurePolled();\n    var prevShift = cm.display.shift, done = false;\n    try {\n      if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n      if (dropShift) { cm.display.shift = false; }\n      done = bound(cm) != Pass;\n    } finally {\n      cm.display.shift = prevShift;\n      cm.state.suppressEdits = false;\n    }\n    return done\n  }\n\n  function lookupKeyForEditor(cm, name, handle) {\n    for (var i = 0; i < cm.state.keyMaps.length; i++) {\n      var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n      if (result) { return result }\n    }\n    return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n      || lookupKey(name, cm.options.keyMap, handle, cm)\n  }\n\n  // Note that, despite the name, this function is also used to check\n  // for bound mouse clicks.\n\n  var stopSeq = new Delayed;\n\n  function dispatchKey(cm, name, e, handle) {\n    var seq = cm.state.keySeq;\n    if (seq) {\n      if (isModifierKey(name)) { return \"handled\" }\n      if (/\\'$/.test(name))\n        { cm.state.keySeq = null; }\n      else\n        { stopSeq.set(50, function () {\n          if (cm.state.keySeq == seq) {\n            cm.state.keySeq = null;\n            cm.display.input.reset();\n          }\n        }); }\n      if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n    }\n    return dispatchKeyInner(cm, name, e, handle)\n  }\n\n  function dispatchKeyInner(cm, name, e, handle) {\n    var result = lookupKeyForEditor(cm, name, handle);\n\n    if (result == \"multi\")\n      { cm.state.keySeq = name; }\n    if (result == \"handled\")\n      { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n    if (result == \"handled\" || result == \"multi\") {\n      e_preventDefault(e);\n      restartBlink(cm);\n    }\n\n    return !!result\n  }\n\n  // Handle a key from the keydown event.\n  function handleKeyBinding(cm, e) {\n    var name = keyName(e, true);\n    if (!name) { return false }\n\n    if (e.shiftKey && !cm.state.keySeq) {\n      // First try to resolve full name (including 'Shift-'). Failing\n      // that, see if there is a cursor-motion command (starting with\n      // 'go') bound to the keyname without 'Shift-'.\n      return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n          || dispatchKey(cm, name, e, function (b) {\n               if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n                 { return doHandleBinding(cm, b) }\n             })\n    } else {\n      return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n    }\n  }\n\n  // Handle a key from the keypress event\n  function handleCharBinding(cm, e, ch) {\n    return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n  }\n\n  var lastStoppedKey = null;\n  function onKeyDown(e) {\n    var cm = this;\n    if (e.target && e.target != cm.display.input.getField()) { return }\n    cm.curOp.focus = activeElt();\n    if (signalDOMEvent(cm, e)) { return }\n    // IE does strange things with escape.\n    if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n    var code = e.keyCode;\n    cm.display.shift = code == 16 || e.shiftKey;\n    var handled = handleKeyBinding(cm, e);\n    if (presto) {\n      lastStoppedKey = handled ? code : null;\n      // Opera has no cut event... we try to at least catch the key combo\n      if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n        { cm.replaceSelection(\"\", null, \"cut\"); }\n    }\n    if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n      { document.execCommand(\"cut\"); }\n\n    // Turn mouse into crosshair when Alt is held on Mac.\n    if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n      { showCrossHair(cm); }\n  }\n\n  function showCrossHair(cm) {\n    var lineDiv = cm.display.lineDiv;\n    addClass(lineDiv, \"CodeMirror-crosshair\");\n\n    function up(e) {\n      if (e.keyCode == 18 || !e.altKey) {\n        rmClass(lineDiv, \"CodeMirror-crosshair\");\n        off(document, \"keyup\", up);\n        off(document, \"mouseover\", up);\n      }\n    }\n    on(document, \"keyup\", up);\n    on(document, \"mouseover\", up);\n  }\n\n  function onKeyUp(e) {\n    if (e.keyCode == 16) { this.doc.sel.shift = false; }\n    signalDOMEvent(this, e);\n  }\n\n  function onKeyPress(e) {\n    var cm = this;\n    if (e.target && e.target != cm.display.input.getField()) { return }\n    if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n    var keyCode = e.keyCode, charCode = e.charCode;\n    if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n    if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n    var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n    // Some browsers fire keypress events for backspace\n    if (ch == \"\\x08\") { return }\n    if (handleCharBinding(cm, e, ch)) { return }\n    cm.display.input.onKeyPress(e);\n  }\n\n  var DOUBLECLICK_DELAY = 400;\n\n  var PastClick = function(time, pos, button) {\n    this.time = time;\n    this.pos = pos;\n    this.button = button;\n  };\n\n  PastClick.prototype.compare = function (time, pos, button) {\n    return this.time + DOUBLECLICK_DELAY > time &&\n      cmp(pos, this.pos) == 0 && button == this.button\n  };\n\n  var lastClick, lastDoubleClick;\n  function clickRepeat(pos, button) {\n    var now = +new Date;\n    if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n      lastClick = lastDoubleClick = null;\n      return \"triple\"\n    } else if (lastClick && lastClick.compare(now, pos, button)) {\n      lastDoubleClick = new PastClick(now, pos, button);\n      lastClick = null;\n      return \"double\"\n    } else {\n      lastClick = new PastClick(now, pos, button);\n      lastDoubleClick = null;\n      return \"single\"\n    }\n  }\n\n  // A mouse down can be a single click, double click, triple click,\n  // start of selection drag, start of text drag, new cursor\n  // (ctrl-click), rectangle drag (alt-drag), or xwin\n  // middle-click-paste. Or it might be a click on something we should\n  // not interfere with, such as a scrollbar or widget.\n  function onMouseDown(e) {\n    var cm = this, display = cm.display;\n    if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n    display.input.ensurePolled();\n    display.shift = e.shiftKey;\n\n    if (eventInWidget(display, e)) {\n      if (!webkit) {\n        // Briefly turn off draggability, to allow widgets to do\n        // normal dragging things.\n        display.scroller.draggable = false;\n        setTimeout(function () { return display.scroller.draggable = true; }, 100);\n      }\n      return\n    }\n    if (clickInGutter(cm, e)) { return }\n    var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n    window.focus();\n\n    // #3261: make sure, that we're not starting a second selection\n    if (button == 1 && cm.state.selectingText)\n      { cm.state.selectingText(e); }\n\n    if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n    if (button == 1) {\n      if (pos) { leftButtonDown(cm, pos, repeat, e); }\n      else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n    } else if (button == 2) {\n      if (pos) { extendSelection(cm.doc, pos); }\n      setTimeout(function () { return display.input.focus(); }, 20);\n    } else if (button == 3) {\n      if (captureRightClick) { cm.display.input.onContextMenu(e); }\n      else { delayBlurEvent(cm); }\n    }\n  }\n\n  function handleMappedButton(cm, button, pos, repeat, event) {\n    var name = \"Click\";\n    if (repeat == \"double\") { name = \"Double\" + name; }\n    else if (repeat == \"triple\") { name = \"Triple\" + name; }\n    name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n    return dispatchKey(cm,  addModifierNames(name, event), event, function (bound) {\n      if (typeof bound == \"string\") { bound = commands[bound]; }\n      if (!bound) { return false }\n      var done = false;\n      try {\n        if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n        done = bound(cm, pos) != Pass;\n      } finally {\n        cm.state.suppressEdits = false;\n      }\n      return done\n    })\n  }\n\n  function configureMouse(cm, repeat, event) {\n    var option = cm.getOption(\"configureMouse\");\n    var value = option ? option(cm, repeat, event) : {};\n    if (value.unit == null) {\n      var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n      value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n    }\n    if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n    if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n    if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n    return value\n  }\n\n  function leftButtonDown(cm, pos, repeat, event) {\n    if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n    else { cm.curOp.focus = activeElt(); }\n\n    var behavior = configureMouse(cm, repeat, event);\n\n    var sel = cm.doc.sel, contained;\n    if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n        repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n        (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n        (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n      { leftButtonStartDrag(cm, event, pos, behavior); }\n    else\n      { leftButtonSelect(cm, event, pos, behavior); }\n  }\n\n  // Start a text drag. When it ends, see if any dragging actually\n  // happen, and treat as a click if it didn't.\n  function leftButtonStartDrag(cm, event, pos, behavior) {\n    var display = cm.display, moved = false;\n    var dragEnd = operation(cm, function (e) {\n      if (webkit) { display.scroller.draggable = false; }\n      cm.state.draggingText = false;\n      if (cm.state.delayingBlurEvent) {\n        if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n        else { delayBlurEvent(cm); }\n      }\n      off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n      off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n      off(display.scroller, \"dragstart\", dragStart);\n      off(display.scroller, \"drop\", dragEnd);\n      if (!moved) {\n        e_preventDefault(e);\n        if (!behavior.addNew)\n          { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n        // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n        if ((webkit && !safari) || ie && ie_version == 9)\n          { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n        else\n          { display.input.focus(); }\n      }\n    });\n    var mouseMove = function(e2) {\n      moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n    };\n    var dragStart = function () { return moved = true; };\n    // Let the drag handler handle this.\n    if (webkit) { display.scroller.draggable = true; }\n    cm.state.draggingText = dragEnd;\n    dragEnd.copy = !behavior.moveOnDrag;\n    on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n    on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n    on(display.scroller, \"dragstart\", dragStart);\n    on(display.scroller, \"drop\", dragEnd);\n\n    cm.state.delayingBlurEvent = true;\n    setTimeout(function () { return display.input.focus(); }, 20);\n    // IE's approach to draggable\n    if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n  }\n\n  function rangeForUnit(cm, pos, unit) {\n    if (unit == \"char\") { return new Range(pos, pos) }\n    if (unit == \"word\") { return cm.findWordAt(pos) }\n    if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n    var result = unit(cm, pos);\n    return new Range(result.from, result.to)\n  }\n\n  // Normal selection, as opposed to text dragging.\n  function leftButtonSelect(cm, event, start, behavior) {\n    if (ie) { delayBlurEvent(cm); }\n    var display = cm.display, doc = cm.doc;\n    e_preventDefault(event);\n\n    var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n    if (behavior.addNew && !behavior.extend) {\n      ourIndex = doc.sel.contains(start);\n      if (ourIndex > -1)\n        { ourRange = ranges[ourIndex]; }\n      else\n        { ourRange = new Range(start, start); }\n    } else {\n      ourRange = doc.sel.primary();\n      ourIndex = doc.sel.primIndex;\n    }\n\n    if (behavior.unit == \"rectangle\") {\n      if (!behavior.addNew) { ourRange = new Range(start, start); }\n      start = posFromMouse(cm, event, true, true);\n      ourIndex = -1;\n    } else {\n      var range = rangeForUnit(cm, start, behavior.unit);\n      if (behavior.extend)\n        { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n      else\n        { ourRange = range; }\n    }\n\n    if (!behavior.addNew) {\n      ourIndex = 0;\n      setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n      startSel = doc.sel;\n    } else if (ourIndex == -1) {\n      ourIndex = ranges.length;\n      setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n                   {scroll: false, origin: \"*mouse\"});\n    } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n      setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n                   {scroll: false, origin: \"*mouse\"});\n      startSel = doc.sel;\n    } else {\n      replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n    }\n\n    var lastPos = start;\n    function extendTo(pos) {\n      if (cmp(lastPos, pos) == 0) { return }\n      lastPos = pos;\n\n      if (behavior.unit == \"rectangle\") {\n        var ranges = [], tabSize = cm.options.tabSize;\n        var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n        var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n        var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n        for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n             line <= end; line++) {\n          var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n          if (left == right)\n            { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n          else if (text.length > leftPos)\n            { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n        }\n        if (!ranges.length) { ranges.push(new Range(start, start)); }\n        setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n                     {origin: \"*mouse\", scroll: false});\n        cm.scrollIntoView(pos);\n      } else {\n        var oldRange = ourRange;\n        var range = rangeForUnit(cm, pos, behavior.unit);\n        var anchor = oldRange.anchor, head;\n        if (cmp(range.anchor, anchor) > 0) {\n          head = range.head;\n          anchor = minPos(oldRange.from(), range.anchor);\n        } else {\n          head = range.anchor;\n          anchor = maxPos(oldRange.to(), range.head);\n        }\n        var ranges$1 = startSel.ranges.slice(0);\n        ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n        setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n      }\n    }\n\n    var editorSize = display.wrapper.getBoundingClientRect();\n    // Used to ensure timeout re-tries don't fire when another extend\n    // happened in the meantime (clearTimeout isn't reliable -- at\n    // least on Chrome, the timeouts still happen even when cleared,\n    // if the clear happens after their scheduled firing time).\n    var counter = 0;\n\n    function extend(e) {\n      var curCount = ++counter;\n      var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n      if (!cur) { return }\n      if (cmp(cur, lastPos) != 0) {\n        cm.curOp.focus = activeElt();\n        extendTo(cur);\n        var visible = visibleLines(display, doc);\n        if (cur.line >= visible.to || cur.line < visible.from)\n          { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n      } else {\n        var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n        if (outside) { setTimeout(operation(cm, function () {\n          if (counter != curCount) { return }\n          display.scroller.scrollTop += outside;\n          extend(e);\n        }), 50); }\n      }\n    }\n\n    function done(e) {\n      cm.state.selectingText = false;\n      counter = Infinity;\n      // If e is null or undefined we interpret this as someone trying\n      // to explicitly cancel the selection rather than the user\n      // letting go of the mouse button.\n      if (e) {\n        e_preventDefault(e);\n        display.input.focus();\n      }\n      off(display.wrapper.ownerDocument, \"mousemove\", move);\n      off(display.wrapper.ownerDocument, \"mouseup\", up);\n      doc.history.lastSelOrigin = null;\n    }\n\n    var move = operation(cm, function (e) {\n      if (e.buttons === 0 || !e_button(e)) { done(e); }\n      else { extend(e); }\n    });\n    var up = operation(cm, done);\n    cm.state.selectingText = up;\n    on(display.wrapper.ownerDocument, \"mousemove\", move);\n    on(display.wrapper.ownerDocument, \"mouseup\", up);\n  }\n\n  // Used when mouse-selecting to adjust the anchor to the proper side\n  // of a bidi jump depending on the visual position of the head.\n  function bidiSimplify(cm, range) {\n    var anchor = range.anchor;\n    var head = range.head;\n    var anchorLine = getLine(cm.doc, anchor.line);\n    if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n    var order = getOrder(anchorLine);\n    if (!order) { return range }\n    var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n    if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n    var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n    if (boundary == 0 || boundary == order.length) { return range }\n\n    // Compute the relative visual position of the head compared to the\n    // anchor (<0 is to the left, >0 to the right)\n    var leftSide;\n    if (head.line != anchor.line) {\n      leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n    } else {\n      var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n      var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n      if (headIndex == boundary - 1 || headIndex == boundary)\n        { leftSide = dir < 0; }\n      else\n        { leftSide = dir > 0; }\n    }\n\n    var usePart = order[boundary + (leftSide ? -1 : 0)];\n    var from = leftSide == (usePart.level == 1);\n    var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n    return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n  }\n\n\n  // Determines whether an event happened in the gutter, and fires the\n  // handlers for the corresponding event.\n  function gutterEvent(cm, e, type, prevent) {\n    var mX, mY;\n    if (e.touches) {\n      mX = e.touches[0].clientX;\n      mY = e.touches[0].clientY;\n    } else {\n      try { mX = e.clientX; mY = e.clientY; }\n      catch(e$1) { return false }\n    }\n    if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n    if (prevent) { e_preventDefault(e); }\n\n    var display = cm.display;\n    var lineBox = display.lineDiv.getBoundingClientRect();\n\n    if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n    mY -= lineBox.top - display.viewOffset;\n\n    for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n      var g = display.gutters.childNodes[i];\n      if (g && g.getBoundingClientRect().right >= mX) {\n        var line = lineAtHeight(cm.doc, mY);\n        var gutter = cm.display.gutterSpecs[i];\n        signal(cm, type, cm, line, gutter.className, e);\n        return e_defaultPrevented(e)\n      }\n    }\n  }\n\n  function clickInGutter(cm, e) {\n    return gutterEvent(cm, e, \"gutterClick\", true)\n  }\n\n  // CONTEXT MENU HANDLING\n\n  // To make the context menu work, we need to briefly unhide the\n  // textarea (making it as unobtrusive as possible) to let the\n  // right-click take effect on it.\n  function onContextMenu(cm, e) {\n    if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n    if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n    if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n  }\n\n  function contextMenuInGutter(cm, e) {\n    if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n    return gutterEvent(cm, e, \"gutterContextMenu\", false)\n  }\n\n  function themeChanged(cm) {\n    cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n      cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n    clearCaches(cm);\n  }\n\n  var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n  var defaults = {};\n  var optionHandlers = {};\n\n  function defineOptions(CodeMirror) {\n    var optionHandlers = CodeMirror.optionHandlers;\n\n    function option(name, deflt, handle, notOnInit) {\n      CodeMirror.defaults[name] = deflt;\n      if (handle) { optionHandlers[name] =\n        notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n    }\n\n    CodeMirror.defineOption = option;\n\n    // Passed to option handlers when there is no old value.\n    CodeMirror.Init = Init;\n\n    // These two are, on init, called from the constructor because they\n    // have to be initialized before the editor can start at all.\n    option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n    option(\"mode\", null, function (cm, val) {\n      cm.doc.modeOption = val;\n      loadMode(cm);\n    }, true);\n\n    option(\"indentUnit\", 2, loadMode, true);\n    option(\"indentWithTabs\", false);\n    option(\"smartIndent\", true);\n    option(\"tabSize\", 4, function (cm) {\n      resetModeState(cm);\n      clearCaches(cm);\n      regChange(cm);\n    }, true);\n\n    option(\"lineSeparator\", null, function (cm, val) {\n      cm.doc.lineSep = val;\n      if (!val) { return }\n      var newBreaks = [], lineNo = cm.doc.first;\n      cm.doc.iter(function (line) {\n        for (var pos = 0;;) {\n          var found = line.text.indexOf(val, pos);\n          if (found == -1) { break }\n          pos = found + val.length;\n          newBreaks.push(Pos(lineNo, found));\n        }\n        lineNo++;\n      });\n      for (var i = newBreaks.length - 1; i >= 0; i--)\n        { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n    });\n    option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n      cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n      if (old != Init) { cm.refresh(); }\n    });\n    option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n    option(\"electricChars\", true);\n    option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n      throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n    }, true);\n    option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n    option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n    option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n    option(\"rtlMoveVisually\", !windows);\n    option(\"wholeLineUpdateBefore\", true);\n\n    option(\"theme\", \"default\", function (cm) {\n      themeChanged(cm);\n      updateGutters(cm);\n    }, true);\n    option(\"keyMap\", \"default\", function (cm, val, old) {\n      var next = getKeyMap(val);\n      var prev = old != Init && getKeyMap(old);\n      if (prev && prev.detach) { prev.detach(cm, next); }\n      if (next.attach) { next.attach(cm, prev || null); }\n    });\n    option(\"extraKeys\", null);\n    option(\"configureMouse\", null);\n\n    option(\"lineWrapping\", false, wrappingChanged, true);\n    option(\"gutters\", [], function (cm, val) {\n      cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n      updateGutters(cm);\n    }, true);\n    option(\"fixedGutter\", true, function (cm, val) {\n      cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n      cm.refresh();\n    }, true);\n    option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n    option(\"scrollbarStyle\", \"native\", function (cm) {\n      initScrollbars(cm);\n      updateScrollbars(cm);\n      cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n      cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n    }, true);\n    option(\"lineNumbers\", false, function (cm, val) {\n      cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n      updateGutters(cm);\n    }, true);\n    option(\"firstLineNumber\", 1, updateGutters, true);\n    option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n    option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n    option(\"resetSelectionOnContextMenu\", true);\n    option(\"lineWiseCopyCut\", true);\n    option(\"pasteLinesPerSelection\", true);\n    option(\"selectionsMayTouch\", false);\n\n    option(\"readOnly\", false, function (cm, val) {\n      if (val == \"nocursor\") {\n        onBlur(cm);\n        cm.display.input.blur();\n      }\n      cm.display.input.readOnlyChanged(val);\n    });\n\n    option(\"screenReaderLabel\", null, function (cm, val) {\n      val = (val === '') ? null : val;\n      cm.display.input.screenReaderLabelChanged(val);\n    });\n\n    option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n    option(\"dragDrop\", true, dragDropChanged);\n    option(\"allowDropFileTypes\", null);\n\n    option(\"cursorBlinkRate\", 530);\n    option(\"cursorScrollMargin\", 0);\n    option(\"cursorHeight\", 1, updateSelection, true);\n    option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n    option(\"workTime\", 100);\n    option(\"workDelay\", 100);\n    option(\"flattenSpans\", true, resetModeState, true);\n    option(\"addModeClass\", false, resetModeState, true);\n    option(\"pollInterval\", 100);\n    option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n    option(\"historyEventDelay\", 1250);\n    option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n    option(\"maxHighlightLength\", 10000, resetModeState, true);\n    option(\"moveInputWithCursor\", true, function (cm, val) {\n      if (!val) { cm.display.input.resetPosition(); }\n    });\n\n    option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n    option(\"autofocus\", null);\n    option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n    option(\"phrases\", null);\n  }\n\n  function dragDropChanged(cm, value, old) {\n    var wasOn = old && old != Init;\n    if (!value != !wasOn) {\n      var funcs = cm.display.dragFunctions;\n      var toggle = value ? on : off;\n      toggle(cm.display.scroller, \"dragstart\", funcs.start);\n      toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n      toggle(cm.display.scroller, \"dragover\", funcs.over);\n      toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n      toggle(cm.display.scroller, \"drop\", funcs.drop);\n    }\n  }\n\n  function wrappingChanged(cm) {\n    if (cm.options.lineWrapping) {\n      addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n      cm.display.sizer.style.minWidth = \"\";\n      cm.display.sizerWidth = null;\n    } else {\n      rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n      findMaxLine(cm);\n    }\n    estimateLineHeights(cm);\n    regChange(cm);\n    clearCaches(cm);\n    setTimeout(function () { return updateScrollbars(cm); }, 100);\n  }\n\n  // A CodeMirror instance represents an editor. This is the object\n  // that user code is usually dealing with.\n\n  function CodeMirror(place, options) {\n    var this$1 = this;\n\n    if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n    this.options = options = options ? copyObj(options) : {};\n    // Determine effective options based on given values and defaults.\n    copyObj(defaults, options, false);\n\n    var doc = options.value;\n    if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n    else if (options.mode) { doc.modeOption = options.mode; }\n    this.doc = doc;\n\n    var input = new CodeMirror.inputStyles[options.inputStyle](this);\n    var display = this.display = new Display(place, doc, input, options);\n    display.wrapper.CodeMirror = this;\n    themeChanged(this);\n    if (options.lineWrapping)\n      { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n    initScrollbars(this);\n\n    this.state = {\n      keyMaps: [],  // stores maps added by addKeyMap\n      overlays: [], // highlighting overlays, as added by addOverlay\n      modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info\n      overwrite: false,\n      delayingBlurEvent: false,\n      focused: false,\n      suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n      pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n      selectingText: false,\n      draggingText: false,\n      highlight: new Delayed(), // stores highlight worker timeout\n      keySeq: null,  // Unfinished key sequence\n      specialChars: null\n    };\n\n    if (options.autofocus && !mobile) { display.input.focus(); }\n\n    // Override magic textarea content restore that IE sometimes does\n    // on our hidden textarea on reload\n    if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n    registerEventHandlers(this);\n    ensureGlobalHandlers();\n\n    startOperation(this);\n    this.curOp.forceUpdate = true;\n    attachDoc(this, doc);\n\n    if ((options.autofocus && !mobile) || this.hasFocus())\n      { setTimeout(function () {\n        if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n      }, 20); }\n    else\n      { onBlur(this); }\n\n    for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n      { optionHandlers[opt](this, options[opt], Init); } }\n    maybeUpdateLineNumberWidth(this);\n    if (options.finishInit) { options.finishInit(this); }\n    for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n    endOperation(this);\n    // Suppress optimizelegibility in Webkit, since it breaks text\n    // measuring on line wrapping boundaries.\n    if (webkit && options.lineWrapping &&\n        getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n      { display.lineDiv.style.textRendering = \"auto\"; }\n  }\n\n  // The default configuration options.\n  CodeMirror.defaults = defaults;\n  // Functions to run when options are changed.\n  CodeMirror.optionHandlers = optionHandlers;\n\n  // Attach the necessary event handlers when initializing the editor\n  function registerEventHandlers(cm) {\n    var d = cm.display;\n    on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n    // Older IE's will not fire a second mousedown for a double click\n    if (ie && ie_version < 11)\n      { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n        if (signalDOMEvent(cm, e)) { return }\n        var pos = posFromMouse(cm, e);\n        if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n        e_preventDefault(e);\n        var word = cm.findWordAt(pos);\n        extendSelection(cm.doc, word.anchor, word.head);\n      })); }\n    else\n      { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n    // Some browsers fire contextmenu *after* opening the menu, at\n    // which point we can't mess with it anymore. Context menu is\n    // handled in onMouseDown for these browsers.\n    on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n    on(d.input.getField(), \"contextmenu\", function (e) {\n      if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n    });\n\n    // Used to suppress mouse event handling when a touch happens\n    var touchFinished, prevTouch = {end: 0};\n    function finishTouch() {\n      if (d.activeTouch) {\n        touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n        prevTouch = d.activeTouch;\n        prevTouch.end = +new Date;\n      }\n    }\n    function isMouseLikeTouchEvent(e) {\n      if (e.touches.length != 1) { return false }\n      var touch = e.touches[0];\n      return touch.radiusX <= 1 && touch.radiusY <= 1\n    }\n    function farAway(touch, other) {\n      if (other.left == null) { return true }\n      var dx = other.left - touch.left, dy = other.top - touch.top;\n      return dx * dx + dy * dy > 20 * 20\n    }\n    on(d.scroller, \"touchstart\", function (e) {\n      if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n        d.input.ensurePolled();\n        clearTimeout(touchFinished);\n        var now = +new Date;\n        d.activeTouch = {start: now, moved: false,\n                         prev: now - prevTouch.end <= 300 ? prevTouch : null};\n        if (e.touches.length == 1) {\n          d.activeTouch.left = e.touches[0].pageX;\n          d.activeTouch.top = e.touches[0].pageY;\n        }\n      }\n    });\n    on(d.scroller, \"touchmove\", function () {\n      if (d.activeTouch) { d.activeTouch.moved = true; }\n    });\n    on(d.scroller, \"touchend\", function (e) {\n      var touch = d.activeTouch;\n      if (touch && !eventInWidget(d, e) && touch.left != null &&\n          !touch.moved && new Date - touch.start < 300) {\n        var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n        if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n          { range = new Range(pos, pos); }\n        else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n          { range = cm.findWordAt(pos); }\n        else // Triple tap\n          { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n        cm.setSelection(range.anchor, range.head);\n        cm.focus();\n        e_preventDefault(e);\n      }\n      finishTouch();\n    });\n    on(d.scroller, \"touchcancel\", finishTouch);\n\n    // Sync scrolling between fake scrollbars and real scrollable\n    // area, ensure viewport is updated when scrolling.\n    on(d.scroller, \"scroll\", function () {\n      if (d.scroller.clientHeight) {\n        updateScrollTop(cm, d.scroller.scrollTop);\n        setScrollLeft(cm, d.scroller.scrollLeft, true);\n        signal(cm, \"scroll\", cm);\n      }\n    });\n\n    // Listen to wheel events in order to try and update the viewport on time.\n    on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n    on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n    // Prevent wrapper from ever scrolling\n    on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n    d.dragFunctions = {\n      enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n      over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n      start: function (e) { return onDragStart(cm, e); },\n      drop: operation(cm, onDrop),\n      leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n    };\n\n    var inp = d.input.getField();\n    on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n    on(inp, \"keydown\", operation(cm, onKeyDown));\n    on(inp, \"keypress\", operation(cm, onKeyPress));\n    on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n    on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n  }\n\n  var initHooks = [];\n  CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n  // Indent the given line. The how parameter can be \"smart\",\n  // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n  // (typically set to true for forced single-line indents), empty\n  // lines are not indented, and places where the mode returns Pass\n  // are left alone.\n  function indentLine(cm, n, how, aggressive) {\n    var doc = cm.doc, state;\n    if (how == null) { how = \"add\"; }\n    if (how == \"smart\") {\n      // Fall back to \"prev\" when the mode doesn't have an indentation\n      // method.\n      if (!doc.mode.indent) { how = \"prev\"; }\n      else { state = getContextBefore(cm, n).state; }\n    }\n\n    var tabSize = cm.options.tabSize;\n    var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n    if (line.stateAfter) { line.stateAfter = null; }\n    var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n    if (!aggressive && !/\\S/.test(line.text)) {\n      indentation = 0;\n      how = \"not\";\n    } else if (how == \"smart\") {\n      indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n      if (indentation == Pass || indentation > 150) {\n        if (!aggressive) { return }\n        how = \"prev\";\n      }\n    }\n    if (how == \"prev\") {\n      if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n      else { indentation = 0; }\n    } else if (how == \"add\") {\n      indentation = curSpace + cm.options.indentUnit;\n    } else if (how == \"subtract\") {\n      indentation = curSpace - cm.options.indentUnit;\n    } else if (typeof how == \"number\") {\n      indentation = curSpace + how;\n    }\n    indentation = Math.max(0, indentation);\n\n    var indentString = \"\", pos = 0;\n    if (cm.options.indentWithTabs)\n      { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n    if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n    if (indentString != curSpaceString) {\n      replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n      line.stateAfter = null;\n      return true\n    } else {\n      // Ensure that, if the cursor was in the whitespace at the start\n      // of the line, it is moved to the end of that space.\n      for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n        var range = doc.sel.ranges[i$1];\n        if (range.head.line == n && range.head.ch < curSpaceString.length) {\n          var pos$1 = Pos(n, curSpaceString.length);\n          replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n          break\n        }\n      }\n    }\n  }\n\n  // This will be set to a {lineWise: bool, text: [string]} object, so\n  // that, when pasting, we know what kind of selections the copied\n  // text was made out of.\n  var lastCopied = null;\n\n  function setLastCopied(newLastCopied) {\n    lastCopied = newLastCopied;\n  }\n\n  function applyTextInput(cm, inserted, deleted, sel, origin) {\n    var doc = cm.doc;\n    cm.display.shift = false;\n    if (!sel) { sel = doc.sel; }\n\n    var recent = +new Date - 200;\n    var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n    var textLines = splitLinesAuto(inserted), multiPaste = null;\n    // When pasting N lines into N selections, insert one line per selection\n    if (paste && sel.ranges.length > 1) {\n      if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n        if (sel.ranges.length % lastCopied.text.length == 0) {\n          multiPaste = [];\n          for (var i = 0; i < lastCopied.text.length; i++)\n            { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n        }\n      } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n        multiPaste = map(textLines, function (l) { return [l]; });\n      }\n    }\n\n    var updateInput = cm.curOp.updateInput;\n    // Normal behavior is to insert the new text into every selection\n    for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n      var range = sel.ranges[i$1];\n      var from = range.from(), to = range.to();\n      if (range.empty()) {\n        if (deleted && deleted > 0) // Handle deletion\n          { from = Pos(from.line, from.ch - deleted); }\n        else if (cm.state.overwrite && !paste) // Handle overwrite\n          { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n        else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n          { from = to = Pos(from.line, 0); }\n      }\n      var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n                         origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n      makeChange(cm.doc, changeEvent);\n      signalLater(cm, \"inputRead\", cm, changeEvent);\n    }\n    if (inserted && !paste)\n      { triggerElectric(cm, inserted); }\n\n    ensureCursorVisible(cm);\n    if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n    cm.curOp.typing = true;\n    cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n  }\n\n  function handlePaste(e, cm) {\n    var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n    if (pasted) {\n      e.preventDefault();\n      if (!cm.isReadOnly() && !cm.options.disableInput)\n        { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n      return true\n    }\n  }\n\n  function triggerElectric(cm, inserted) {\n    // When an 'electric' character is inserted, immediately trigger a reindent\n    if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n    var sel = cm.doc.sel;\n\n    for (var i = sel.ranges.length - 1; i >= 0; i--) {\n      var range = sel.ranges[i];\n      if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n      var mode = cm.getModeAt(range.head);\n      var indented = false;\n      if (mode.electricChars) {\n        for (var j = 0; j < mode.electricChars.length; j++)\n          { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n            indented = indentLine(cm, range.head.line, \"smart\");\n            break\n          } }\n      } else if (mode.electricInput) {\n        if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n          { indented = indentLine(cm, range.head.line, \"smart\"); }\n      }\n      if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n    }\n  }\n\n  function copyableRanges(cm) {\n    var text = [], ranges = [];\n    for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n      var line = cm.doc.sel.ranges[i].head.line;\n      var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n      ranges.push(lineRange);\n      text.push(cm.getRange(lineRange.anchor, lineRange.head));\n    }\n    return {text: text, ranges: ranges}\n  }\n\n  function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n    field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n    field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n    field.setAttribute(\"spellcheck\", !!spellcheck);\n  }\n\n  function hiddenTextarea() {\n    var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n    var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n    // The textarea is kept positioned near the cursor to prevent the\n    // fact that it'll be scrolled into view on input from scrolling\n    // our fake cursor out of view. On webkit, when wrap=off, paste is\n    // very slow. So make the area wide instead.\n    if (webkit) { te.style.width = \"1000px\"; }\n    else { te.setAttribute(\"wrap\", \"off\"); }\n    // If border: 0; -- iOS fails to open keyboard (issue #1287)\n    if (ios) { te.style.border = \"1px solid black\"; }\n    disableBrowserMagic(te);\n    return div\n  }\n\n  // The publicly visible API. Note that methodOp(f) means\n  // 'wrap f in an operation, performed on its `this` parameter'.\n\n  // This is not the complete set of editor methods. Most of the\n  // methods defined on the Doc type are also injected into\n  // CodeMirror.prototype, for backwards compatibility and\n  // convenience.\n\n  function addEditorMethods(CodeMirror) {\n    var optionHandlers = CodeMirror.optionHandlers;\n\n    var helpers = CodeMirror.helpers = {};\n\n    CodeMirror.prototype = {\n      constructor: CodeMirror,\n      focus: function(){window.focus(); this.display.input.focus();},\n\n      setOption: function(option, value) {\n        var options = this.options, old = options[option];\n        if (options[option] == value && option != \"mode\") { return }\n        options[option] = value;\n        if (optionHandlers.hasOwnProperty(option))\n          { operation(this, optionHandlers[option])(this, value, old); }\n        signal(this, \"optionChange\", this, option);\n      },\n\n      getOption: function(option) {return this.options[option]},\n      getDoc: function() {return this.doc},\n\n      addKeyMap: function(map, bottom) {\n        this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n      },\n      removeKeyMap: function(map) {\n        var maps = this.state.keyMaps;\n        for (var i = 0; i < maps.length; ++i)\n          { if (maps[i] == map || maps[i].name == map) {\n            maps.splice(i, 1);\n            return true\n          } }\n      },\n\n      addOverlay: methodOp(function(spec, options) {\n        var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n        if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n        insertSorted(this.state.overlays,\n                     {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n                      priority: (options && options.priority) || 0},\n                     function (overlay) { return overlay.priority; });\n        this.state.modeGen++;\n        regChange(this);\n      }),\n      removeOverlay: methodOp(function(spec) {\n        var overlays = this.state.overlays;\n        for (var i = 0; i < overlays.length; ++i) {\n          var cur = overlays[i].modeSpec;\n          if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n            overlays.splice(i, 1);\n            this.state.modeGen++;\n            regChange(this);\n            return\n          }\n        }\n      }),\n\n      indentLine: methodOp(function(n, dir, aggressive) {\n        if (typeof dir != \"string\" && typeof dir != \"number\") {\n          if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n          else { dir = dir ? \"add\" : \"subtract\"; }\n        }\n        if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n      }),\n      indentSelection: methodOp(function(how) {\n        var ranges = this.doc.sel.ranges, end = -1;\n        for (var i = 0; i < ranges.length; i++) {\n          var range = ranges[i];\n          if (!range.empty()) {\n            var from = range.from(), to = range.to();\n            var start = Math.max(end, from.line);\n            end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n            for (var j = start; j < end; ++j)\n              { indentLine(this, j, how); }\n            var newRanges = this.doc.sel.ranges;\n            if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n              { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n          } else if (range.head.line > end) {\n            indentLine(this, range.head.line, how, true);\n            end = range.head.line;\n            if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n          }\n        }\n      }),\n\n      // Fetch the parser token for a given character. Useful for hacks\n      // that want to inspect the mode state (say, for completion).\n      getTokenAt: function(pos, precise) {\n        return takeToken(this, pos, precise)\n      },\n\n      getLineTokens: function(line, precise) {\n        return takeToken(this, Pos(line), precise, true)\n      },\n\n      getTokenTypeAt: function(pos) {\n        pos = clipPos(this.doc, pos);\n        var styles = getLineStyles(this, getLine(this.doc, pos.line));\n        var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n        var type;\n        if (ch == 0) { type = styles[2]; }\n        else { for (;;) {\n          var mid = (before + after) >> 1;\n          if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n          else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n          else { type = styles[mid * 2 + 2]; break }\n        } }\n        var cut = type ? type.indexOf(\"overlay \") : -1;\n        return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n      },\n\n      getModeAt: function(pos) {\n        var mode = this.doc.mode;\n        if (!mode.innerMode) { return mode }\n        return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n      },\n\n      getHelper: function(pos, type) {\n        return this.getHelpers(pos, type)[0]\n      },\n\n      getHelpers: function(pos, type) {\n        var found = [];\n        if (!helpers.hasOwnProperty(type)) { return found }\n        var help = helpers[type], mode = this.getModeAt(pos);\n        if (typeof mode[type] == \"string\") {\n          if (help[mode[type]]) { found.push(help[mode[type]]); }\n        } else if (mode[type]) {\n          for (var i = 0; i < mode[type].length; i++) {\n            var val = help[mode[type][i]];\n            if (val) { found.push(val); }\n          }\n        } else if (mode.helperType && help[mode.helperType]) {\n          found.push(help[mode.helperType]);\n        } else if (help[mode.name]) {\n          found.push(help[mode.name]);\n        }\n        for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n          var cur = help._global[i$1];\n          if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n            { found.push(cur.val); }\n        }\n        return found\n      },\n\n      getStateAfter: function(line, precise) {\n        var doc = this.doc;\n        line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n        return getContextBefore(this, line + 1, precise).state\n      },\n\n      cursorCoords: function(start, mode) {\n        var pos, range = this.doc.sel.primary();\n        if (start == null) { pos = range.head; }\n        else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n        else { pos = start ? range.from() : range.to(); }\n        return cursorCoords(this, pos, mode || \"page\")\n      },\n\n      charCoords: function(pos, mode) {\n        return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n      },\n\n      coordsChar: function(coords, mode) {\n        coords = fromCoordSystem(this, coords, mode || \"page\");\n        return coordsChar(this, coords.left, coords.top)\n      },\n\n      lineAtHeight: function(height, mode) {\n        height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n        return lineAtHeight(this.doc, height + this.display.viewOffset)\n      },\n      heightAtLine: function(line, mode, includeWidgets) {\n        var end = false, lineObj;\n        if (typeof line == \"number\") {\n          var last = this.doc.first + this.doc.size - 1;\n          if (line < this.doc.first) { line = this.doc.first; }\n          else if (line > last) { line = last; end = true; }\n          lineObj = getLine(this.doc, line);\n        } else {\n          lineObj = line;\n        }\n        return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n          (end ? this.doc.height - heightAtLine(lineObj) : 0)\n      },\n\n      defaultTextHeight: function() { return textHeight(this.display) },\n      defaultCharWidth: function() { return charWidth(this.display) },\n\n      getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n      addWidget: function(pos, node, scroll, vert, horiz) {\n        var display = this.display;\n        pos = cursorCoords(this, clipPos(this.doc, pos));\n        var top = pos.bottom, left = pos.left;\n        node.style.position = \"absolute\";\n        node.setAttribute(\"cm-ignore-events\", \"true\");\n        this.display.input.setUneditable(node);\n        display.sizer.appendChild(node);\n        if (vert == \"over\") {\n          top = pos.top;\n        } else if (vert == \"above\" || vert == \"near\") {\n          var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n          hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n          // Default to positioning above (if specified and possible); otherwise default to positioning below\n          if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n            { top = pos.top - node.offsetHeight; }\n          else if (pos.bottom + node.offsetHeight <= vspace)\n            { top = pos.bottom; }\n          if (left + node.offsetWidth > hspace)\n            { left = hspace - node.offsetWidth; }\n        }\n        node.style.top = top + \"px\";\n        node.style.left = node.style.right = \"\";\n        if (horiz == \"right\") {\n          left = display.sizer.clientWidth - node.offsetWidth;\n          node.style.right = \"0px\";\n        } else {\n          if (horiz == \"left\") { left = 0; }\n          else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n          node.style.left = left + \"px\";\n        }\n        if (scroll)\n          { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n      },\n\n      triggerOnKeyDown: methodOp(onKeyDown),\n      triggerOnKeyPress: methodOp(onKeyPress),\n      triggerOnKeyUp: onKeyUp,\n      triggerOnMouseDown: methodOp(onMouseDown),\n\n      execCommand: function(cmd) {\n        if (commands.hasOwnProperty(cmd))\n          { return commands[cmd].call(null, this) }\n      },\n\n      triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n      findPosH: function(from, amount, unit, visually) {\n        var dir = 1;\n        if (amount < 0) { dir = -1; amount = -amount; }\n        var cur = clipPos(this.doc, from);\n        for (var i = 0; i < amount; ++i) {\n          cur = findPosH(this.doc, cur, dir, unit, visually);\n          if (cur.hitSide) { break }\n        }\n        return cur\n      },\n\n      moveH: methodOp(function(dir, unit) {\n        var this$1 = this;\n\n        this.extendSelectionsBy(function (range) {\n          if (this$1.display.shift || this$1.doc.extend || range.empty())\n            { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n          else\n            { return dir < 0 ? range.from() : range.to() }\n        }, sel_move);\n      }),\n\n      deleteH: methodOp(function(dir, unit) {\n        var sel = this.doc.sel, doc = this.doc;\n        if (sel.somethingSelected())\n          { doc.replaceSelection(\"\", null, \"+delete\"); }\n        else\n          { deleteNearSelection(this, function (range) {\n            var other = findPosH(doc, range.head, dir, unit, false);\n            return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n          }); }\n      }),\n\n      findPosV: function(from, amount, unit, goalColumn) {\n        var dir = 1, x = goalColumn;\n        if (amount < 0) { dir = -1; amount = -amount; }\n        var cur = clipPos(this.doc, from);\n        for (var i = 0; i < amount; ++i) {\n          var coords = cursorCoords(this, cur, \"div\");\n          if (x == null) { x = coords.left; }\n          else { coords.left = x; }\n          cur = findPosV(this, coords, dir, unit);\n          if (cur.hitSide) { break }\n        }\n        return cur\n      },\n\n      moveV: methodOp(function(dir, unit) {\n        var this$1 = this;\n\n        var doc = this.doc, goals = [];\n        var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n        doc.extendSelectionsBy(function (range) {\n          if (collapse)\n            { return dir < 0 ? range.from() : range.to() }\n          var headPos = cursorCoords(this$1, range.head, \"div\");\n          if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n          goals.push(headPos.left);\n          var pos = findPosV(this$1, headPos, dir, unit);\n          if (unit == \"page\" && range == doc.sel.primary())\n            { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n          return pos\n        }, sel_move);\n        if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n          { doc.sel.ranges[i].goalColumn = goals[i]; } }\n      }),\n\n      // Find the word at the given position (as returned by coordsChar).\n      findWordAt: function(pos) {\n        var doc = this.doc, line = getLine(doc, pos.line).text;\n        var start = pos.ch, end = pos.ch;\n        if (line) {\n          var helper = this.getHelper(pos, \"wordChars\");\n          if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n          var startChar = line.charAt(start);\n          var check = isWordChar(startChar, helper)\n            ? function (ch) { return isWordChar(ch, helper); }\n            : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n            : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n          while (start > 0 && check(line.charAt(start - 1))) { --start; }\n          while (end < line.length && check(line.charAt(end))) { ++end; }\n        }\n        return new Range(Pos(pos.line, start), Pos(pos.line, end))\n      },\n\n      toggleOverwrite: function(value) {\n        if (value != null && value == this.state.overwrite) { return }\n        if (this.state.overwrite = !this.state.overwrite)\n          { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n        else\n          { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n        signal(this, \"overwriteToggle\", this, this.state.overwrite);\n      },\n      hasFocus: function() { return this.display.input.getField() == activeElt() },\n      isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n      scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n      getScrollInfo: function() {\n        var scroller = this.display.scroller;\n        return {left: scroller.scrollLeft, top: scroller.scrollTop,\n                height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n                width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n                clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n      },\n\n      scrollIntoView: methodOp(function(range, margin) {\n        if (range == null) {\n          range = {from: this.doc.sel.primary().head, to: null};\n          if (margin == null) { margin = this.options.cursorScrollMargin; }\n        } else if (typeof range == \"number\") {\n          range = {from: Pos(range, 0), to: null};\n        } else if (range.from == null) {\n          range = {from: range, to: null};\n        }\n        if (!range.to) { range.to = range.from; }\n        range.margin = margin || 0;\n\n        if (range.from.line != null) {\n          scrollToRange(this, range);\n        } else {\n          scrollToCoordsRange(this, range.from, range.to, range.margin);\n        }\n      }),\n\n      setSize: methodOp(function(width, height) {\n        var this$1 = this;\n\n        var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n        if (width != null) { this.display.wrapper.style.width = interpret(width); }\n        if (height != null) { this.display.wrapper.style.height = interpret(height); }\n        if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n        var lineNo = this.display.viewFrom;\n        this.doc.iter(lineNo, this.display.viewTo, function (line) {\n          if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n            { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n          ++lineNo;\n        });\n        this.curOp.forceUpdate = true;\n        signal(this, \"refresh\", this);\n      }),\n\n      operation: function(f){return runInOp(this, f)},\n      startOperation: function(){return startOperation(this)},\n      endOperation: function(){return endOperation(this)},\n\n      refresh: methodOp(function() {\n        var oldHeight = this.display.cachedTextHeight;\n        regChange(this);\n        this.curOp.forceUpdate = true;\n        clearCaches(this);\n        scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n        updateGutterSpace(this.display);\n        if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n          { estimateLineHeights(this); }\n        signal(this, \"refresh\", this);\n      }),\n\n      swapDoc: methodOp(function(doc) {\n        var old = this.doc;\n        old.cm = null;\n        // Cancel the current text selection if any (#5821)\n        if (this.state.selectingText) { this.state.selectingText(); }\n        attachDoc(this, doc);\n        clearCaches(this);\n        this.display.input.reset();\n        scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n        this.curOp.forceScroll = true;\n        signalLater(this, \"swapDoc\", this, old);\n        return old\n      }),\n\n      phrase: function(phraseText) {\n        var phrases = this.options.phrases;\n        return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n      },\n\n      getInputField: function(){return this.display.input.getField()},\n      getWrapperElement: function(){return this.display.wrapper},\n      getScrollerElement: function(){return this.display.scroller},\n      getGutterElement: function(){return this.display.gutters}\n    };\n    eventMixin(CodeMirror);\n\n    CodeMirror.registerHelper = function(type, name, value) {\n      if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n      helpers[type][name] = value;\n    };\n    CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n      CodeMirror.registerHelper(type, name, value);\n      helpers[type]._global.push({pred: predicate, val: value});\n    };\n  }\n\n  // Used for horizontal relative motion. Dir is -1 or 1 (left or\n  // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n  // doesn't cross line boundaries), \"word\" (across next word), or\n  // \"group\" (to the start of next group of word or\n  // non-word-non-whitespace chars). The visually param controls\n  // whether, in right-to-left text, direction 1 means to move towards\n  // the next index in the string, or towards the character to the right\n  // of the current position. The resulting position will have a\n  // hitSide=true property if it reached the end of the document.\n  function findPosH(doc, pos, dir, unit, visually) {\n    var oldPos = pos;\n    var origDir = dir;\n    var lineObj = getLine(doc, pos.line);\n    var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n    function findNextLine() {\n      var l = pos.line + lineDir;\n      if (l < doc.first || l >= doc.first + doc.size) { return false }\n      pos = new Pos(l, pos.ch, pos.sticky);\n      return lineObj = getLine(doc, l)\n    }\n    function moveOnce(boundToLine) {\n      var next;\n      if (unit == \"codepoint\") {\n        var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n        if (isNaN(ch)) {\n          next = null;\n        } else {\n          var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n          next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n        }\n      } else if (visually) {\n        next = moveVisually(doc.cm, lineObj, pos, dir);\n      } else {\n        next = moveLogically(lineObj, pos, dir);\n      }\n      if (next == null) {\n        if (!boundToLine && findNextLine())\n          { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n        else\n          { return false }\n      } else {\n        pos = next;\n      }\n      return true\n    }\n\n    if (unit == \"char\" || unit == \"codepoint\") {\n      moveOnce();\n    } else if (unit == \"column\") {\n      moveOnce(true);\n    } else if (unit == \"word\" || unit == \"group\") {\n      var sawType = null, group = unit == \"group\";\n      var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n      for (var first = true;; first = false) {\n        if (dir < 0 && !moveOnce(!first)) { break }\n        var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n        var type = isWordChar(cur, helper) ? \"w\"\n          : group && cur == \"\\n\" ? \"n\"\n          : !group || /\\s/.test(cur) ? null\n          : \"p\";\n        if (group && !first && !type) { type = \"s\"; }\n        if (sawType && sawType != type) {\n          if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n          break\n        }\n\n        if (type) { sawType = type; }\n        if (dir > 0 && !moveOnce(!first)) { break }\n      }\n    }\n    var result = skipAtomic(doc, pos, oldPos, origDir, true);\n    if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n    return result\n  }\n\n  // For relative vertical movement. Dir may be -1 or 1. Unit can be\n  // \"page\" or \"line\". The resulting position will have a hitSide=true\n  // property if it reached the end of the document.\n  function findPosV(cm, pos, dir, unit) {\n    var doc = cm.doc, x = pos.left, y;\n    if (unit == \"page\") {\n      var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n      var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n      y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n    } else if (unit == \"line\") {\n      y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n    }\n    var target;\n    for (;;) {\n      target = coordsChar(cm, x, y);\n      if (!target.outside) { break }\n      if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n      y += dir * 5;\n    }\n    return target\n  }\n\n  // CONTENTEDITABLE INPUT STYLE\n\n  var ContentEditableInput = function(cm) {\n    this.cm = cm;\n    this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n    this.polling = new Delayed();\n    this.composing = null;\n    this.gracePeriod = false;\n    this.readDOMTimeout = null;\n  };\n\n  ContentEditableInput.prototype.init = function (display) {\n      var this$1 = this;\n\n    var input = this, cm = input.cm;\n    var div = input.div = display.lineDiv;\n    div.contentEditable = true;\n    disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n    function belongsToInput(e) {\n      for (var t = e.target; t; t = t.parentNode) {\n        if (t == div) { return true }\n        if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n      }\n      return false\n    }\n\n    on(div, \"paste\", function (e) {\n      if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n      // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n      if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n    });\n\n    on(div, \"compositionstart\", function (e) {\n      this$1.composing = {data: e.data, done: false};\n    });\n    on(div, \"compositionupdate\", function (e) {\n      if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n    });\n    on(div, \"compositionend\", function (e) {\n      if (this$1.composing) {\n        if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n        this$1.composing.done = true;\n      }\n    });\n\n    on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n    on(div, \"input\", function () {\n      if (!this$1.composing) { this$1.readFromDOMSoon(); }\n    });\n\n    function onCopyCut(e) {\n      if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n      if (cm.somethingSelected()) {\n        setLastCopied({lineWise: false, text: cm.getSelections()});\n        if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n      } else if (!cm.options.lineWiseCopyCut) {\n        return\n      } else {\n        var ranges = copyableRanges(cm);\n        setLastCopied({lineWise: true, text: ranges.text});\n        if (e.type == \"cut\") {\n          cm.operation(function () {\n            cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n            cm.replaceSelection(\"\", null, \"cut\");\n          });\n        }\n      }\n      if (e.clipboardData) {\n        e.clipboardData.clearData();\n        var content = lastCopied.text.join(\"\\n\");\n        // iOS exposes the clipboard API, but seems to discard content inserted into it\n        e.clipboardData.setData(\"Text\", content);\n        if (e.clipboardData.getData(\"Text\") == content) {\n          e.preventDefault();\n          return\n        }\n      }\n      // Old-fashioned briefly-focus-a-textarea hack\n      var kludge = hiddenTextarea(), te = kludge.firstChild;\n      cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n      te.value = lastCopied.text.join(\"\\n\");\n      var hadFocus = activeElt();\n      selectInput(te);\n      setTimeout(function () {\n        cm.display.lineSpace.removeChild(kludge);\n        hadFocus.focus();\n        if (hadFocus == div) { input.showPrimarySelection(); }\n      }, 50);\n    }\n    on(div, \"copy\", onCopyCut);\n    on(div, \"cut\", onCopyCut);\n  };\n\n  ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n    // Label for screenreaders, accessibility\n    if(label) {\n      this.div.setAttribute('aria-label', label);\n    } else {\n      this.div.removeAttribute('aria-label');\n    }\n  };\n\n  ContentEditableInput.prototype.prepareSelection = function () {\n    var result = prepareSelection(this.cm, false);\n    result.focus = activeElt() == this.div;\n    return result\n  };\n\n  ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n    if (!info || !this.cm.display.view.length) { return }\n    if (info.focus || takeFocus) { this.showPrimarySelection(); }\n    this.showMultipleSelections(info);\n  };\n\n  ContentEditableInput.prototype.getSelection = function () {\n    return this.cm.display.wrapper.ownerDocument.getSelection()\n  };\n\n  ContentEditableInput.prototype.showPrimarySelection = function () {\n    var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n    var from = prim.from(), to = prim.to();\n\n    if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n      sel.removeAllRanges();\n      return\n    }\n\n    var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n    var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n    if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n        cmp(minPos(curAnchor, curFocus), from) == 0 &&\n        cmp(maxPos(curAnchor, curFocus), to) == 0)\n      { return }\n\n    var view = cm.display.view;\n    var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n        {node: view[0].measure.map[2], offset: 0};\n    var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n    if (!end) {\n      var measure = view[view.length - 1].measure;\n      var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n      end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n    }\n\n    if (!start || !end) {\n      sel.removeAllRanges();\n      return\n    }\n\n    var old = sel.rangeCount && sel.getRangeAt(0), rng;\n    try { rng = range(start.node, start.offset, end.offset, end.node); }\n    catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n    if (rng) {\n      if (!gecko && cm.state.focused) {\n        sel.collapse(start.node, start.offset);\n        if (!rng.collapsed) {\n          sel.removeAllRanges();\n          sel.addRange(rng);\n        }\n      } else {\n        sel.removeAllRanges();\n        sel.addRange(rng);\n      }\n      if (old && sel.anchorNode == null) { sel.addRange(old); }\n      else if (gecko) { this.startGracePeriod(); }\n    }\n    this.rememberSelection();\n  };\n\n  ContentEditableInput.prototype.startGracePeriod = function () {\n      var this$1 = this;\n\n    clearTimeout(this.gracePeriod);\n    this.gracePeriod = setTimeout(function () {\n      this$1.gracePeriod = false;\n      if (this$1.selectionChanged())\n        { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n    }, 20);\n  };\n\n  ContentEditableInput.prototype.showMultipleSelections = function (info) {\n    removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n    removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n  };\n\n  ContentEditableInput.prototype.rememberSelection = function () {\n    var sel = this.getSelection();\n    this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n    this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n  };\n\n  ContentEditableInput.prototype.selectionInEditor = function () {\n    var sel = this.getSelection();\n    if (!sel.rangeCount) { return false }\n    var node = sel.getRangeAt(0).commonAncestorContainer;\n    return contains(this.div, node)\n  };\n\n  ContentEditableInput.prototype.focus = function () {\n    if (this.cm.options.readOnly != \"nocursor\") {\n      if (!this.selectionInEditor() || activeElt() != this.div)\n        { this.showSelection(this.prepareSelection(), true); }\n      this.div.focus();\n    }\n  };\n  ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n  ContentEditableInput.prototype.getField = function () { return this.div };\n\n  ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n  ContentEditableInput.prototype.receivedFocus = function () {\n      var this$1 = this;\n\n    var input = this;\n    if (this.selectionInEditor())\n      { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n    else\n      { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n    function poll() {\n      if (input.cm.state.focused) {\n        input.pollSelection();\n        input.polling.set(input.cm.options.pollInterval, poll);\n      }\n    }\n    this.polling.set(this.cm.options.pollInterval, poll);\n  };\n\n  ContentEditableInput.prototype.selectionChanged = function () {\n    var sel = this.getSelection();\n    return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n      sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n  };\n\n  ContentEditableInput.prototype.pollSelection = function () {\n    if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n    var sel = this.getSelection(), cm = this.cm;\n    // On Android Chrome (version 56, at least), backspacing into an\n    // uneditable block element will put the cursor in that element,\n    // and then, because it's not editable, hide the virtual keyboard.\n    // Because Android doesn't allow us to actually detect backspace\n    // presses in a sane way, this code checks for when that happens\n    // and simulates a backspace press in this case.\n    if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n      this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n      this.blur();\n      this.focus();\n      return\n    }\n    if (this.composing) { return }\n    this.rememberSelection();\n    var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n    var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n    if (anchor && head) { runInOp(cm, function () {\n      setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n      if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n    }); }\n  };\n\n  ContentEditableInput.prototype.pollContent = function () {\n    if (this.readDOMTimeout != null) {\n      clearTimeout(this.readDOMTimeout);\n      this.readDOMTimeout = null;\n    }\n\n    var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n    var from = sel.from(), to = sel.to();\n    if (from.ch == 0 && from.line > cm.firstLine())\n      { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n    if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n      { to = Pos(to.line + 1, 0); }\n    if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n    var fromIndex, fromLine, fromNode;\n    if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n      fromLine = lineNo(display.view[0].line);\n      fromNode = display.view[0].node;\n    } else {\n      fromLine = lineNo(display.view[fromIndex].line);\n      fromNode = display.view[fromIndex - 1].node.nextSibling;\n    }\n    var toIndex = findViewIndex(cm, to.line);\n    var toLine, toNode;\n    if (toIndex == display.view.length - 1) {\n      toLine = display.viewTo - 1;\n      toNode = display.lineDiv.lastChild;\n    } else {\n      toLine = lineNo(display.view[toIndex + 1].line) - 1;\n      toNode = display.view[toIndex + 1].node.previousSibling;\n    }\n\n    if (!fromNode) { return false }\n    var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n    var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n    while (newText.length > 1 && oldText.length > 1) {\n      if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n      else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n      else { break }\n    }\n\n    var cutFront = 0, cutEnd = 0;\n    var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n    while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n      { ++cutFront; }\n    var newBot = lst(newText), oldBot = lst(oldText);\n    var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n                             oldBot.length - (oldText.length == 1 ? cutFront : 0));\n    while (cutEnd < maxCutEnd &&\n           newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n      { ++cutEnd; }\n    // Try to move start of change to start of selection if ambiguous\n    if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n      while (cutFront && cutFront > from.ch &&\n             newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n        cutFront--;\n        cutEnd++;\n      }\n    }\n\n    newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n    newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n    var chFrom = Pos(fromLine, cutFront);\n    var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n    if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n      replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n      return true\n    }\n  };\n\n  ContentEditableInput.prototype.ensurePolled = function () {\n    this.forceCompositionEnd();\n  };\n  ContentEditableInput.prototype.reset = function () {\n    this.forceCompositionEnd();\n  };\n  ContentEditableInput.prototype.forceCompositionEnd = function () {\n    if (!this.composing) { return }\n    clearTimeout(this.readDOMTimeout);\n    this.composing = null;\n    this.updateFromDOM();\n    this.div.blur();\n    this.div.focus();\n  };\n  ContentEditableInput.prototype.readFromDOMSoon = function () {\n      var this$1 = this;\n\n    if (this.readDOMTimeout != null) { return }\n    this.readDOMTimeout = setTimeout(function () {\n      this$1.readDOMTimeout = null;\n      if (this$1.composing) {\n        if (this$1.composing.done) { this$1.composing = null; }\n        else { return }\n      }\n      this$1.updateFromDOM();\n    }, 80);\n  };\n\n  ContentEditableInput.prototype.updateFromDOM = function () {\n      var this$1 = this;\n\n    if (this.cm.isReadOnly() || !this.pollContent())\n      { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n  };\n\n  ContentEditableInput.prototype.setUneditable = function (node) {\n    node.contentEditable = \"false\";\n  };\n\n  ContentEditableInput.prototype.onKeyPress = function (e) {\n    if (e.charCode == 0 || this.composing) { return }\n    e.preventDefault();\n    if (!this.cm.isReadOnly())\n      { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n  };\n\n  ContentEditableInput.prototype.readOnlyChanged = function (val) {\n    this.div.contentEditable = String(val != \"nocursor\");\n  };\n\n  ContentEditableInput.prototype.onContextMenu = function () {};\n  ContentEditableInput.prototype.resetPosition = function () {};\n\n  ContentEditableInput.prototype.needsContentAttribute = true;\n\n  function posToDOM(cm, pos) {\n    var view = findViewForLine(cm, pos.line);\n    if (!view || view.hidden) { return null }\n    var line = getLine(cm.doc, pos.line);\n    var info = mapFromLineView(view, line, pos.line);\n\n    var order = getOrder(line, cm.doc.direction), side = \"left\";\n    if (order) {\n      var partPos = getBidiPartAt(order, pos.ch);\n      side = partPos % 2 ? \"right\" : \"left\";\n    }\n    var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n    result.offset = result.collapse == \"right\" ? result.end : result.start;\n    return result\n  }\n\n  function isInGutter(node) {\n    for (var scan = node; scan; scan = scan.parentNode)\n      { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n    return false\n  }\n\n  function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n  function domTextBetween(cm, from, to, fromLine, toLine) {\n    var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n    function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n    function close() {\n      if (closing) {\n        text += lineSep;\n        if (extraLinebreak) { text += lineSep; }\n        closing = extraLinebreak = false;\n      }\n    }\n    function addText(str) {\n      if (str) {\n        close();\n        text += str;\n      }\n    }\n    function walk(node) {\n      if (node.nodeType == 1) {\n        var cmText = node.getAttribute(\"cm-text\");\n        if (cmText) {\n          addText(cmText);\n          return\n        }\n        var markerID = node.getAttribute(\"cm-marker\"), range;\n        if (markerID) {\n          var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n          if (found.length && (range = found[0].find(0)))\n            { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n          return\n        }\n        if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n        var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n        if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n        if (isBlock) { close(); }\n        for (var i = 0; i < node.childNodes.length; i++)\n          { walk(node.childNodes[i]); }\n\n        if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n        if (isBlock) { closing = true; }\n      } else if (node.nodeType == 3) {\n        addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n      }\n    }\n    for (;;) {\n      walk(from);\n      if (from == to) { break }\n      from = from.nextSibling;\n      extraLinebreak = false;\n    }\n    return text\n  }\n\n  function domToPos(cm, node, offset) {\n    var lineNode;\n    if (node == cm.display.lineDiv) {\n      lineNode = cm.display.lineDiv.childNodes[offset];\n      if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n      node = null; offset = 0;\n    } else {\n      for (lineNode = node;; lineNode = lineNode.parentNode) {\n        if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n        if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n      }\n    }\n    for (var i = 0; i < cm.display.view.length; i++) {\n      var lineView = cm.display.view[i];\n      if (lineView.node == lineNode)\n        { return locateNodeInLineView(lineView, node, offset) }\n    }\n  }\n\n  function locateNodeInLineView(lineView, node, offset) {\n    var wrapper = lineView.text.firstChild, bad = false;\n    if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n    if (node == wrapper) {\n      bad = true;\n      node = wrapper.childNodes[offset];\n      offset = 0;\n      if (!node) {\n        var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n        return badPos(Pos(lineNo(line), line.text.length), bad)\n      }\n    }\n\n    var textNode = node.nodeType == 3 ? node : null, topNode = node;\n    if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n      textNode = node.firstChild;\n      if (offset) { offset = textNode.nodeValue.length; }\n    }\n    while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n    var measure = lineView.measure, maps = measure.maps;\n\n    function find(textNode, topNode, offset) {\n      for (var i = -1; i < (maps ? maps.length : 0); i++) {\n        var map = i < 0 ? measure.map : maps[i];\n        for (var j = 0; j < map.length; j += 3) {\n          var curNode = map[j + 2];\n          if (curNode == textNode || curNode == topNode) {\n            var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n            var ch = map[j] + offset;\n            if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n            return Pos(line, ch)\n          }\n        }\n      }\n    }\n    var found = find(textNode, topNode, offset);\n    if (found) { return badPos(found, bad) }\n\n    // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n    for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n      found = find(after, after.firstChild, 0);\n      if (found)\n        { return badPos(Pos(found.line, found.ch - dist), bad) }\n      else\n        { dist += after.textContent.length; }\n    }\n    for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n      found = find(before, before.firstChild, -1);\n      if (found)\n        { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n      else\n        { dist$1 += before.textContent.length; }\n    }\n  }\n\n  // TEXTAREA INPUT STYLE\n\n  var TextareaInput = function(cm) {\n    this.cm = cm;\n    // See input.poll and input.reset\n    this.prevInput = \"\";\n\n    // Flag that indicates whether we expect input to appear real soon\n    // now (after some event like 'keypress' or 'input') and are\n    // polling intensively.\n    this.pollingFast = false;\n    // Self-resetting timeout for the poller\n    this.polling = new Delayed();\n    // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n    this.hasSelection = false;\n    this.composing = null;\n  };\n\n  TextareaInput.prototype.init = function (display) {\n      var this$1 = this;\n\n    var input = this, cm = this.cm;\n    this.createField(display);\n    var te = this.textarea;\n\n    display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n    // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n    if (ios) { te.style.width = \"0px\"; }\n\n    on(te, \"input\", function () {\n      if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n      input.poll();\n    });\n\n    on(te, \"paste\", function (e) {\n      if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n      cm.state.pasteIncoming = +new Date;\n      input.fastPoll();\n    });\n\n    function prepareCopyCut(e) {\n      if (signalDOMEvent(cm, e)) { return }\n      if (cm.somethingSelected()) {\n        setLastCopied({lineWise: false, text: cm.getSelections()});\n      } else if (!cm.options.lineWiseCopyCut) {\n        return\n      } else {\n        var ranges = copyableRanges(cm);\n        setLastCopied({lineWise: true, text: ranges.text});\n        if (e.type == \"cut\") {\n          cm.setSelections(ranges.ranges, null, sel_dontScroll);\n        } else {\n          input.prevInput = \"\";\n          te.value = ranges.text.join(\"\\n\");\n          selectInput(te);\n        }\n      }\n      if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n    }\n    on(te, \"cut\", prepareCopyCut);\n    on(te, \"copy\", prepareCopyCut);\n\n    on(display.scroller, \"paste\", function (e) {\n      if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n      if (!te.dispatchEvent) {\n        cm.state.pasteIncoming = +new Date;\n        input.focus();\n        return\n      }\n\n      // Pass the `paste` event to the textarea so it's handled by its event listener.\n      var event = new Event(\"paste\");\n      event.clipboardData = e.clipboardData;\n      te.dispatchEvent(event);\n    });\n\n    // Prevent normal selection in the editor (we handle our own)\n    on(display.lineSpace, \"selectstart\", function (e) {\n      if (!eventInWidget(display, e)) { e_preventDefault(e); }\n    });\n\n    on(te, \"compositionstart\", function () {\n      var start = cm.getCursor(\"from\");\n      if (input.composing) { input.composing.range.clear(); }\n      input.composing = {\n        start: start,\n        range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n      };\n    });\n    on(te, \"compositionend\", function () {\n      if (input.composing) {\n        input.poll();\n        input.composing.range.clear();\n        input.composing = null;\n      }\n    });\n  };\n\n  TextareaInput.prototype.createField = function (_display) {\n    // Wraps and hides input textarea\n    this.wrapper = hiddenTextarea();\n    // The semihidden textarea that is focused when the editor is\n    // focused, and receives input.\n    this.textarea = this.wrapper.firstChild;\n  };\n\n  TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n    // Label for screenreaders, accessibility\n    if(label) {\n      this.textarea.setAttribute('aria-label', label);\n    } else {\n      this.textarea.removeAttribute('aria-label');\n    }\n  };\n\n  TextareaInput.prototype.prepareSelection = function () {\n    // Redraw the selection and/or cursor\n    var cm = this.cm, display = cm.display, doc = cm.doc;\n    var result = prepareSelection(cm);\n\n    // Move the hidden textarea near the cursor to prevent scrolling artifacts\n    if (cm.options.moveInputWithCursor) {\n      var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n      var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n      result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n                                          headPos.top + lineOff.top - wrapOff.top));\n      result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n                                           headPos.left + lineOff.left - wrapOff.left));\n    }\n\n    return result\n  };\n\n  TextareaInput.prototype.showSelection = function (drawn) {\n    var cm = this.cm, display = cm.display;\n    removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n    removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n    if (drawn.teTop != null) {\n      this.wrapper.style.top = drawn.teTop + \"px\";\n      this.wrapper.style.left = drawn.teLeft + \"px\";\n    }\n  };\n\n  // Reset the input to correspond to the selection (or to be empty,\n  // when not typing and nothing is selected)\n  TextareaInput.prototype.reset = function (typing) {\n    if (this.contextMenuPending || this.composing) { return }\n    var cm = this.cm;\n    if (cm.somethingSelected()) {\n      this.prevInput = \"\";\n      var content = cm.getSelection();\n      this.textarea.value = content;\n      if (cm.state.focused) { selectInput(this.textarea); }\n      if (ie && ie_version >= 9) { this.hasSelection = content; }\n    } else if (!typing) {\n      this.prevInput = this.textarea.value = \"\";\n      if (ie && ie_version >= 9) { this.hasSelection = null; }\n    }\n  };\n\n  TextareaInput.prototype.getField = function () { return this.textarea };\n\n  TextareaInput.prototype.supportsTouch = function () { return false };\n\n  TextareaInput.prototype.focus = function () {\n    if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n      try { this.textarea.focus(); }\n      catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n    }\n  };\n\n  TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n  TextareaInput.prototype.resetPosition = function () {\n    this.wrapper.style.top = this.wrapper.style.left = 0;\n  };\n\n  TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n  // Poll for input changes, using the normal rate of polling. This\n  // runs as long as the editor is focused.\n  TextareaInput.prototype.slowPoll = function () {\n      var this$1 = this;\n\n    if (this.pollingFast) { return }\n    this.polling.set(this.cm.options.pollInterval, function () {\n      this$1.poll();\n      if (this$1.cm.state.focused) { this$1.slowPoll(); }\n    });\n  };\n\n  // When an event has just come in that is likely to add or change\n  // something in the input textarea, we poll faster, to ensure that\n  // the change appears on the screen quickly.\n  TextareaInput.prototype.fastPoll = function () {\n    var missed = false, input = this;\n    input.pollingFast = true;\n    function p() {\n      var changed = input.poll();\n      if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n      else {input.pollingFast = false; input.slowPoll();}\n    }\n    input.polling.set(20, p);\n  };\n\n  // Read input from the textarea, and update the document to match.\n  // When something is selected, it is present in the textarea, and\n  // selected (unless it is huge, in which case a placeholder is\n  // used). When nothing is selected, the cursor sits after previously\n  // seen text (can be empty), which is stored in prevInput (we must\n  // not reset the textarea when typing, because that breaks IME).\n  TextareaInput.prototype.poll = function () {\n      var this$1 = this;\n\n    var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n    // Since this is called a *lot*, try to bail out as cheaply as\n    // possible when it is clear that nothing happened. hasSelection\n    // will be the case when there is a lot of text in the textarea,\n    // in which case reading its value would be expensive.\n    if (this.contextMenuPending || !cm.state.focused ||\n        (hasSelection(input) && !prevInput && !this.composing) ||\n        cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n      { return false }\n\n    var text = input.value;\n    // If nothing changed, bail.\n    if (text == prevInput && !cm.somethingSelected()) { return false }\n    // Work around nonsensical selection resetting in IE9/10, and\n    // inexplicable appearance of private area unicode characters on\n    // some key combos in Mac (#2689).\n    if (ie && ie_version >= 9 && this.hasSelection === text ||\n        mac && /[\\uf700-\\uf7ff]/.test(text)) {\n      cm.display.input.reset();\n      return false\n    }\n\n    if (cm.doc.sel == cm.display.selForContextMenu) {\n      var first = text.charCodeAt(0);\n      if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n      if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n    }\n    // Find the part of the input that is actually new\n    var same = 0, l = Math.min(prevInput.length, text.length);\n    while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n    runInOp(cm, function () {\n      applyTextInput(cm, text.slice(same), prevInput.length - same,\n                     null, this$1.composing ? \"*compose\" : null);\n\n      // Don't leave long text in the textarea, since it makes further polling slow\n      if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n      else { this$1.prevInput = text; }\n\n      if (this$1.composing) {\n        this$1.composing.range.clear();\n        this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n                                           {className: \"CodeMirror-composing\"});\n      }\n    });\n    return true\n  };\n\n  TextareaInput.prototype.ensurePolled = function () {\n    if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n  };\n\n  TextareaInput.prototype.onKeyPress = function () {\n    if (ie && ie_version >= 9) { this.hasSelection = null; }\n    this.fastPoll();\n  };\n\n  TextareaInput.prototype.onContextMenu = function (e) {\n    var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n    if (input.contextMenuPending) { input.contextMenuPending(); }\n    var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n    if (!pos || presto) { return } // Opera is difficult.\n\n    // Reset the current text selection only if the click is done outside of the selection\n    // and 'resetSelectionOnContextMenu' option is true.\n    var reset = cm.options.resetSelectionOnContextMenu;\n    if (reset && cm.doc.sel.contains(pos) == -1)\n      { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n    var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n    var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n    input.wrapper.style.cssText = \"position: static\";\n    te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n      top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n      z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n    var oldScrollY;\n    if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n    display.input.focus();\n    if (webkit) { window.scrollTo(null, oldScrollY); }\n    display.input.reset();\n    // Adds \"Select all\" to context menu in FF\n    if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n    input.contextMenuPending = rehide;\n    display.selForContextMenu = cm.doc.sel;\n    clearTimeout(display.detectingSelectAll);\n\n    // Select-all will be greyed out if there's nothing to select, so\n    // this adds a zero-width space so that we can later check whether\n    // it got selected.\n    function prepareSelectAllHack() {\n      if (te.selectionStart != null) {\n        var selected = cm.somethingSelected();\n        var extval = \"\\u200b\" + (selected ? te.value : \"\");\n        te.value = \"\\u21da\"; // Used to catch context-menu undo\n        te.value = extval;\n        input.prevInput = selected ? \"\" : \"\\u200b\";\n        te.selectionStart = 1; te.selectionEnd = extval.length;\n        // Re-set this, in case some other handler touched the\n        // selection in the meantime.\n        display.selForContextMenu = cm.doc.sel;\n      }\n    }\n    function rehide() {\n      if (input.contextMenuPending != rehide) { return }\n      input.contextMenuPending = false;\n      input.wrapper.style.cssText = oldWrapperCSS;\n      te.style.cssText = oldCSS;\n      if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n      // Try to detect the user choosing select-all\n      if (te.selectionStart != null) {\n        if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n        var i = 0, poll = function () {\n          if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n              te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n            operation(cm, selectAll)(cm);\n          } else if (i++ < 10) {\n            display.detectingSelectAll = setTimeout(poll, 500);\n          } else {\n            display.selForContextMenu = null;\n            display.input.reset();\n          }\n        };\n        display.detectingSelectAll = setTimeout(poll, 200);\n      }\n    }\n\n    if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n    if (captureRightClick) {\n      e_stop(e);\n      var mouseup = function () {\n        off(window, \"mouseup\", mouseup);\n        setTimeout(rehide, 20);\n      };\n      on(window, \"mouseup\", mouseup);\n    } else {\n      setTimeout(rehide, 50);\n    }\n  };\n\n  TextareaInput.prototype.readOnlyChanged = function (val) {\n    if (!val) { this.reset(); }\n    this.textarea.disabled = val == \"nocursor\";\n    this.textarea.readOnly = !!val;\n  };\n\n  TextareaInput.prototype.setUneditable = function () {};\n\n  TextareaInput.prototype.needsContentAttribute = false;\n\n  function fromTextArea(textarea, options) {\n    options = options ? copyObj(options) : {};\n    options.value = textarea.value;\n    if (!options.tabindex && textarea.tabIndex)\n      { options.tabindex = textarea.tabIndex; }\n    if (!options.placeholder && textarea.placeholder)\n      { options.placeholder = textarea.placeholder; }\n    // Set autofocus to true if this textarea is focused, or if it has\n    // autofocus and no other element is focused.\n    if (options.autofocus == null) {\n      var hasFocus = activeElt();\n      options.autofocus = hasFocus == textarea ||\n        textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n    }\n\n    function save() {textarea.value = cm.getValue();}\n\n    var realSubmit;\n    if (textarea.form) {\n      on(textarea.form, \"submit\", save);\n      // Deplorable hack to make the submit method do the right thing.\n      if (!options.leaveSubmitMethodAlone) {\n        var form = textarea.form;\n        realSubmit = form.submit;\n        try {\n          var wrappedSubmit = form.submit = function () {\n            save();\n            form.submit = realSubmit;\n            form.submit();\n            form.submit = wrappedSubmit;\n          };\n        } catch(e) {}\n      }\n    }\n\n    options.finishInit = function (cm) {\n      cm.save = save;\n      cm.getTextArea = function () { return textarea; };\n      cm.toTextArea = function () {\n        cm.toTextArea = isNaN; // Prevent this from being ran twice\n        save();\n        textarea.parentNode.removeChild(cm.getWrapperElement());\n        textarea.style.display = \"\";\n        if (textarea.form) {\n          off(textarea.form, \"submit\", save);\n          if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n            { textarea.form.submit = realSubmit; }\n        }\n      };\n    };\n\n    textarea.style.display = \"none\";\n    var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n      options);\n    return cm\n  }\n\n  function addLegacyProps(CodeMirror) {\n    CodeMirror.off = off;\n    CodeMirror.on = on;\n    CodeMirror.wheelEventPixels = wheelEventPixels;\n    CodeMirror.Doc = Doc;\n    CodeMirror.splitLines = splitLinesAuto;\n    CodeMirror.countColumn = countColumn;\n    CodeMirror.findColumn = findColumn;\n    CodeMirror.isWordChar = isWordCharBasic;\n    CodeMirror.Pass = Pass;\n    CodeMirror.signal = signal;\n    CodeMirror.Line = Line;\n    CodeMirror.changeEnd = changeEnd;\n    CodeMirror.scrollbarModel = scrollbarModel;\n    CodeMirror.Pos = Pos;\n    CodeMirror.cmpPos = cmp;\n    CodeMirror.modes = modes;\n    CodeMirror.mimeModes = mimeModes;\n    CodeMirror.resolveMode = resolveMode;\n    CodeMirror.getMode = getMode;\n    CodeMirror.modeExtensions = modeExtensions;\n    CodeMirror.extendMode = extendMode;\n    CodeMirror.copyState = copyState;\n    CodeMirror.startState = startState;\n    CodeMirror.innerMode = innerMode;\n    CodeMirror.commands = commands;\n    CodeMirror.keyMap = keyMap;\n    CodeMirror.keyName = keyName;\n    CodeMirror.isModifierKey = isModifierKey;\n    CodeMirror.lookupKey = lookupKey;\n    CodeMirror.normalizeKeyMap = normalizeKeyMap;\n    CodeMirror.StringStream = StringStream;\n    CodeMirror.SharedTextMarker = SharedTextMarker;\n    CodeMirror.TextMarker = TextMarker;\n    CodeMirror.LineWidget = LineWidget;\n    CodeMirror.e_preventDefault = e_preventDefault;\n    CodeMirror.e_stopPropagation = e_stopPropagation;\n    CodeMirror.e_stop = e_stop;\n    CodeMirror.addClass = addClass;\n    CodeMirror.contains = contains;\n    CodeMirror.rmClass = rmClass;\n    CodeMirror.keyNames = keyNames;\n  }\n\n  // EDITOR CONSTRUCTOR\n\n  defineOptions(CodeMirror);\n\n  addEditorMethods(CodeMirror);\n\n  // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n  var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n  for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n    { CodeMirror.prototype[prop] = (function(method) {\n      return function() {return method.apply(this.doc, arguments)}\n    })(Doc.prototype[prop]); } }\n\n  eventMixin(Doc);\n  CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n  // Extra arguments are stored as the mode's dependencies, which is\n  // used by (legacy) mechanisms like loadmode.js to automatically\n  // load a mode. (Preferred mechanism is the require/define calls.)\n  CodeMirror.defineMode = function(name/*, mode, …*/) {\n    if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n    defineMode.apply(this, arguments);\n  };\n\n  CodeMirror.defineMIME = defineMIME;\n\n  // Minimal default mode.\n  CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n  CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n  // EXTENSIONS\n\n  CodeMirror.defineExtension = function (name, func) {\n    CodeMirror.prototype[name] = func;\n  };\n  CodeMirror.defineDocExtension = function (name, func) {\n    Doc.prototype[name] = func;\n  };\n\n  CodeMirror.fromTextArea = fromTextArea;\n\n  addLegacyProps(CodeMirror);\n\n  CodeMirror.version = \"5.65.3\";\n\n  return CodeMirror;\n\n})\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\nexport default (function(CodeMirror) {\n  CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n    var prev = old && old != CodeMirror.Init;\n    if (val && !prev) {\n      cm.on(\"blur\", onBlur);\n      cm.on(\"change\", onChange);\n      cm.on(\"swapDoc\", onChange);\n      CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n      onChange(cm);\n    } else if (!val && prev) {\n      cm.off(\"blur\", onBlur);\n      cm.off(\"change\", onChange);\n      cm.off(\"swapDoc\", onChange);\n      CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n      clearPlaceholder(cm);\n      var wrapper = cm.getWrapperElement();\n      wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n    }\n\n    if (val && !cm.hasFocus()) onBlur(cm);\n  });\n\n  function clearPlaceholder(cm) {\n    if (cm.state.placeholder) {\n      cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n      cm.state.placeholder = null;\n    }\n  }\n  function setPlaceholder(cm) {\n    clearPlaceholder(cm);\n    var elt = cm.state.placeholder = document.createElement(\"pre\");\n    elt.style.cssText = \"height: 0; overflow: visible\";\n    elt.style.direction = cm.getOption(\"direction\");\n    elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n    var placeHolder = cm.getOption(\"placeholder\")\n    if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n    elt.appendChild(placeHolder)\n    cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n  }\n\n  function onComposition(cm) {\n    setTimeout(function() {\n      var empty = false\n      if (cm.lineCount() == 1) {\n        var input = cm.getInputField()\n        empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n          : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n      }\n      if (empty) setPlaceholder(cm)\n      else clearPlaceholder(cm)\n    }, 20)\n  }\n\n  function onBlur(cm) {\n    if (isEmpty(cm)) setPlaceholder(cm);\n  }\n  function onChange(cm) {\n    var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n    wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n    if (empty) setPlaceholder(cm);\n    else clearPlaceholder(cm);\n  }\n\n  function isEmpty(cm) {\n    return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n  }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\nexport default (function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n  var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n  var htmlModeMissing = htmlMode.name == \"null\"\n\n  function getMode(name) {\n    if (CodeMirror.findModeByName) {\n      var found = CodeMirror.findModeByName(name);\n      if (found) name = found.mime || found.mimes[0];\n    }\n    var mode = CodeMirror.getMode(cmCfg, name);\n    return mode.name == \"null\" ? null : mode;\n  }\n\n  // Should characters that affect highlighting be highlighted separate?\n  // Does not include characters that will be output (such as `1.` and `-` for lists)\n  if (modeCfg.highlightFormatting === undefined)\n    modeCfg.highlightFormatting = false;\n\n  // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n  // Excess `>` will emit `error` token.\n  if (modeCfg.maxBlockquoteDepth === undefined)\n    modeCfg.maxBlockquoteDepth = 0;\n\n  // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n  if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n  // Turn on strikethrough syntax\n  if (modeCfg.strikethrough === undefined)\n    modeCfg.strikethrough = false;\n\n  if (modeCfg.emoji === undefined)\n    modeCfg.emoji = false;\n\n  if (modeCfg.fencedCodeBlockHighlighting === undefined)\n    modeCfg.fencedCodeBlockHighlighting = true;\n\n  if (modeCfg.fencedCodeBlockDefaultMode === undefined)\n    modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\n\n  if (modeCfg.xml === undefined)\n    modeCfg.xml = true;\n\n  // Allow token types to be overridden by user-provided token types.\n  if (modeCfg.tokenTypeOverrides === undefined)\n    modeCfg.tokenTypeOverrides = {};\n\n  var tokenTypes = {\n    header: \"header\",\n    code: \"comment\",\n    quote: \"quote\",\n    list1: \"variable-2\",\n    list2: \"variable-3\",\n    list3: \"keyword\",\n    hr: \"hr\",\n    image: \"image\",\n    imageAltText: \"image-alt-text\",\n    imageMarker: \"image-marker\",\n    formatting: \"formatting\",\n    linkInline: \"link\",\n    linkEmail: \"link\",\n    linkText: \"link\",\n    linkHref: \"string\",\n    em: \"em\",\n    strong: \"strong\",\n    strikethrough: \"strikethrough\",\n    emoji: \"builtin\"\n  };\n\n  for (var tokenType in tokenTypes) {\n    if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n      tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n    }\n  }\n\n  var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n  ,   listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n  ,   taskListRE = /^\\[(x| )\\](?=\\s)/i // Must follow listRE\n  ,   atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n  ,   setextHeaderRE = /^ {0,3}(?:\\={1,}|-{2,})\\s*$/\n  ,   textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~:]+/\n  ,   fencedCodeRE = /^(~~~+|```+)[ \\t]*([\\w\\/+#-]*)[^\\n`]*$/\n  ,   linkDefRE = /^\\s*\\[[^\\]]+?\\]:.*$/ // naive link-definition\n  ,   punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\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]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/\n  ,   expandedTab = \"    \" // CommonMark specifies tab as 4 spaces\n\n  function switchInline(stream, state, f) {\n    state.f = state.inline = f;\n    return f(stream, state);\n  }\n\n  function switchBlock(stream, state, f) {\n    state.f = state.block = f;\n    return f(stream, state);\n  }\n\n  function lineIsEmpty(line) {\n    return !line || !/\\S/.test(line.string)\n  }\n\n  // Blocks\n\n  function blankLine(state) {\n    // Reset linkTitle state\n    state.linkTitle = false;\n    state.linkHref = false;\n    state.linkText = false;\n    // Reset EM state\n    state.em = false;\n    // Reset STRONG state\n    state.strong = false;\n    // Reset strikethrough state\n    state.strikethrough = false;\n    // Reset state.quote\n    state.quote = 0;\n    // Reset state.indentedCode\n    state.indentedCode = false;\n    if (state.f == htmlBlock) {\n      var exit = htmlModeMissing\n      if (!exit) {\n        var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n        exit = inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n          (!inner.state.context && inner.state.tokenize.isInText)\n      }\n      if (exit) {\n        state.f = inlineNormal;\n        state.block = blockNormal;\n        state.htmlState = null;\n      }\n    }\n    // Reset state.trailingSpace\n    state.trailingSpace = 0;\n    state.trailingSpaceNewLine = false;\n    // Mark this line as blank\n    state.prevLine = state.thisLine\n    state.thisLine = {stream: null}\n    return null;\n  }\n\n  function blockNormal(stream, state) {\n    var firstTokenOnLine = stream.column() === state.indentation;\n    var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);\n    var prevLineIsIndentedCode = state.indentedCode;\n    var prevLineIsHr = state.prevLine.hr;\n    var prevLineIsList = state.list !== false;\n    var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3;\n\n    state.indentedCode = false;\n\n    var lineIndentation = state.indentation;\n    // compute once per line (on first token)\n    if (state.indentationDiff === null) {\n      state.indentationDiff = state.indentation;\n      if (prevLineIsList) {\n        state.list = null;\n        // While this list item's marker's indentation is less than the deepest\n        //  list item's content's indentation,pop the deepest list item\n        //  indentation off the stack, and update block indentation state\n        while (lineIndentation < state.listStack[state.listStack.length - 1]) {\n          state.listStack.pop();\n          if (state.listStack.length) {\n            state.indentation = state.listStack[state.listStack.length - 1];\n          // less than the first list's indent -> the line is no longer a list\n          } else {\n            state.list = false;\n          }\n        }\n        if (state.list !== false) {\n          state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1]\n        }\n      }\n    }\n\n    // not comprehensive (currently only for setext detection purposes)\n    var allowsInlineContinuation = (\n        !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header &&\n        (!prevLineIsList || !prevLineIsIndentedCode) &&\n        !state.prevLine.fencedCodeEnd\n    );\n\n    var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) &&\n      state.indentation <= maxNonCodeIndentation && stream.match(hrRE);\n\n    var match = null;\n    if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd ||\n         state.prevLine.header || prevLineLineIsEmpty)) {\n      stream.skipToEnd();\n      state.indentedCode = true;\n      return tokenTypes.code;\n    } else if (stream.eatSpace()) {\n      return null;\n    } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n      state.quote = 0;\n      state.header = match[1].length;\n      state.thisLine.header = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) {\n      state.quote = firstTokenOnLine ? 1 : state.quote + 1;\n      if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n      stream.eatSpace();\n      return getType(state);\n    } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) {\n      var listType = match[1] ? \"ol\" : \"ul\";\n\n      state.indentation = lineIndentation + stream.current().length;\n      state.list = true;\n      state.quote = 0;\n\n      // Add this list item's content's indentation to the stack\n      state.listStack.push(state.indentation);\n      // Reset inline styles which shouldn't propagate across list items\n      state.em = false;\n      state.strong = false;\n      state.code = false;\n      state.strikethrough = false;\n\n      if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n        state.taskList = true;\n      }\n      state.f = state.inline;\n      if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n      return getType(state);\n    } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) {\n      state.quote = 0;\n      state.fencedEndRE = new RegExp(match[1] + \"+ *$\");\n      // try switching mode\n      state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode );\n      if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n      state.f = state.block = local;\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      state.code = -1\n      return getType(state);\n    // SETEXT has lowest block-scope precedence after HR, so check it after\n    //  the others (code, blockquote, list...)\n    } else if (\n      // if setext set, indicates line after ---/===\n      state.setext || (\n        // line before ---/===\n        (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false &&\n        !state.code && !isHr && !linkDefRE.test(stream.string) &&\n        (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE))\n      )\n    ) {\n      if ( !state.setext ) {\n        state.header = match[0].charAt(0) == '=' ? 1 : 2;\n        state.setext = state.header;\n      } else {\n        state.header = state.setext;\n        // has no effect on type so we can reset it now\n        state.setext = 0;\n        stream.skipToEnd();\n        if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      }\n      state.thisLine.header = true;\n      state.f = state.inline;\n      return getType(state);\n    } else if (isHr) {\n      stream.skipToEnd();\n      state.hr = true;\n      state.thisLine.hr = true;\n      return tokenTypes.hr;\n    } else if (stream.peek() === '[') {\n      return switchInline(stream, state, footnoteLink);\n    }\n\n    return switchInline(stream, state, state.inline);\n  }\n\n  function htmlBlock(stream, state) {\n    var style = htmlMode.token(stream, state.htmlState);\n    if (!htmlModeMissing) {\n      var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n      if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n           (!inner.state.context && inner.state.tokenize.isInText)) ||\n          (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n        state.f = inlineNormal;\n        state.block = blockNormal;\n        state.htmlState = null;\n      }\n    }\n    return style;\n  }\n\n  function local(stream, state) {\n    var currListInd = state.listStack[state.listStack.length - 1] || 0;\n    var hasExitedList = state.indentation < currListInd;\n    var maxFencedEndInd = currListInd + 3;\n    if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) {\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      var returnType;\n      if (!hasExitedList) returnType = getType(state)\n      state.localMode = state.localState = null;\n      state.block = blockNormal;\n      state.f = inlineNormal;\n      state.fencedEndRE = null;\n      state.code = 0\n      state.thisLine.fencedCodeEnd = true;\n      if (hasExitedList) return switchBlock(stream, state, state.block);\n      return returnType;\n    } else if (state.localMode) {\n      return state.localMode.token(stream, state.localState);\n    } else {\n      stream.skipToEnd();\n      return tokenTypes.code;\n    }\n  }\n\n  // Inline\n  function getType(state) {\n    var styles = [];\n\n    if (state.formatting) {\n      styles.push(tokenTypes.formatting);\n\n      if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n      for (var i = 0; i < state.formatting.length; i++) {\n        styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n        if (state.formatting[i] === \"header\") {\n          styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n        }\n\n        // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n        // Add `error` instead if the maximum blockquote nesting depth is passed\n        if (state.formatting[i] === \"quote\") {\n          if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n            styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n          } else {\n            styles.push(\"error\");\n          }\n        }\n      }\n    }\n\n    if (state.taskOpen) {\n      styles.push(\"meta\");\n      return styles.length ? styles.join(' ') : null;\n    }\n    if (state.taskClosed) {\n      styles.push(\"property\");\n      return styles.length ? styles.join(' ') : null;\n    }\n\n    if (state.linkHref) {\n      styles.push(tokenTypes.linkHref, \"url\");\n    } else { // Only apply inline styles to non-url text\n      if (state.strong) { styles.push(tokenTypes.strong); }\n      if (state.em) { styles.push(tokenTypes.em); }\n      if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n      if (state.emoji) { styles.push(tokenTypes.emoji); }\n      if (state.linkText) { styles.push(tokenTypes.linkText); }\n      if (state.code) { styles.push(tokenTypes.code); }\n      if (state.image) { styles.push(tokenTypes.image); }\n      if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n      if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n    }\n\n    if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n    if (state.quote) {\n      styles.push(tokenTypes.quote);\n\n      // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n      if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n        styles.push(tokenTypes.quote + \"-\" + state.quote);\n      } else {\n        styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n      }\n    }\n\n    if (state.list !== false) {\n      var listMod = (state.listStack.length - 1) % 3;\n      if (!listMod) {\n        styles.push(tokenTypes.list1);\n      } else if (listMod === 1) {\n        styles.push(tokenTypes.list2);\n      } else {\n        styles.push(tokenTypes.list3);\n      }\n    }\n\n    if (state.trailingSpaceNewLine) {\n      styles.push(\"trailing-space-new-line\");\n    } else if (state.trailingSpace) {\n      styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n    }\n\n    return styles.length ? styles.join(' ') : null;\n  }\n\n  function handleText(stream, state) {\n    if (stream.match(textRE, true)) {\n      return getType(state);\n    }\n    return undefined;\n  }\n\n  function inlineNormal(stream, state) {\n    var style = state.text(stream, state);\n    if (typeof style !== 'undefined')\n      return style;\n\n    if (state.list) { // List marker (*, +, -, 1., etc)\n      state.list = null;\n      return getType(state);\n    }\n\n    if (state.taskList) {\n      var taskOpen = stream.match(taskListRE, true)[1] === \" \";\n      if (taskOpen) state.taskOpen = true;\n      else state.taskClosed = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"task\";\n      state.taskList = false;\n      return getType(state);\n    }\n\n    state.taskOpen = false;\n    state.taskClosed = false;\n\n    if (state.header && stream.match(/^#+$/, true)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      return getType(state);\n    }\n\n    var ch = stream.next();\n\n    // Matches link titles present on next line\n    if (state.linkTitle) {\n      state.linkTitle = false;\n      var matchCh = ch;\n      if (ch === '(') {\n        matchCh = ')';\n      }\n      matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n      var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n      if (stream.match(new RegExp(regex), true)) {\n        return tokenTypes.linkHref;\n      }\n    }\n\n    // If this block is changed, it may need to be updated in GFM mode\n    if (ch === '`') {\n      var previousFormatting = state.formatting;\n      if (modeCfg.highlightFormatting) state.formatting = \"code\";\n      stream.eatWhile('`');\n      var count = stream.current().length\n      if (state.code == 0 && (!state.quote || count == 1)) {\n        state.code = count\n        return getType(state)\n      } else if (count == state.code) { // Must be exact\n        var t = getType(state)\n        state.code = 0\n        return t\n      } else {\n        state.formatting = previousFormatting\n        return getType(state)\n      }\n    } else if (state.code) {\n      return getType(state);\n    }\n\n    if (ch === '\\\\') {\n      stream.next();\n      if (modeCfg.highlightFormatting) {\n        var type = getType(state);\n        var formattingEscape = tokenTypes.formatting + \"-escape\";\n        return type ? type + \" \" + formattingEscape : formattingEscape;\n      }\n    }\n\n    if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n      state.imageMarker = true;\n      state.image = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n      state.imageMarker = false;\n      state.imageAltText = true\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.imageAltText) {\n      if (modeCfg.highlightFormatting) state.formatting = \"image\";\n      var type = getType(state);\n      state.imageAltText = false;\n      state.image = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '[' && !state.image) {\n      if (state.linkText && stream.match(/^.*?\\]/)) return getType(state)\n      state.linkText = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.linkText) {\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      state.linkText = false;\n      state.inline = state.f = stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false) ? linkHref : inlineNormal\n      return type;\n    }\n\n    if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkEmail;\n    }\n\n    if (modeCfg.xml && ch === '<' && stream.match(/^(!--|\\?|!\\[CDATA\\[|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*(?:>|$))/i, false)) {\n      var end = stream.string.indexOf(\">\", stream.pos);\n      if (end != -1) {\n        var atts = stream.string.substring(stream.start, end);\n        if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n      }\n      stream.backUp(1);\n      state.htmlState = CodeMirror.startState(htmlMode);\n      return switchBlock(stream, state, htmlBlock);\n    }\n\n    if (modeCfg.xml && ch === '<' && stream.match(/^\\/\\w*?>/)) {\n      state.md_inside = false;\n      return \"tag\";\n    } else if (ch === \"*\" || ch === \"_\") {\n      var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n      while (len < 3 && stream.eat(ch)) len++\n      var after = stream.peek() || \" \"\n      // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n      var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n      var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n      var setEm = null, setStrong = null\n      if (len % 2) { // Em\n        if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setEm = true\n        else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setEm = false\n      }\n      if (len > 1) { // Strong\n        if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n          setStrong = true\n        else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n          setStrong = false\n      }\n      if (setStrong != null || setEm != null) {\n        if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n        if (setEm === true) state.em = ch\n        if (setStrong === true) state.strong = ch\n        var t = getType(state)\n        if (setEm === false) state.em = false\n        if (setStrong === false) state.strong = false\n        return t\n      }\n    } else if (ch === ' ') {\n      if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n        if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n          return getType(state);\n        } else { // Not surrounded by spaces, back up pointer\n          stream.backUp(1);\n        }\n      }\n    }\n\n    if (modeCfg.strikethrough) {\n      if (ch === '~' && stream.eatWhile(ch)) {\n        if (state.strikethrough) {// Remove strikethrough\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          var t = getType(state);\n          state.strikethrough = false;\n          return t;\n        } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n          state.strikethrough = true;\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          return getType(state);\n        }\n      } else if (ch === ' ') {\n        if (stream.match('~~', true)) { // Probably surrounded by space\n          if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n            return getType(state);\n          } else { // Not surrounded by spaces, back up pointer\n            stream.backUp(2);\n          }\n        }\n      }\n    }\n\n    if (modeCfg.emoji && ch === \":\" && stream.match(/^(?:[a-z_\\d+][a-z_\\d+-]*|\\-[a-z_\\d+][a-z_\\d+-]*):/)) {\n      state.emoji = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"emoji\";\n      var retType = getType(state);\n      state.emoji = false;\n      return retType;\n    }\n\n    if (ch === ' ') {\n      if (stream.match(/^ +$/, false)) {\n        state.trailingSpace++;\n      } else if (state.trailingSpace) {\n        state.trailingSpaceNewLine = true;\n      }\n    }\n\n    return getType(state);\n  }\n\n  function linkInline(stream, state) {\n    var ch = stream.next();\n\n    if (ch === \">\") {\n      state.f = state.inline = inlineNormal;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + tokenTypes.linkInline;\n    }\n\n    stream.match(/^[^>]+/, true);\n\n    return tokenTypes.linkInline;\n  }\n\n  function linkHref(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    var ch = stream.next();\n    if (ch === '(' || ch === '[') {\n      state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n      if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n      state.linkHref = true;\n      return getType(state);\n    }\n    return 'error';\n  }\n\n  var linkRE = {\n    \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n    \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/\n  }\n\n  function getLinkHrefInside(endChar) {\n    return function(stream, state) {\n      var ch = stream.next();\n\n      if (ch === endChar) {\n        state.f = state.inline = inlineNormal;\n        if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n        var returnState = getType(state);\n        state.linkHref = false;\n        return returnState;\n      }\n\n      stream.match(linkRE[endChar])\n      state.linkHref = true;\n      return getType(state);\n    };\n  }\n\n  function footnoteLink(stream, state) {\n    if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n      state.f = footnoteLinkInside;\n      stream.next(); // Consume [\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      state.linkText = true;\n      return getType(state);\n    }\n    return switchInline(stream, state, inlineNormal);\n  }\n\n  function footnoteLinkInside(stream, state) {\n    if (stream.match(']:', true)) {\n      state.f = state.inline = footnoteUrl;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var returnType = getType(state);\n      state.linkText = false;\n      return returnType;\n    }\n\n    stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n    return tokenTypes.linkText;\n  }\n\n  function footnoteUrl(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    // Match URL\n    stream.match(/^[^\\s]+/, true);\n    // Check for link title\n    if (stream.peek() === undefined) { // End of line, set flag to check next line\n      state.linkTitle = true;\n    } else { // More content on line, check if link title\n      stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\.)+\"|'(?:[^'\\\\]|\\\\.)+'|\\((?:[^)\\\\]|\\\\.)+\\)))?/, true);\n    }\n    state.f = state.inline = inlineNormal;\n    return tokenTypes.linkHref + \" url\";\n  }\n\n  var mode = {\n    startState: function() {\n      return {\n        f: blockNormal,\n\n        prevLine: {stream: null},\n        thisLine: {stream: null},\n\n        block: blockNormal,\n        htmlState: null,\n        indentation: 0,\n\n        inline: inlineNormal,\n        text: handleText,\n\n        formatting: false,\n        linkText: false,\n        linkHref: false,\n        linkTitle: false,\n        code: 0,\n        em: false,\n        strong: false,\n        header: 0,\n        setext: 0,\n        hr: false,\n        taskList: false,\n        list: false,\n        listStack: [],\n        quote: 0,\n        trailingSpace: 0,\n        trailingSpaceNewLine: false,\n        strikethrough: false,\n        emoji: false,\n        fencedEndRE: null\n      };\n    },\n\n    copyState: function(s) {\n      return {\n        f: s.f,\n\n        prevLine: s.prevLine,\n        thisLine: s.thisLine,\n\n        block: s.block,\n        htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n        indentation: s.indentation,\n\n        localMode: s.localMode,\n        localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n        inline: s.inline,\n        text: s.text,\n        formatting: false,\n        linkText: s.linkText,\n        linkTitle: s.linkTitle,\n        linkHref: s.linkHref,\n        code: s.code,\n        em: s.em,\n        strong: s.strong,\n        strikethrough: s.strikethrough,\n        emoji: s.emoji,\n        header: s.header,\n        setext: s.setext,\n        hr: s.hr,\n        taskList: s.taskList,\n        list: s.list,\n        listStack: s.listStack.slice(0),\n        quote: s.quote,\n        indentedCode: s.indentedCode,\n        trailingSpace: s.trailingSpace,\n        trailingSpaceNewLine: s.trailingSpaceNewLine,\n        md_inside: s.md_inside,\n        fencedEndRE: s.fencedEndRE\n      };\n    },\n\n    token: function(stream, state) {\n\n      // Reset state.formatting\n      state.formatting = false;\n\n      if (stream != state.thisLine.stream) {\n        state.header = 0;\n        state.hr = false;\n\n        if (stream.match(/^\\s*$/, true)) {\n          blankLine(state);\n          return null;\n        }\n\n        state.prevLine = state.thisLine\n        state.thisLine = {stream: stream}\n\n        // Reset state.taskList\n        state.taskList = false;\n\n        // Reset state.trailingSpace\n        state.trailingSpace = 0;\n        state.trailingSpaceNewLine = false;\n\n        if (!state.localState) {\n          state.f = state.block;\n          if (state.f != htmlBlock) {\n            var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, expandedTab).length;\n            state.indentation = indentation;\n            state.indentationDiff = null;\n            if (indentation > 0) return null;\n          }\n        }\n      }\n      return state.f(stream, state);\n    },\n\n    innerMode: function(state) {\n      if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n      if (state.localState) return {state: state.localState, mode: state.localMode};\n      return {state: state, mode: mode};\n    },\n\n    indent: function(state, textAfter, line) {\n      if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line)\n      if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line)\n      return CodeMirror.Pass\n    },\n\n    blankLine: blankLine,\n\n    getType: getType,\n\n    blockCommentStart: \"<!--\",\n    blockCommentEnd: \"-->\",\n    closeBrackets: \"()[]{}''\\\"\\\"``\",\n    fold: \"markdown\"\n  };\n  return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/markdown\", \"markdown\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\nexport default (function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n  autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n                    'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n                    'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n                    'track': true, 'wbr': true, 'menuitem': true},\n  implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n                     'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n                     'th': true, 'tr': true},\n  contextGrabbers: {\n    'dd': {'dd': true, 'dt': true},\n    'dt': {'dd': true, 'dt': true},\n    'li': {'li': true},\n    'option': {'option': true, 'optgroup': true},\n    'optgroup': {'optgroup': true},\n    'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n          'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n          'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n          'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n          'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n    'rp': {'rp': true, 'rt': true},\n    'rt': {'rp': true, 'rt': true},\n    'tbody': {'tbody': true, 'tfoot': true},\n    'td': {'td': true, 'th': true},\n    'tfoot': {'tbody': true},\n    'th': {'td': true, 'th': true},\n    'thead': {'tbody': true, 'tfoot': true},\n    'tr': {'tr': true}\n  },\n  doNotIndent: {\"pre\": true},\n  allowUnquoted: true,\n  allowMissing: true,\n  caseFold: true\n}\n\nvar xmlConfig = {\n  autoSelfClosers: {},\n  implicitlyClosed: {},\n  contextGrabbers: {},\n  doNotIndent: {},\n  allowUnquoted: false,\n  allowMissing: false,\n  allowMissingTagName: false,\n  caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n  var indentUnit = editorConf.indentUnit\n  var config = {}\n  var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n  for (var prop in defaults) config[prop] = defaults[prop]\n  for (var prop in config_) config[prop] = config_[prop]\n\n  // Return variables for tokenizers\n  var type, setStyle;\n\n  function inText(stream, state) {\n    function chain(parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n\n    var ch = stream.next();\n    if (ch == \"<\") {\n      if (stream.eat(\"!\")) {\n        if (stream.eat(\"[\")) {\n          if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n          else return null;\n        } else if (stream.match(\"--\")) {\n          return chain(inBlock(\"comment\", \"-->\"));\n        } else if (stream.match(\"DOCTYPE\", true, true)) {\n          stream.eatWhile(/[\\w\\._\\-]/);\n          return chain(doctype(1));\n        } else {\n          return null;\n        }\n      } else if (stream.eat(\"?\")) {\n        stream.eatWhile(/[\\w\\._\\-]/);\n        state.tokenize = inBlock(\"meta\", \"?>\");\n        return \"meta\";\n      } else {\n        type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n        state.tokenize = inTag;\n        return \"tag bracket\";\n      }\n    } else if (ch == \"&\") {\n      var ok;\n      if (stream.eat(\"#\")) {\n        if (stream.eat(\"x\")) {\n          ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n        } else {\n          ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n        }\n      } else {\n        ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n      }\n      return ok ? \"atom\" : \"error\";\n    } else {\n      stream.eatWhile(/[^&<]/);\n      return null;\n    }\n  }\n  inText.isInText = true;\n\n  function inTag(stream, state) {\n    var ch = stream.next();\n    if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n      state.tokenize = inText;\n      type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n      return \"tag bracket\";\n    } else if (ch == \"=\") {\n      type = \"equals\";\n      return null;\n    } else if (ch == \"<\") {\n      state.tokenize = inText;\n      state.state = baseState;\n      state.tagName = state.tagStart = null;\n      var next = state.tokenize(stream, state);\n      return next ? next + \" tag error\" : \"tag error\";\n    } else if (/[\\'\\\"]/.test(ch)) {\n      state.tokenize = inAttribute(ch);\n      state.stringStartCol = stream.column();\n      return state.tokenize(stream, state);\n    } else {\n      stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n      return \"word\";\n    }\n  }\n\n  function inAttribute(quote) {\n    var closure = function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.next() == quote) {\n          state.tokenize = inTag;\n          break;\n        }\n      }\n      return \"string\";\n    };\n    closure.isInAttribute = true;\n    return closure;\n  }\n\n  function inBlock(style, terminator) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = inText;\n          break;\n        }\n        stream.next();\n      }\n      return style;\n    }\n  }\n\n  function doctype(depth) {\n    return function(stream, state) {\n      var ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == \"<\") {\n          state.tokenize = doctype(depth + 1);\n          return state.tokenize(stream, state);\n        } else if (ch == \">\") {\n          if (depth == 1) {\n            state.tokenize = inText;\n            break;\n          } else {\n            state.tokenize = doctype(depth - 1);\n            return state.tokenize(stream, state);\n          }\n        }\n      }\n      return \"meta\";\n    };\n  }\n\n  function lower(tagName) {\n    return tagName && tagName.toLowerCase();\n  }\n\n  function Context(state, tagName, startOfLine) {\n    this.prev = state.context;\n    this.tagName = tagName || \"\";\n    this.indent = state.indented;\n    this.startOfLine = startOfLine;\n    if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n      this.noIndent = true;\n  }\n  function popContext(state) {\n    if (state.context) state.context = state.context.prev;\n  }\n  function maybePopContext(state, nextTagName) {\n    var parentTagName;\n    while (true) {\n      if (!state.context) {\n        return;\n      }\n      parentTagName = state.context.tagName;\n      if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n          !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n        return;\n      }\n      popContext(state);\n    }\n  }\n\n  function baseState(type, stream, state) {\n    if (type == \"openTag\") {\n      state.tagStart = stream.column();\n      return tagNameState;\n    } else if (type == \"closeTag\") {\n      return closeTagNameState;\n    } else {\n      return baseState;\n    }\n  }\n  function tagNameState(type, stream, state) {\n    if (type == \"word\") {\n      state.tagName = stream.current();\n      setStyle = \"tag\";\n      return attrState;\n    } else if (config.allowMissingTagName && type == \"endTag\") {\n      setStyle = \"tag bracket\";\n      return attrState(type, stream, state);\n    } else {\n      setStyle = \"error\";\n      return tagNameState;\n    }\n  }\n  function closeTagNameState(type, stream, state) {\n    if (type == \"word\") {\n      var tagName = stream.current();\n      if (state.context && state.context.tagName != tagName &&\n          config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n        popContext(state);\n      if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n        setStyle = \"tag\";\n        return closeState;\n      } else {\n        setStyle = \"tag error\";\n        return closeStateErr;\n      }\n    } else if (config.allowMissingTagName && type == \"endTag\") {\n      setStyle = \"tag bracket\";\n      return closeState(type, stream, state);\n    } else {\n      setStyle = \"error\";\n      return closeStateErr;\n    }\n  }\n\n  function closeState(type, _stream, state) {\n    if (type != \"endTag\") {\n      setStyle = \"error\";\n      return closeState;\n    }\n    popContext(state);\n    return baseState;\n  }\n  function closeStateErr(type, stream, state) {\n    setStyle = \"error\";\n    return closeState(type, stream, state);\n  }\n\n  function attrState(type, _stream, state) {\n    if (type == \"word\") {\n      setStyle = \"attribute\";\n      return attrEqState;\n    } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n      var tagName = state.tagName, tagStart = state.tagStart;\n      state.tagName = state.tagStart = null;\n      if (type == \"selfcloseTag\" ||\n          config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n        maybePopContext(state, tagName);\n      } else {\n        maybePopContext(state, tagName);\n        state.context = new Context(state, tagName, tagStart == state.indented);\n      }\n      return baseState;\n    }\n    setStyle = \"error\";\n    return attrState;\n  }\n  function attrEqState(type, stream, state) {\n    if (type == \"equals\") return attrValueState;\n    if (!config.allowMissing) setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrValueState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n    setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrContinuedState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    return attrState(type, stream, state);\n  }\n\n  return {\n    startState: function(baseIndent) {\n      var state = {tokenize: inText,\n                   state: baseState,\n                   indented: baseIndent || 0,\n                   tagName: null, tagStart: null,\n                   context: null}\n      if (baseIndent != null) state.baseIndent = baseIndent\n      return state\n    },\n\n    token: function(stream, state) {\n      if (!state.tagName && stream.sol())\n        state.indented = stream.indentation();\n\n      if (stream.eatSpace()) return null;\n      type = null;\n      var style = state.tokenize(stream, state);\n      if ((style || type) && style != \"comment\") {\n        setStyle = null;\n        state.state = state.state(type || style, stream, state);\n        if (setStyle)\n          style = setStyle == \"error\" ? style + \" error\" : setStyle;\n      }\n      return style;\n    },\n\n    indent: function(state, textAfter, fullLine) {\n      var context = state.context;\n      // Indent multi-line strings (e.g. css).\n      if (state.tokenize.isInAttribute) {\n        if (state.tagStart == state.indented)\n          return state.stringStartCol + 1;\n        else\n          return state.indented + indentUnit;\n      }\n      if (context && context.noIndent) return CodeMirror.Pass;\n      if (state.tokenize != inTag && state.tokenize != inText)\n        return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n      // Indent the starts of attribute names.\n      if (state.tagName) {\n        if (config.multilineTagIndentPastTag !== false)\n          return state.tagStart + state.tagName.length + 2;\n        else\n          return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n      }\n      if (config.alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n      var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n      if (tagAfter && tagAfter[1]) { // Closing tag spotted\n        while (context) {\n          if (context.tagName == tagAfter[2]) {\n            context = context.prev;\n            break;\n          } else if (config.implicitlyClosed.hasOwnProperty(lower(context.tagName))) {\n            context = context.prev;\n          } else {\n            break;\n          }\n        }\n      } else if (tagAfter) { // Opening tag spotted\n        while (context) {\n          var grabbers = config.contextGrabbers[lower(context.tagName)];\n          if (grabbers && grabbers.hasOwnProperty(lower(tagAfter[2])))\n            context = context.prev;\n          else\n            break;\n        }\n      }\n      while (context && context.prev && !context.startOfLine)\n        context = context.prev;\n      if (context) return context.indent + indentUnit;\n      else return state.baseIndent || 0;\n    },\n\n    electricInput: /<\\/[\\s\\w:]+>$/,\n    blockCommentStart: \"<!--\",\n    blockCommentEnd: \"-->\",\n\n    configuration: config.htmlMode ? \"html\" : \"xml\",\n    helperType: config.htmlMode ? \"html\" : \"xml\",\n\n    skipAttribute: function(state) {\n      if (state.state == attrValueState)\n        state.state = attrState\n    },\n\n    xmlCurrentTag: function(state) {\n      return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n    },\n\n    xmlCurrentContext: function(state) {\n      var context = []\n      for (var cx = state.context; cx; cx = cx.prev)\n        context.push(cx.tagName)\n      return context.reverse()\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n  CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record<string, unknown>} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array<string | Props | TestFunctionAnything>} 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<Kind> | TestFunctionPredicate<Kind> | Array<Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind>>} 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   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index: number, parent: Parent, context?: unknown) => node is Kind) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, 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   *   (<Kind extends Node>(test: PredicateTest<Kind>) => AssertPredicate<Kind>) &\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<string | Props | TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<AssertAnything>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @param {Array<unknown>} parameters\n   * @returns {boolean}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].call(this, ...parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * 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<unknown>} 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<Ancestor>} 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<import('./complex-types.js').Matches<import('./complex-types.js').InclusiveDescendant<Tree>, Check>, Extract<import('./complex-types.js').InclusiveDescendant<Tree>, 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 extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {Visitor<Node>} 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<Parent>} parents\n       */\n      function factory(node, index, parents) {\n        /** @type {Record<string, unknown>} */\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<Parent>} */\n          let grandparents\n\n          if (!test || is(node, index, parents[parents.length - 1] || null)) {\n            result = toResult(visitor(node, parents))\n\n            if (result[0] === EXIT) {\n              return result\n            }\n          }\n\n          // @ts-expect-error looks like a parent.\n          if (node.children && result[0] !== SKIP) {\n            // @ts-expect-error looks like a parent.\n            offset = (reverse ? node.children.length : -1) + step\n            // @ts-expect-error looks like a parent.\n            grandparents = parents.concat(node)\n\n            // @ts-expect-error looks like a parent.\n            while (offset > -1 && offset < node.children.length) {\n              // @ts-expect-error looks like a parent.\n              subresult = factory(node.children[offset], offset, grandparents)()\n\n              if (subresult[0] === EXIT) {\n                return subresult\n              }\n\n              offset =\n                typeof subresult[1] === 'number' ? subresult[1] : offset + step\n            }\n          }\n\n          return result\n        }\n      }\n    }\n  )\n\n/**\n * 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<Visited, ParentsOf<Ancestor, Visited>>} 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<Descendant, Check>,\n *     Extract<Descendant, Parent>\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<Tree>,\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 extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, 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<Parent>} parents\n       */\n      function overload(node, parents) {\n        const parent = parents[parents.length - 1]\n        return visitor(\n          node,\n          parent ? parent.children.indexOf(node) : null,\n          parent\n        )\n      }\n    }\n  )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","export const ROUND_ARROW =\n  '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\n\nexport const BOX_CLASS = `__NAMESPACE_PREFIX__-box`;\nexport const CONTENT_CLASS = `__NAMESPACE_PREFIX__-content`;\nexport const BACKDROP_CLASS = `__NAMESPACE_PREFIX__-backdrop`;\nexport const ARROW_CLASS = `__NAMESPACE_PREFIX__-arrow`;\nexport const SVG_ARROW_CLASS = `__NAMESPACE_PREFIX__-svg-arrow`;\n\nexport const TOUCH_OPTIONS = {passive: true, capture: true};\n\nexport const TIPPY_DEFAULT_APPEND_TO = () => document.body;\n","import {BasePlacement, Placement} from './types';\n\nexport function hasOwnProperty(\n  obj: Record<string, unknown>,\n  key: string\n): boolean {\n  return {}.hasOwnProperty.call(obj, key);\n}\n\nexport function getValueAtIndexOrReturn<T>(\n  value: T | [T | null, T | null],\n  index: number,\n  defaultValue: T | [T, T]\n): T {\n  if (Array.isArray(value)) {\n    const v = value[index];\n    return v == null\n      ? Array.isArray(defaultValue)\n        ? defaultValue[index]\n        : defaultValue\n      : v;\n  }\n\n  return value;\n}\n\nexport function isType(value: any, type: string): boolean {\n  const str = {}.toString.call(value);\n  return str.indexOf('[object') === 0 && str.indexOf(`${type}]`) > -1;\n}\n\nexport function invokeWithArgsOrReturn(value: any, args: any[]): any {\n  return typeof value === 'function' ? value(...args) : value;\n}\n\nexport function debounce<T>(\n  fn: (arg: T) => void,\n  ms: number\n): (arg: T) => void {\n  // Avoid wrapping in `setTimeout` if ms is 0 anyway\n  if (ms === 0) {\n    return fn;\n  }\n\n  let timeout: any;\n\n  return (arg): void => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      fn(arg);\n    }, ms);\n  };\n}\n\nexport function removeProperties<T>(obj: T, keys: string[]): Partial<T> {\n  const clone = {...obj};\n  keys.forEach((key) => {\n    delete (clone as any)[key];\n  });\n  return clone;\n}\n\nexport function splitBySpaces(value: string): string[] {\n  return value.split(/\\s+/).filter(Boolean);\n}\n\nexport function normalizeToArray<T>(value: T | T[]): T[] {\n  return ([] as T[]).concat(value);\n}\n\nexport function pushIfUnique<T>(arr: T[], value: T): void {\n  if (arr.indexOf(value) === -1) {\n    arr.push(value);\n  }\n}\n\nexport function appendPxIfNumber(value: string | number): string {\n  return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function unique<T>(arr: T[]): T[] {\n  return arr.filter((item, index) => arr.indexOf(item) === index);\n}\n\nexport function getNumber(value: string | number): number {\n  return typeof value === 'number' ? value : parseFloat(value);\n}\n\nexport function getBasePlacement(placement: Placement): BasePlacement {\n  return placement.split('-')[0] as BasePlacement;\n}\n\nexport function arrayFrom(value: ArrayLike<any>): any[] {\n  return [].slice.call(value);\n}\n\nexport function removeUndefinedProps(\n  obj: Record<string, unknown>\n): Partial<Record<string, unknown>> {\n  return Object.keys(obj).reduce((acc, key) => {\n    if (obj[key] !== undefined) {\n      (acc as any)[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n","import {ReferenceElement, Targets} from './types';\nimport {PopperTreeData} from './types-internal';\nimport {arrayFrom, isType, normalizeToArray, getBasePlacement} from './utils';\n\nexport function div(): HTMLDivElement {\n  return document.createElement('div');\n}\n\nexport function isElement(value: unknown): value is Element | DocumentFragment {\n  return ['Element', 'Fragment'].some((type) => isType(value, type));\n}\n\nexport function isNodeList(value: unknown): value is NodeList {\n  return isType(value, 'NodeList');\n}\n\nexport function isMouseEvent(value: unknown): value is MouseEvent {\n  return isType(value, 'MouseEvent');\n}\n\nexport function isReferenceElement(value: any): value is ReferenceElement {\n  return !!(value && value._tippy && value._tippy.reference === value);\n}\n\nexport function getArrayOfElements(value: Targets): Element[] {\n  if (isElement(value)) {\n    return [value];\n  }\n\n  if (isNodeList(value)) {\n    return arrayFrom(value);\n  }\n\n  if (Array.isArray(value)) {\n    return value;\n  }\n\n  return arrayFrom(document.querySelectorAll(value));\n}\n\nexport function setTransitionDuration(\n  els: (HTMLDivElement | null)[],\n  value: number\n): void {\n  els.forEach((el) => {\n    if (el) {\n      el.style.transitionDuration = `${value}ms`;\n    }\n  });\n}\n\nexport function setVisibilityState(\n  els: (HTMLDivElement | null)[],\n  state: 'visible' | 'hidden'\n): void {\n  els.forEach((el) => {\n    if (el) {\n      el.setAttribute('data-state', state);\n    }\n  });\n}\n\nexport function getOwnerDocument(\n  elementOrElements: Element | Element[]\n): Document {\n  const [element] = normalizeToArray(elementOrElements);\n\n  // Elements created via a <template> have an ownerDocument with no reference to the body\n  return element?.ownerDocument?.body ? element.ownerDocument : document;\n}\n\nexport function isCursorOutsideInteractiveBorder(\n  popperTreeData: PopperTreeData[],\n  event: MouseEvent\n): boolean {\n  const {clientX, clientY} = event;\n\n  return popperTreeData.every(({popperRect, popperState, props}) => {\n    const {interactiveBorder} = props;\n    const basePlacement = getBasePlacement(popperState.placement);\n    const offsetData = popperState.modifiersData.offset;\n\n    if (!offsetData) {\n      return true;\n    }\n\n    const topDistance = basePlacement === 'bottom' ? offsetData.top!.y : 0;\n    const bottomDistance = basePlacement === 'top' ? offsetData.bottom!.y : 0;\n    const leftDistance = basePlacement === 'right' ? offsetData.left!.x : 0;\n    const rightDistance = basePlacement === 'left' ? offsetData.right!.x : 0;\n\n    const exceedsTop =\n      popperRect.top - clientY + topDistance > interactiveBorder;\n    const exceedsBottom =\n      clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n    const exceedsLeft =\n      popperRect.left - clientX + leftDistance > interactiveBorder;\n    const exceedsRight =\n      clientX - popperRect.right - rightDistance > interactiveBorder;\n\n    return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n  });\n}\n\nexport function updateTransitionEndListener(\n  box: HTMLDivElement,\n  action: 'add' | 'remove',\n  listener: (event: TransitionEvent) => void\n): void {\n  const method = `${action}EventListener` as\n    | 'addEventListener'\n    | 'removeEventListener';\n\n  // some browsers apparently support `transition` (unprefixed) but only fire\n  // `webkitTransitionEnd`...\n  ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n    box[method](event, listener as EventListener);\n  });\n}\n\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\nexport function actualContains(parent: Element, child: Element): boolean {\n  let target = child;\n  while (target) {\n    if (parent.contains(target)) {\n      return true;\n    }\n    target = (target.getRootNode?.() as any)?.host;\n  }\n  return false;\n}\n","import {TOUCH_OPTIONS} from './constants';\nimport {isReferenceElement} from './dom-utils';\n\nexport const currentInput = {isTouch: false};\nlet lastMouseMoveTime = 0;\n\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\nexport function onDocumentTouchStart(): void {\n  if (currentInput.isTouch) {\n    return;\n  }\n\n  currentInput.isTouch = true;\n\n  if (window.performance) {\n    document.addEventListener('mousemove', onDocumentMouseMove);\n  }\n}\n\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\nexport function onDocumentMouseMove(): void {\n  const now = performance.now();\n\n  if (now - lastMouseMoveTime < 20) {\n    currentInput.isTouch = false;\n\n    document.removeEventListener('mousemove', onDocumentMouseMove);\n  }\n\n  lastMouseMoveTime = now;\n}\n\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\nexport function onWindowBlur(): void {\n  const activeElement = document.activeElement as HTMLElement | null;\n\n  if (isReferenceElement(activeElement)) {\n    const instance = activeElement._tippy!;\n\n    if (activeElement.blur && !instance.state.isVisible) {\n      activeElement.blur();\n    }\n  }\n}\n\nexport default function bindGlobalEventListeners(): void {\n  document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n  window.addEventListener('blur', onWindowBlur);\n}\n","export const isBrowser =\n  typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIE11 = isBrowser\n  ? // @ts-ignore\n    !!window.msCrypto\n  : false;\n","import {DefaultProps, Plugin, Props, ReferenceElement, Tippy} from './types';\nimport {\n  hasOwnProperty,\n  removeProperties,\n  invokeWithArgsOrReturn,\n} from './utils';\nimport {warnWhen} from './validation';\nimport {TIPPY_DEFAULT_APPEND_TO} from './constants';\n\nconst pluginProps = {\n  animateFill: false,\n  followCursor: false,\n  inlinePositioning: false,\n  sticky: false,\n};\n\nconst renderProps = {\n  allowHTML: false,\n  animation: 'fade',\n  arrow: true,\n  content: '',\n  inertia: false,\n  maxWidth: 350,\n  role: 'tooltip',\n  theme: '',\n  zIndex: 9999,\n};\n\nexport const defaultProps: DefaultProps = {\n  appendTo: TIPPY_DEFAULT_APPEND_TO,\n  aria: {\n    content: 'auto',\n    expanded: 'auto',\n  },\n  delay: 0,\n  duration: [300, 250],\n  getReferenceClientRect: null,\n  hideOnClick: true,\n  ignoreAttributes: false,\n  interactive: false,\n  interactiveBorder: 2,\n  interactiveDebounce: 0,\n  moveTransition: '',\n  offset: [0, 10],\n  onAfterUpdate() {},\n  onBeforeUpdate() {},\n  onCreate() {},\n  onDestroy() {},\n  onHidden() {},\n  onHide() {},\n  onMount() {},\n  onShow() {},\n  onShown() {},\n  onTrigger() {},\n  onUntrigger() {},\n  onClickOutside() {},\n  placement: 'top',\n  plugins: [],\n  popperOptions: {},\n  render: null,\n  showOnCreate: false,\n  touch: true,\n  trigger: 'mouseenter focus',\n  triggerTarget: null,\n  ...pluginProps,\n  ...renderProps,\n};\n\nconst defaultKeys = Object.keys(defaultProps);\n\nexport const setDefaultProps: Tippy['setDefaultProps'] = (partialProps) => {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    validateProps(partialProps, []);\n  }\n\n  const keys = Object.keys(partialProps) as Array<keyof DefaultProps>;\n  keys.forEach((key) => {\n    (defaultProps as any)[key] = partialProps[key];\n  });\n};\n\nexport function getExtendedPassedProps(\n  passedProps: Partial<Props> & Record<string, unknown>\n): Partial<Props> {\n  const plugins = passedProps.plugins || [];\n  const pluginProps = plugins.reduce<Record<string, unknown>>((acc, plugin) => {\n    const {name, defaultValue} = plugin;\n\n    if (name) {\n      acc[name] =\n        passedProps[name] !== undefined\n          ? passedProps[name]\n          : (defaultProps as any)[name] ?? defaultValue;\n    }\n\n    return acc;\n  }, {});\n\n  return {\n    ...passedProps,\n    ...pluginProps,\n  };\n}\n\nexport function getDataAttributeProps(\n  reference: ReferenceElement,\n  plugins: Plugin[]\n): Record<string, unknown> {\n  const propKeys = plugins\n    ? Object.keys(getExtendedPassedProps({...defaultProps, plugins}))\n    : defaultKeys;\n\n  const props = propKeys.reduce(\n    (acc: Partial<Props> & Record<string, unknown>, key) => {\n      const valueAsString = (\n        reference.getAttribute(`data-tippy-${key}`) || ''\n      ).trim();\n\n      if (!valueAsString) {\n        return acc;\n      }\n\n      if (key === 'content') {\n        acc[key] = valueAsString;\n      } else {\n        try {\n          acc[key] = JSON.parse(valueAsString);\n        } catch (e) {\n          acc[key] = valueAsString;\n        }\n      }\n\n      return acc;\n    },\n    {}\n  );\n\n  return props;\n}\n\nexport function evaluateProps(\n  reference: ReferenceElement,\n  props: Props\n): Props {\n  const out = {\n    ...props,\n    content: invokeWithArgsOrReturn(props.content, [reference]),\n    ...(props.ignoreAttributes\n      ? {}\n      : getDataAttributeProps(reference, props.plugins)),\n  };\n\n  out.aria = {\n    ...defaultProps.aria,\n    ...out.aria,\n  };\n\n  out.aria = {\n    expanded:\n      out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n    content:\n      out.aria.content === 'auto'\n        ? props.interactive\n          ? null\n          : 'describedby'\n        : out.aria.content,\n  };\n\n  return out;\n}\n\nexport function validateProps(\n  partialProps: Partial<Props> = {},\n  plugins: Plugin[] = []\n): void {\n  const keys = Object.keys(partialProps) as Array<keyof Props>;\n  keys.forEach((prop) => {\n    const nonPluginProps = removeProperties(\n      defaultProps,\n      Object.keys(pluginProps)\n    );\n\n    let didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop);\n\n    // Check if the prop exists in `plugins`\n    if (didPassUnknownProp) {\n      didPassUnknownProp =\n        plugins.filter((plugin) => plugin.name === prop).length === 0;\n    }\n\n    warnWhen(\n      didPassUnknownProp,\n      [\n        `\\`${prop}\\``,\n        \"is not a valid prop. You may have spelled it incorrectly, or if it's\",\n        'a plugin, forgot to pass it in an array as props.plugins.',\n        '\\n\\n',\n        'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n',\n        'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/',\n      ].join(' ')\n    );\n  });\n}\n","import {\n  ARROW_CLASS,\n  BACKDROP_CLASS,\n  BOX_CLASS,\n  CONTENT_CLASS,\n  SVG_ARROW_CLASS,\n} from './constants';\nimport {div, isElement} from './dom-utils';\nimport {Instance, PopperElement, Props} from './types';\nimport {PopperChildren} from './types-internal';\nimport {arrayFrom} from './utils';\n\n// Firefox extensions don't allow .innerHTML = \"...\" property. This tricks it.\nconst innerHTML = (): 'innerHTML' => 'innerHTML';\n\nfunction dangerouslySetInnerHTML(element: Element, html: string): void {\n  element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value: Props['arrow']): HTMLDivElement {\n  const arrow = div();\n\n  if (value === true) {\n    arrow.className = ARROW_CLASS;\n  } else {\n    arrow.className = SVG_ARROW_CLASS;\n\n    if (isElement(value)) {\n      arrow.appendChild(value);\n    } else {\n      dangerouslySetInnerHTML(arrow, value as string);\n    }\n  }\n\n  return arrow;\n}\n\nexport function setContent(content: HTMLDivElement, props: Props): void {\n  if (isElement(props.content)) {\n    dangerouslySetInnerHTML(content, '');\n    content.appendChild(props.content);\n  } else if (typeof props.content !== 'function') {\n    if (props.allowHTML) {\n      dangerouslySetInnerHTML(content, props.content);\n    } else {\n      content.textContent = props.content;\n    }\n  }\n}\n\nexport function getChildren(popper: PopperElement): PopperChildren {\n  const box = popper.firstElementChild as HTMLDivElement;\n  const boxChildren = arrayFrom(box.children);\n\n  return {\n    box,\n    content: boxChildren.find((node) => node.classList.contains(CONTENT_CLASS)),\n    arrow: boxChildren.find(\n      (node) =>\n        node.classList.contains(ARROW_CLASS) ||\n        node.classList.contains(SVG_ARROW_CLASS)\n    ),\n    backdrop: boxChildren.find((node) =>\n      node.classList.contains(BACKDROP_CLASS)\n    ),\n  };\n}\n\nexport function render(\n  instance: Instance\n): {\n  popper: PopperElement;\n  onUpdate?: (prevProps: Props, nextProps: Props) => void;\n} {\n  const popper = div();\n\n  const box = div();\n  box.className = BOX_CLASS;\n  box.setAttribute('data-state', 'hidden');\n  box.setAttribute('tabindex', '-1');\n\n  const content = div();\n  content.className = CONTENT_CLASS;\n  content.setAttribute('data-state', 'hidden');\n\n  setContent(content, instance.props);\n\n  popper.appendChild(box);\n  box.appendChild(content);\n\n  onUpdate(instance.props, instance.props);\n\n  function onUpdate(prevProps: Props, nextProps: Props): void {\n    const {box, content, arrow} = getChildren(popper);\n\n    if (nextProps.theme) {\n      box.setAttribute('data-theme', nextProps.theme);\n    } else {\n      box.removeAttribute('data-theme');\n    }\n\n    if (typeof nextProps.animation === 'string') {\n      box.setAttribute('data-animation', nextProps.animation);\n    } else {\n      box.removeAttribute('data-animation');\n    }\n\n    if (nextProps.inertia) {\n      box.setAttribute('data-inertia', '');\n    } else {\n      box.removeAttribute('data-inertia');\n    }\n\n    box.style.maxWidth =\n      typeof nextProps.maxWidth === 'number'\n        ? `${nextProps.maxWidth}px`\n        : nextProps.maxWidth;\n\n    if (nextProps.role) {\n      box.setAttribute('role', nextProps.role);\n    } else {\n      box.removeAttribute('role');\n    }\n\n    if (\n      prevProps.content !== nextProps.content ||\n      prevProps.allowHTML !== nextProps.allowHTML\n    ) {\n      setContent(content, instance.props);\n    }\n\n    if (nextProps.arrow) {\n      if (!arrow) {\n        box.appendChild(createArrowElement(nextProps.arrow));\n      } else if (prevProps.arrow !== nextProps.arrow) {\n        box.removeChild(arrow);\n        box.appendChild(createArrowElement(nextProps.arrow));\n      }\n    } else if (arrow) {\n      box.removeChild(arrow!);\n    }\n  }\n\n  return {\n    popper,\n    onUpdate,\n  };\n}\n\n// Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\nrender.$$tippy = true;\n","import {createPopper, StrictModifiers, Modifier} from '@popperjs/core';\nimport {currentInput} from './bindGlobalEventListeners';\nimport {isIE11} from './browser';\nimport {TIPPY_DEFAULT_APPEND_TO, TOUCH_OPTIONS} from './constants';\nimport {\n  actualContains,\n  div,\n  getOwnerDocument,\n  isCursorOutsideInteractiveBorder,\n  isMouseEvent,\n  setTransitionDuration,\n  setVisibilityState,\n  updateTransitionEndListener,\n} from './dom-utils';\nimport {defaultProps, evaluateProps, getExtendedPassedProps} from './props';\nimport {getChildren} from './template';\nimport {\n  Content,\n  Instance,\n  LifecycleHooks,\n  PopperElement,\n  Props,\n  ReferenceElement,\n} from './types';\nimport {ListenerObject, PopperTreeData, PopperChildren} from './types-internal';\nimport {\n  arrayFrom,\n  debounce,\n  getValueAtIndexOrReturn,\n  invokeWithArgsOrReturn,\n  normalizeToArray,\n  pushIfUnique,\n  splitBySpaces,\n  unique,\n  removeUndefinedProps,\n} from './utils';\nimport {createMemoryLeakWarning, errorWhen, warnWhen} from './validation';\n\nlet idCounter = 1;\nlet mouseMoveListeners: ((event: MouseEvent) => void)[] = [];\n\n// Used by `hideAll()`\nexport let mountedInstances: Instance[] = [];\n\nexport default function createTippy(\n  reference: ReferenceElement,\n  passedProps: Partial<Props>\n): Instance {\n  const props = evaluateProps(reference, {\n    ...defaultProps,\n    ...getExtendedPassedProps(removeUndefinedProps(passedProps)),\n  });\n\n  // ===========================================================================\n  // 🔒 Private members\n  // ===========================================================================\n  let showTimeout: any;\n  let hideTimeout: any;\n  let scheduleHideAnimationFrame: number;\n  let isVisibleFromClick = false;\n  let didHideDueToDocumentMouseDown = false;\n  let didTouchMove = false;\n  let ignoreOnFirstUpdate = false;\n  let lastTriggerEvent: Event | undefined;\n  let currentTransitionEndListener: (event: TransitionEvent) => void;\n  let onFirstUpdate: () => void;\n  let listeners: ListenerObject[] = [];\n  let debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n  let currentTarget: Element;\n\n  // ===========================================================================\n  // 🔑 Public members\n  // ===========================================================================\n  const id = idCounter++;\n  const popperInstance = null;\n  const plugins = unique(props.plugins);\n\n  const state = {\n    // Is the instance currently enabled?\n    isEnabled: true,\n    // Is the tippy currently showing and not transitioning out?\n    isVisible: false,\n    // Has the instance been destroyed?\n    isDestroyed: false,\n    // Is the tippy currently mounted to the DOM?\n    isMounted: false,\n    // Has the tippy finished transitioning in?\n    isShown: false,\n  };\n\n  const instance: Instance = {\n    // properties\n    id,\n    reference,\n    popper: div(),\n    popperInstance,\n    props,\n    state,\n    plugins,\n    // methods\n    clearDelayTimeouts,\n    setProps,\n    setContent,\n    show,\n    hide,\n    hideWithInteractivity,\n    enable,\n    disable,\n    unmount,\n    destroy,\n  };\n\n  // TODO: Investigate why this early return causes a TDZ error in the tests —\n  // it doesn't seem to happen in the browser\n  /* istanbul ignore if */\n  if (!props.render) {\n    if (__DEV__) {\n      errorWhen(true, 'render() function has not been supplied.');\n    }\n\n    return instance;\n  }\n\n  // ===========================================================================\n  // Initial mutations\n  // ===========================================================================\n  const {popper, onUpdate} = props.render(instance);\n\n  popper.setAttribute('data-__NAMESPACE_PREFIX__-root', '');\n  popper.id = `__NAMESPACE_PREFIX__-${instance.id}`;\n\n  instance.popper = popper;\n  reference._tippy = instance;\n  popper._tippy = instance;\n\n  const pluginsHooks = plugins.map((plugin) => plugin.fn(instance));\n  const hasAriaExpanded = reference.hasAttribute('aria-expanded');\n\n  addListeners();\n  handleAriaExpandedAttribute();\n  handleStyles();\n\n  invokeHook('onCreate', [instance]);\n\n  if (props.showOnCreate) {\n    scheduleShow();\n  }\n\n  // Prevent a tippy with a delay from hiding if the cursor left then returned\n  // before it started hiding\n  popper.addEventListener('mouseenter', () => {\n    if (instance.props.interactive && instance.state.isVisible) {\n      instance.clearDelayTimeouts();\n    }\n  });\n\n  popper.addEventListener('mouseleave', () => {\n    if (\n      instance.props.interactive &&\n      instance.props.trigger.indexOf('mouseenter') >= 0\n    ) {\n      getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    }\n  });\n\n  return instance;\n\n  // ===========================================================================\n  // 🔒 Private methods\n  // ===========================================================================\n  function getNormalizedTouchSettings(): [string | boolean, number] {\n    const {touch} = instance.props;\n    return Array.isArray(touch) ? touch : [touch, 0];\n  }\n\n  function getIsCustomTouchBehavior(): boolean {\n    return getNormalizedTouchSettings()[0] === 'hold';\n  }\n\n  function getIsDefaultRenderFn(): boolean {\n    // @ts-ignore\n    return !!instance.props.render?.$$tippy;\n  }\n\n  function getCurrentTarget(): Element {\n    return currentTarget || reference;\n  }\n\n  function getDocument(): Document {\n    const parent = getCurrentTarget().parentNode as Element;\n    return parent ? getOwnerDocument(parent) : document;\n  }\n\n  function getDefaultTemplateChildren(): PopperChildren {\n    return getChildren(popper);\n  }\n\n  function getDelay(isShow: boolean): number {\n    // For touch or keyboard input, force `0` delay for UX reasons\n    // Also if the instance is mounted but not visible (transitioning out),\n    // ignore delay\n    if (\n      (instance.state.isMounted && !instance.state.isVisible) ||\n      currentInput.isTouch ||\n      (lastTriggerEvent && lastTriggerEvent.type === 'focus')\n    ) {\n      return 0;\n    }\n\n    return getValueAtIndexOrReturn(\n      instance.props.delay,\n      isShow ? 0 : 1,\n      defaultProps.delay\n    );\n  }\n\n  function handleStyles(fromHide = false): void {\n    popper.style.pointerEvents =\n      instance.props.interactive && !fromHide ? '' : 'none';\n    popper.style.zIndex = `${instance.props.zIndex}`;\n  }\n\n  function invokeHook(\n    hook: keyof LifecycleHooks,\n    args: [Instance, any?],\n    shouldInvokePropsHook = true\n  ): void {\n    pluginsHooks.forEach((pluginHooks) => {\n      if (pluginHooks[hook]) {\n        pluginHooks[hook]!(...args);\n      }\n    });\n\n    if (shouldInvokePropsHook) {\n      instance.props[hook](...args);\n    }\n  }\n\n  function handleAriaContentAttribute(): void {\n    const {aria} = instance.props;\n\n    if (!aria.content) {\n      return;\n    }\n\n    const attr = `aria-${aria.content}`;\n    const id = popper.id;\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n    nodes.forEach((node) => {\n      const currentValue = node.getAttribute(attr);\n\n      if (instance.state.isVisible) {\n        node.setAttribute(attr, currentValue ? `${currentValue} ${id}` : id);\n      } else {\n        const nextValue = currentValue && currentValue.replace(id, '').trim();\n\n        if (nextValue) {\n          node.setAttribute(attr, nextValue);\n        } else {\n          node.removeAttribute(attr);\n        }\n      }\n    });\n  }\n\n  function handleAriaExpandedAttribute(): void {\n    if (hasAriaExpanded || !instance.props.aria.expanded) {\n      return;\n    }\n\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n    nodes.forEach((node) => {\n      if (instance.props.interactive) {\n        node.setAttribute(\n          'aria-expanded',\n          instance.state.isVisible && node === getCurrentTarget()\n            ? 'true'\n            : 'false'\n        );\n      } else {\n        node.removeAttribute('aria-expanded');\n      }\n    });\n  }\n\n  function cleanupInteractiveMouseListeners(): void {\n    getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n    mouseMoveListeners = mouseMoveListeners.filter(\n      (listener) => listener !== debouncedOnMouseMove\n    );\n  }\n\n  function onDocumentPress(event: MouseEvent | TouchEvent): void {\n    // Moved finger to scroll instead of an intentional tap outside\n    if (currentInput.isTouch) {\n      if (didTouchMove || event.type === 'mousedown') {\n        return;\n      }\n    }\n\n    const actualTarget =\n      (event.composedPath && event.composedPath()[0]) || event.target;\n\n    // Clicked on interactive popper\n    if (\n      instance.props.interactive &&\n      actualContains(popper, actualTarget as Element)\n    ) {\n      return;\n    }\n\n    // Clicked on the event listeners target\n    if (\n      normalizeToArray(instance.props.triggerTarget || reference).some((el) =>\n        actualContains(el, actualTarget as Element)\n      )\n    ) {\n      if (currentInput.isTouch) {\n        return;\n      }\n\n      if (\n        instance.state.isVisible &&\n        instance.props.trigger.indexOf('click') >= 0\n      ) {\n        return;\n      }\n    } else {\n      invokeHook('onClickOutside', [instance, event]);\n    }\n\n    if (instance.props.hideOnClick === true) {\n      instance.clearDelayTimeouts();\n      instance.hide();\n\n      // `mousedown` event is fired right before `focus` if pressing the\n      // currentTarget. This lets a tippy with `focus` trigger know that it\n      // should not show\n      didHideDueToDocumentMouseDown = true;\n      setTimeout(() => {\n        didHideDueToDocumentMouseDown = false;\n      });\n\n      // The listener gets added in `scheduleShow()`, but this may be hiding it\n      // before it shows, and hide()'s early bail-out behavior can prevent it\n      // from being cleaned up\n      if (!instance.state.isMounted) {\n        removeDocumentPress();\n      }\n    }\n  }\n\n  function onTouchMove(): void {\n    didTouchMove = true;\n  }\n\n  function onTouchStart(): void {\n    didTouchMove = false;\n  }\n\n  function addDocumentPress(): void {\n    const doc = getDocument();\n    doc.addEventListener('mousedown', onDocumentPress, true);\n    doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function removeDocumentPress(): void {\n    const doc = getDocument();\n    doc.removeEventListener('mousedown', onDocumentPress, true);\n    doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function onTransitionedOut(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, () => {\n      if (\n        !instance.state.isVisible &&\n        popper.parentNode &&\n        popper.parentNode.contains(popper)\n      ) {\n        callback();\n      }\n    });\n  }\n\n  function onTransitionedIn(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, callback);\n  }\n\n  function onTransitionEnd(duration: number, callback: () => void): void {\n    const box = getDefaultTemplateChildren().box;\n\n    function listener(event: TransitionEvent): void {\n      if (event.target === box) {\n        updateTransitionEndListener(box, 'remove', listener);\n        callback();\n      }\n    }\n\n    // Make callback synchronous if duration is 0\n    // `transitionend` won't fire otherwise\n    if (duration === 0) {\n      return callback();\n    }\n\n    updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n    updateTransitionEndListener(box, 'add', listener);\n\n    currentTransitionEndListener = listener;\n  }\n\n  function on(\n    eventType: string,\n    handler: EventListener,\n    options: boolean | Record<string, unknown> = false\n  ): void {\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n    nodes.forEach((node) => {\n      node.addEventListener(eventType, handler, options);\n      listeners.push({node, eventType, handler, options});\n    });\n  }\n\n  function addListeners(): void {\n    if (getIsCustomTouchBehavior()) {\n      on('touchstart', onTrigger, {passive: true});\n      on('touchend', onMouseLeave as EventListener, {passive: true});\n    }\n\n    splitBySpaces(instance.props.trigger).forEach((eventType) => {\n      if (eventType === 'manual') {\n        return;\n      }\n\n      on(eventType, onTrigger);\n\n      switch (eventType) {\n        case 'mouseenter':\n          on('mouseleave', onMouseLeave as EventListener);\n          break;\n        case 'focus':\n          on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut as EventListener);\n          break;\n        case 'focusin':\n          on('focusout', onBlurOrFocusOut as EventListener);\n          break;\n      }\n    });\n  }\n\n  function removeListeners(): void {\n    listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function onTrigger(event: Event): void {\n    let shouldScheduleClickHide = false;\n\n    if (\n      !instance.state.isEnabled ||\n      isEventListenerStopped(event) ||\n      didHideDueToDocumentMouseDown\n    ) {\n      return;\n    }\n\n    const wasFocused = lastTriggerEvent?.type === 'focus';\n\n    lastTriggerEvent = event;\n    currentTarget = event.currentTarget as Element;\n\n    handleAriaExpandedAttribute();\n\n    if (!instance.state.isVisible && isMouseEvent(event)) {\n      // If scrolling, `mouseenter` events can be fired if the cursor lands\n      // over a new target, but `mousemove` events don't get fired. This\n      // causes interactive tooltips to get stuck open until the cursor is\n      // moved\n      mouseMoveListeners.forEach((listener) => listener(event));\n    }\n\n    // Toggle show/hide when clicking click-triggered tooltips\n    if (\n      event.type === 'click' &&\n      (instance.props.trigger.indexOf('mouseenter') < 0 ||\n        isVisibleFromClick) &&\n      instance.props.hideOnClick !== false &&\n      instance.state.isVisible\n    ) {\n      shouldScheduleClickHide = true;\n    } else {\n      scheduleShow(event);\n    }\n\n    if (event.type === 'click') {\n      isVisibleFromClick = !shouldScheduleClickHide;\n    }\n\n    if (shouldScheduleClickHide && !wasFocused) {\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseMove(event: MouseEvent): void {\n    const target = event.target as Node;\n    const isCursorOverReferenceOrPopper =\n      getCurrentTarget().contains(target) || popper.contains(target);\n\n    if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n      return;\n    }\n\n    const popperTreeData = getNestedPopperTree()\n      .concat(popper)\n      .map((popper) => {\n        const instance = popper._tippy!;\n        const state = instance.popperInstance?.state;\n\n        if (state) {\n          return {\n            popperRect: popper.getBoundingClientRect(),\n            popperState: state,\n            props,\n          };\n        }\n\n        return null;\n      })\n      .filter(Boolean) as PopperTreeData[];\n\n    if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n      cleanupInteractiveMouseListeners();\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseLeave(event: MouseEvent): void {\n    const shouldBail =\n      isEventListenerStopped(event) ||\n      (instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick);\n\n    if (shouldBail) {\n      return;\n    }\n\n    if (instance.props.interactive) {\n      instance.hideWithInteractivity(event);\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function onBlurOrFocusOut(event: FocusEvent): void {\n    if (\n      instance.props.trigger.indexOf('focusin') < 0 &&\n      event.target !== getCurrentTarget()\n    ) {\n      return;\n    }\n\n    // If focus was moved to within the popper\n    if (\n      instance.props.interactive &&\n      event.relatedTarget &&\n      popper.contains(event.relatedTarget as Element)\n    ) {\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function isEventListenerStopped(event: Event): boolean {\n    return currentInput.isTouch\n      ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0\n      : false;\n  }\n\n  function createPopperInstance(): void {\n    destroyPopperInstance();\n\n    const {\n      popperOptions,\n      placement,\n      offset,\n      getReferenceClientRect,\n      moveTransition,\n    } = instance.props;\n\n    const arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n\n    const computedReference = getReferenceClientRect\n      ? {\n          getBoundingClientRect: getReferenceClientRect,\n          contextElement:\n            getReferenceClientRect.contextElement || getCurrentTarget(),\n        }\n      : reference;\n\n    const tippyModifier: Modifier<'$$tippy', Record<string, unknown>> = {\n      name: '$$tippy',\n      enabled: true,\n      phase: 'beforeWrite',\n      requires: ['computeStyles'],\n      fn({state}) {\n        if (getIsDefaultRenderFn()) {\n          const {box} = getDefaultTemplateChildren();\n\n          ['placement', 'reference-hidden', 'escaped'].forEach((attr) => {\n            if (attr === 'placement') {\n              box.setAttribute('data-placement', state.placement);\n            } else {\n              if (state.attributes.popper[`data-popper-${attr}`]) {\n                box.setAttribute(`data-${attr}`, '');\n              } else {\n                box.removeAttribute(`data-${attr}`);\n              }\n            }\n          });\n\n          state.attributes.popper = {};\n        }\n      },\n    };\n\n    type TippyModifier = Modifier<'$$tippy', Record<string, unknown>>;\n    type ExtendedModifiers = StrictModifiers | Partial<TippyModifier>;\n\n    const modifiers: Array<ExtendedModifiers> = [\n      {\n        name: 'offset',\n        options: {\n          offset,\n        },\n      },\n      {\n        name: 'preventOverflow',\n        options: {\n          padding: {\n            top: 2,\n            bottom: 2,\n            left: 5,\n            right: 5,\n          },\n        },\n      },\n      {\n        name: 'flip',\n        options: {\n          padding: 5,\n        },\n      },\n      {\n        name: 'computeStyles',\n        options: {\n          adaptive: !moveTransition,\n        },\n      },\n      tippyModifier,\n    ];\n\n    if (getIsDefaultRenderFn() && arrow) {\n      modifiers.push({\n        name: 'arrow',\n        options: {\n          element: arrow,\n          padding: 3,\n        },\n      });\n    }\n\n    modifiers.push(...(popperOptions?.modifiers || []));\n\n    instance.popperInstance = createPopper<ExtendedModifiers>(\n      computedReference,\n      popper,\n      {\n        ...popperOptions,\n        placement,\n        onFirstUpdate,\n        modifiers,\n      }\n    );\n  }\n\n  function destroyPopperInstance(): void {\n    if (instance.popperInstance) {\n      instance.popperInstance.destroy();\n      instance.popperInstance = null;\n    }\n  }\n\n  function mount(): void {\n    const {appendTo} = instance.props;\n\n    let parentNode: any;\n\n    // By default, we'll append the popper to the triggerTargets's parentNode so\n    // it's directly after the reference element so the elements inside the\n    // tippy can be tabbed to\n    // If there are clipping issues, the user can specify a different appendTo\n    // and ensure focus management is handled correctly manually\n    const node = getCurrentTarget();\n\n    if (\n      (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO) ||\n      appendTo === 'parent'\n    ) {\n      parentNode = node.parentNode;\n    } else {\n      parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n    }\n\n    // The popper element needs to exist on the DOM before its position can be\n    // updated as Popper needs to read its dimensions\n    if (!parentNode.contains(popper)) {\n      parentNode.appendChild(popper);\n    }\n\n    instance.state.isMounted = true;\n\n    createPopperInstance();\n\n    /* istanbul ignore else */\n    if (__DEV__) {\n      // Accessibility check\n      warnWhen(\n        instance.props.interactive &&\n          appendTo === defaultProps.appendTo &&\n          node.nextElementSibling !== popper,\n        [\n          'Interactive tippy element may not be accessible via keyboard',\n          'navigation because it is not directly after the reference element',\n          'in the DOM source order.',\n          '\\n\\n',\n          'Using a wrapper <div> or <span> tag around the reference element',\n          'solves this by creating a new parentNode context.',\n          '\\n\\n',\n          'Specifying `appendTo: document.body` silences this warning, but it',\n          'assumes you are using a focus management solution to handle',\n          'keyboard navigation.',\n          '\\n\\n',\n          'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity',\n        ].join(' ')\n      );\n    }\n  }\n\n  function getNestedPopperTree(): PopperElement[] {\n    return arrayFrom(\n      popper.querySelectorAll('[data-__NAMESPACE_PREFIX__-root]')\n    );\n  }\n\n  function scheduleShow(event?: Event): void {\n    instance.clearDelayTimeouts();\n\n    if (event) {\n      invokeHook('onTrigger', [instance, event]);\n    }\n\n    addDocumentPress();\n\n    let delay = getDelay(true);\n    const [touchValue, touchDelay] = getNormalizedTouchSettings();\n\n    if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n      delay = touchDelay;\n    }\n\n    if (delay) {\n      showTimeout = setTimeout(() => {\n        instance.show();\n      }, delay);\n    } else {\n      instance.show();\n    }\n  }\n\n  function scheduleHide(event: Event): void {\n    instance.clearDelayTimeouts();\n\n    invokeHook('onUntrigger', [instance, event]);\n\n    if (!instance.state.isVisible) {\n      removeDocumentPress();\n\n      return;\n    }\n\n    // For interactive tippies, scheduleHide is added to a document.body handler\n    // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n    // events when trigger contains mouseenter and click, and the tip is\n    // currently shown as a result of a click.\n    if (\n      instance.props.trigger.indexOf('mouseenter') >= 0 &&\n      instance.props.trigger.indexOf('click') >= 0 &&\n      ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 &&\n      isVisibleFromClick\n    ) {\n      return;\n    }\n\n    const delay = getDelay(false);\n\n    if (delay) {\n      hideTimeout = setTimeout(() => {\n        if (instance.state.isVisible) {\n          instance.hide();\n        }\n      }, delay);\n    } else {\n      // Fixes a `transitionend` problem when it fires 1 frame too\n      // late sometimes, we don't want hide() to be called.\n      scheduleHideAnimationFrame = requestAnimationFrame(() => {\n        instance.hide();\n      });\n    }\n  }\n\n  // ===========================================================================\n  // 🔑 Public methods\n  // ===========================================================================\n  function enable(): void {\n    instance.state.isEnabled = true;\n  }\n\n  function disable(): void {\n    // Disabling the instance should also hide it\n    // https://github.com/atomiks/tippy.js-react/issues/106\n    instance.hide();\n    instance.state.isEnabled = false;\n  }\n\n  function clearDelayTimeouts(): void {\n    clearTimeout(showTimeout);\n    clearTimeout(hideTimeout);\n    cancelAnimationFrame(scheduleHideAnimationFrame);\n  }\n\n  function setProps(partialProps: Partial<Props>): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    invokeHook('onBeforeUpdate', [instance, partialProps]);\n\n    removeListeners();\n\n    const prevProps = instance.props;\n    const nextProps = evaluateProps(reference, {\n      ...prevProps,\n      ...removeUndefinedProps(partialProps),\n      ignoreAttributes: true,\n    });\n\n    instance.props = nextProps;\n\n    addListeners();\n\n    if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n      cleanupInteractiveMouseListeners();\n      debouncedOnMouseMove = debounce(\n        onMouseMove,\n        nextProps.interactiveDebounce\n      );\n    }\n\n    // Ensure stale aria-expanded attributes are removed\n    if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n      normalizeToArray(prevProps.triggerTarget).forEach((node) => {\n        node.removeAttribute('aria-expanded');\n      });\n    } else if (nextProps.triggerTarget) {\n      reference.removeAttribute('aria-expanded');\n    }\n\n    handleAriaExpandedAttribute();\n    handleStyles();\n\n    if (onUpdate) {\n      onUpdate(prevProps, nextProps);\n    }\n\n    if (instance.popperInstance) {\n      createPopperInstance();\n\n      // Fixes an issue with nested tippies if they are all getting re-rendered,\n      // and the nested ones get re-rendered first.\n      // https://github.com/atomiks/tippyjs-react/issues/177\n      // TODO: find a cleaner / more efficient solution(!)\n      getNestedPopperTree().forEach((nestedPopper) => {\n        // React (and other UI libs likely) requires a rAF wrapper as it flushes\n        // its work in one\n        requestAnimationFrame(nestedPopper._tippy!.popperInstance!.forceUpdate);\n      });\n    }\n\n    invokeHook('onAfterUpdate', [instance, partialProps]);\n  }\n\n  function setContent(content: Content): void {\n    instance.setProps({content});\n  }\n\n  function show(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n    }\n\n    // Early bail-out\n    const isAlreadyVisible = instance.state.isVisible;\n    const isDestroyed = instance.state.isDestroyed;\n    const isDisabled = !instance.state.isEnabled;\n    const isTouchAndTouchDisabled =\n      currentInput.isTouch && !instance.props.touch;\n    const duration = getValueAtIndexOrReturn(\n      instance.props.duration,\n      0,\n      defaultProps.duration\n    );\n\n    if (\n      isAlreadyVisible ||\n      isDestroyed ||\n      isDisabled ||\n      isTouchAndTouchDisabled\n    ) {\n      return;\n    }\n\n    // Normalize `disabled` behavior across browsers.\n    // Firefox allows events on disabled elements, but Chrome doesn't.\n    // Using a wrapper element (i.e. <span>) is recommended.\n    if (getCurrentTarget().hasAttribute('disabled')) {\n      return;\n    }\n\n    invokeHook('onShow', [instance], false);\n    if (instance.props.onShow(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = true;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'visible';\n    }\n\n    handleStyles();\n    addDocumentPress();\n\n    if (!instance.state.isMounted) {\n      popper.style.transition = 'none';\n    }\n\n    // If flipping to the opposite side after hiding at least once, the\n    // animation will use the wrong placement without resetting the duration\n    if (getIsDefaultRenderFn()) {\n      const {box, content} = getDefaultTemplateChildren();\n      setTransitionDuration([box, content], 0);\n    }\n\n    onFirstUpdate = (): void => {\n      if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n        return;\n      }\n\n      ignoreOnFirstUpdate = true;\n\n      // reflow\n      void popper.offsetHeight;\n\n      popper.style.transition = instance.props.moveTransition;\n\n      if (getIsDefaultRenderFn() && instance.props.animation) {\n        const {box, content} = getDefaultTemplateChildren();\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'visible');\n      }\n\n      handleAriaContentAttribute();\n      handleAriaExpandedAttribute();\n\n      pushIfUnique(mountedInstances, instance);\n\n      // certain modifiers (e.g. `maxSize`) require a second update after the\n      // popper has been positioned for the first time\n      instance.popperInstance?.forceUpdate();\n\n      invokeHook('onMount', [instance]);\n\n      if (instance.props.animation && getIsDefaultRenderFn()) {\n        onTransitionedIn(duration, () => {\n          instance.state.isShown = true;\n          invokeHook('onShown', [instance]);\n        });\n      }\n    };\n\n    mount();\n  }\n\n  function hide(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n    }\n\n    // Early bail-out\n    const isAlreadyHidden = !instance.state.isVisible;\n    const isDestroyed = instance.state.isDestroyed;\n    const isDisabled = !instance.state.isEnabled;\n    const duration = getValueAtIndexOrReturn(\n      instance.props.duration,\n      1,\n      defaultProps.duration\n    );\n\n    if (isAlreadyHidden || isDestroyed || isDisabled) {\n      return;\n    }\n\n    invokeHook('onHide', [instance], false);\n    if (instance.props.onHide(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = false;\n    instance.state.isShown = false;\n    ignoreOnFirstUpdate = false;\n    isVisibleFromClick = false;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'hidden';\n    }\n\n    cleanupInteractiveMouseListeners();\n    removeDocumentPress();\n    handleStyles(true);\n\n    if (getIsDefaultRenderFn()) {\n      const {box, content} = getDefaultTemplateChildren();\n\n      if (instance.props.animation) {\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'hidden');\n      }\n    }\n\n    handleAriaContentAttribute();\n    handleAriaExpandedAttribute();\n\n    if (instance.props.animation) {\n      if (getIsDefaultRenderFn()) {\n        onTransitionedOut(duration, instance.unmount);\n      }\n    } else {\n      instance.unmount();\n    }\n  }\n\n  function hideWithInteractivity(event: MouseEvent): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(\n        instance.state.isDestroyed,\n        createMemoryLeakWarning('hideWithInteractivity')\n      );\n    }\n\n    getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n    debouncedOnMouseMove(event);\n  }\n\n  function unmount(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n    }\n\n    if (instance.state.isVisible) {\n      instance.hide();\n    }\n\n    if (!instance.state.isMounted) {\n      return;\n    }\n\n    destroyPopperInstance();\n\n    // If a popper is not interactive, it will be appended outside the popper\n    // tree by default. This seems mainly for interactive tippies, but we should\n    // find a workaround if possible\n    getNestedPopperTree().forEach((nestedPopper) => {\n      nestedPopper._tippy!.unmount();\n    });\n\n    if (popper.parentNode) {\n      popper.parentNode.removeChild(popper);\n    }\n\n    mountedInstances = mountedInstances.filter((i) => i !== instance);\n\n    instance.state.isMounted = false;\n    invokeHook('onHidden', [instance]);\n  }\n\n  function destroy(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    instance.clearDelayTimeouts();\n    instance.unmount();\n\n    removeListeners();\n\n    delete reference._tippy;\n\n    instance.state.isDestroyed = true;\n\n    invokeHook('onDestroy', [instance]);\n  }\n}\n","import bindGlobalEventListeners, {\n  currentInput,\n} from './bindGlobalEventListeners';\nimport createTippy, {mountedInstances} from './createTippy';\nimport {getArrayOfElements, isElement, isReferenceElement} from './dom-utils';\nimport {defaultProps, setDefaultProps, validateProps} from './props';\nimport {HideAll, HideAllOptions, Instance, Props, Targets} from './types';\nimport {validateTargets, warnWhen} from './validation';\n\nfunction tippy(\n  targets: Targets,\n  optionalProps: Partial<Props> = {}\n): Instance | Instance[] {\n  const plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n\n  /* istanbul ignore else */\n  if (__DEV__) {\n    validateTargets(targets);\n    validateProps(optionalProps, plugins);\n  }\n\n  bindGlobalEventListeners();\n\n  const passedProps: Partial<Props> = {...optionalProps, plugins};\n\n  const elements = getArrayOfElements(targets);\n\n  /* istanbul ignore else */\n  if (__DEV__) {\n    const isSingleContentElement = isElement(passedProps.content);\n    const isMoreThanOneReferenceElement = elements.length > 1;\n    warnWhen(\n      isSingleContentElement && isMoreThanOneReferenceElement,\n      [\n        'tippy() was passed an Element as the `content` prop, but more than',\n        'one tippy instance was created by this invocation. This means the',\n        'content element will only be appended to the last tippy instance.',\n        '\\n\\n',\n        'Instead, pass the .innerHTML of the element, or use a function that',\n        'returns a cloned version of the element instead.',\n        '\\n\\n',\n        '1) content: element.innerHTML\\n',\n        '2) content: () => element.cloneNode(true)',\n      ].join(' ')\n    );\n  }\n\n  const instances = elements.reduce<Instance[]>(\n    (acc, reference): Instance[] => {\n      const instance = reference && createTippy(reference, passedProps);\n\n      if (instance) {\n        acc.push(instance);\n      }\n\n      return acc;\n    },\n    []\n  );\n\n  return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\n\nexport default tippy;\n\nexport const hideAll: HideAll = ({\n  exclude: excludedReferenceOrInstance,\n  duration,\n}: HideAllOptions = {}) => {\n  mountedInstances.forEach((instance) => {\n    let isExcluded = false;\n\n    if (excludedReferenceOrInstance) {\n      isExcluded = isReferenceElement(excludedReferenceOrInstance)\n        ? instance.reference === excludedReferenceOrInstance\n        : instance.popper === (excludedReferenceOrInstance as Instance).popper;\n    }\n\n    if (!isExcluded) {\n      const originalDuration = instance.props.duration;\n\n      instance.setProps({duration});\n      instance.hide();\n\n      if (!instance.state.isDestroyed) {\n        instance.setProps({duration: originalDuration});\n      }\n    }\n  });\n};\n","import tippy from '..';\nimport {div} from '../dom-utils';\nimport {\n  CreateSingleton,\n  Plugin,\n  CreateSingletonProps,\n  ReferenceElement,\n  CreateSingletonInstance,\n  Instance,\n  Props,\n} from '../types';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\nimport {applyStyles, Modifier} from '@popperjs/core';\n\n// The default `applyStyles` modifier has a cleanup function that gets called\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\nconst applyStylesModifier: Modifier<'applyStyles', Record<string, unknown>> = {\n  ...applyStyles,\n  effect({state}) {\n    const initialStyles = {\n      popper: {\n        position: state.options.strategy,\n        left: '0',\n        top: '0',\n        margin: '0',\n      },\n      arrow: {\n        position: 'absolute',\n      },\n      reference: {},\n    };\n\n    Object.assign(state.elements.popper.style, initialStyles.popper);\n    state.styles = initialStyles;\n\n    if (state.elements.arrow) {\n      Object.assign(state.elements.arrow.style, initialStyles.arrow);\n    }\n\n    // intentionally return no cleanup function\n    // return () => { ... }\n  },\n};\n\nconst createSingleton: CreateSingleton = (\n  tippyInstances,\n  optionalProps = {}\n) => {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    errorWhen(\n      !Array.isArray(tippyInstances),\n      [\n        'The first argument passed to createSingleton() must be an array of',\n        'tippy instances. The passed value was',\n        String(tippyInstances),\n      ].join(' ')\n    );\n  }\n\n  let individualInstances = tippyInstances;\n  let references: Array<ReferenceElement> = [];\n  let triggerTargets: Array<Element> = [];\n  let currentTarget: Element | null;\n  let overrides = optionalProps.overrides;\n  let interceptSetPropsCleanups: Array<() => void> = [];\n  let shownOnCreate = false;\n\n  function setTriggerTargets(): void {\n    triggerTargets = individualInstances\n      .map((instance) =>\n        normalizeToArray(instance.props.triggerTarget || instance.reference)\n      )\n      .reduce((acc, item) => acc.concat(item), []);\n  }\n\n  function setReferences(): void {\n    references = individualInstances.map((instance) => instance.reference);\n  }\n\n  function enableInstances(isEnabled: boolean): void {\n    individualInstances.forEach((instance) => {\n      if (isEnabled) {\n        instance.enable();\n      } else {\n        instance.disable();\n      }\n    });\n  }\n\n  function interceptSetProps(singleton: Instance): Array<() => void> {\n    return individualInstances.map((instance) => {\n      const originalSetProps = instance.setProps;\n\n      instance.setProps = (props): void => {\n        originalSetProps(props);\n\n        if (instance.reference === currentTarget) {\n          singleton.setProps(props);\n        }\n      };\n\n      return (): void => {\n        instance.setProps = originalSetProps;\n      };\n    });\n  }\n\n  // have to pass singleton, as it maybe undefined on first call\n  function prepareInstance(\n    singleton: Instance,\n    target: ReferenceElement\n  ): void {\n    const index = triggerTargets.indexOf(target);\n\n    // bail-out\n    if (target === currentTarget) {\n      return;\n    }\n\n    currentTarget = target;\n\n    const overrideProps: Partial<Props> = (overrides || [])\n      .concat('content')\n      .reduce((acc, prop) => {\n        (acc as any)[prop] = individualInstances[index].props[prop];\n        return acc;\n      }, {});\n\n    singleton.setProps({\n      ...overrideProps,\n      getReferenceClientRect:\n        typeof overrideProps.getReferenceClientRect === 'function'\n          ? overrideProps.getReferenceClientRect\n          : (): ClientRect => references[index]?.getBoundingClientRect(),\n    });\n  }\n\n  enableInstances(false);\n  setReferences();\n  setTriggerTargets();\n\n  const plugin: Plugin = {\n    fn() {\n      return {\n        onDestroy(): void {\n          enableInstances(true);\n        },\n        onHidden(): void {\n          currentTarget = null;\n        },\n        onClickOutside(instance): void {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            currentTarget = null;\n          }\n        },\n        onShow(instance): void {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            prepareInstance(instance, references[0]);\n          }\n        },\n        onTrigger(instance, event): void {\n          prepareInstance(instance, event.currentTarget as Element);\n        },\n      };\n    },\n  };\n\n  const singleton = tippy(div(), {\n    ...removeProperties(optionalProps, ['overrides']),\n    plugins: [plugin, ...(optionalProps.plugins || [])],\n    triggerTarget: triggerTargets,\n    popperOptions: {\n      ...optionalProps.popperOptions,\n      modifiers: [\n        ...(optionalProps.popperOptions?.modifiers || []),\n        applyStylesModifier,\n      ],\n    },\n  }) as CreateSingletonInstance<CreateSingletonProps>;\n\n  const originalShow = singleton.show;\n\n  singleton.show = (target?: ReferenceElement | Instance | number): void => {\n    originalShow();\n\n    // first time, showOnCreate or programmatic call with no params\n    // default to showing first instance\n    if (!currentTarget && target == null) {\n      return prepareInstance(singleton, references[0]);\n    }\n\n    // triggered from event (do nothing as prepareInstance already called by onTrigger)\n    // programmatic call with no params when already visible (do nothing again)\n    if (currentTarget && target == null) {\n      return;\n    }\n\n    // target is index of instance\n    if (typeof target === 'number') {\n      return (\n        references[target] && prepareInstance(singleton, references[target])\n      );\n    }\n\n    // target is a child tippy instance\n    if (individualInstances.indexOf(target as Instance) >= 0) {\n      const ref = (target as Instance).reference;\n      return prepareInstance(singleton, ref);\n    }\n\n    // target is a ReferenceElement\n    if (references.indexOf(target as ReferenceElement) >= 0) {\n      return prepareInstance(singleton, target as ReferenceElement);\n    }\n  };\n\n  singleton.showNext = (): void => {\n    const first = references[0];\n    if (!currentTarget) {\n      return singleton.show(0);\n    }\n    const index = references.indexOf(currentTarget);\n    singleton.show(references[index + 1] || first);\n  };\n\n  singleton.showPrevious = (): void => {\n    const last = references[references.length - 1];\n    if (!currentTarget) {\n      return singleton.show(last);\n    }\n    const index = references.indexOf(currentTarget);\n    const target = references[index - 1] || last;\n    singleton.show(target);\n  };\n\n  const originalSetProps = singleton.setProps;\n\n  singleton.setProps = (props): void => {\n    overrides = props.overrides || overrides;\n    originalSetProps(props);\n  };\n\n  singleton.setInstances = (nextInstances): void => {\n    enableInstances(true);\n    interceptSetPropsCleanups.forEach((fn) => fn());\n\n    individualInstances = nextInstances;\n\n    enableInstances(false);\n    setReferences();\n    setTriggerTargets();\n    interceptSetPropsCleanups = interceptSetProps(singleton);\n\n    singleton.setProps({triggerTarget: triggerTargets});\n  };\n\n  interceptSetPropsCleanups = interceptSetProps(singleton);\n\n  return singleton;\n};\n\nexport default createSingleton;\n","import tippy from '..';\nimport {TOUCH_OPTIONS} from '../constants';\nimport {defaultProps} from '../props';\nimport {Instance, Props, Targets} from '../types';\nimport {ListenerObject} from '../types-internal';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\n\nconst BUBBLING_EVENTS_MAP = {\n  mouseover: 'mouseenter',\n  focusin: 'focus',\n  click: 'click',\n};\n\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\nfunction delegate(\n  targets: Targets,\n  props: Partial<Props> & {target: string}\n): Instance | Instance[] {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    errorWhen(\n      !(props && props.target),\n      [\n        'You must specity a `target` prop indicating a CSS selector string matching',\n        'the target elements that should receive a tippy.',\n      ].join(' ')\n    );\n  }\n\n  let listeners: ListenerObject[] = [];\n  let childTippyInstances: Instance[] = [];\n  let disabled = false;\n\n  const {target} = props;\n\n  const nativeProps = removeProperties(props, ['target']);\n  const parentProps = {...nativeProps, trigger: 'manual', touch: false};\n  const childProps = {\n    touch: defaultProps.touch,\n    ...nativeProps,\n    showOnCreate: true,\n  };\n\n  const returnValue = tippy(targets, parentProps);\n  const normalizedReturnValue = normalizeToArray(returnValue);\n\n  function onTrigger(event: Event): void {\n    if (!event.target || disabled) {\n      return;\n    }\n\n    const targetNode = (event.target as Element).closest(target);\n\n    if (!targetNode) {\n      return;\n    }\n\n    // Get relevant trigger with fallbacks:\n    // 1. Check `data-tippy-trigger` attribute on target node\n    // 2. Fallback to `trigger` passed to `delegate()`\n    // 3. Fallback to `defaultProps.trigger`\n    const trigger =\n      targetNode.getAttribute('data-tippy-trigger') ||\n      props.trigger ||\n      defaultProps.trigger;\n\n    // @ts-ignore\n    if (targetNode._tippy) {\n      return;\n    }\n\n    if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n      return;\n    }\n\n    if (\n      event.type !== 'touchstart' &&\n      trigger.indexOf((BUBBLING_EVENTS_MAP as any)[event.type]) < 0\n    ) {\n      return;\n    }\n\n    const instance = tippy(targetNode, childProps);\n\n    if (instance) {\n      childTippyInstances = childTippyInstances.concat(instance);\n    }\n  }\n\n  function on(\n    node: Element,\n    eventType: string,\n    handler: EventListener,\n    options: boolean | Record<string, unknown> = false\n  ): void {\n    node.addEventListener(eventType, handler, options);\n    listeners.push({node, eventType, handler, options});\n  }\n\n  function addEventListeners(instance: Instance): void {\n    const {reference} = instance;\n\n    on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n    on(reference, 'mouseover', onTrigger);\n    on(reference, 'focusin', onTrigger);\n    on(reference, 'click', onTrigger);\n  }\n\n  function removeEventListeners(): void {\n    listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function applyMutations(instance: Instance): void {\n    const originalDestroy = instance.destroy;\n    const originalEnable = instance.enable;\n    const originalDisable = instance.disable;\n\n    instance.destroy = (shouldDestroyChildInstances = true): void => {\n      if (shouldDestroyChildInstances) {\n        childTippyInstances.forEach((instance) => {\n          instance.destroy();\n        });\n      }\n\n      childTippyInstances = [];\n\n      removeEventListeners();\n      originalDestroy();\n    };\n\n    instance.enable = (): void => {\n      originalEnable();\n      childTippyInstances.forEach((instance) => instance.enable());\n      disabled = false;\n    };\n\n    instance.disable = (): void => {\n      originalDisable();\n      childTippyInstances.forEach((instance) => instance.disable());\n      disabled = true;\n    };\n\n    addEventListeners(instance);\n  }\n\n  normalizedReturnValue.forEach(applyMutations);\n\n  return returnValue;\n}\n\nexport default delegate;\n","import tippy from '../src';\nimport {render} from '../src/template';\n\ntippy.setDefaultProps({render});\n\nexport {default, hideAll} from '../src';\nexport {default as createSingleton} from '../src/addons/createSingleton';\nexport {default as delegate} from '../src/addons/delegate';\nexport {default as animateFill} from '../src/plugins/animateFill';\nexport {default as followCursor} from '../src/plugins/followCursor';\nexport {default as inlinePositioning} from '../src/plugins/inlinePositioning';\nexport {default as sticky} from '../src/plugins/sticky';\nexport {ROUND_ARROW as roundArrow} from '../src/constants';\n","/** @type {import('./index.js').Schema} */\nexport const defaultSchema = {\n  strip: ['script'],\n  clobberPrefix: 'user-content-',\n  clobber: ['name', 'id'],\n  ancestors: {\n    tbody: ['table'],\n    tfoot: ['table'],\n    thead: ['table'],\n    td: ['table'],\n    th: ['table'],\n    tr: ['table']\n  },\n  protocols: {\n    href: ['http', 'https', 'mailto', 'xmpp', 'irc', 'ircs'],\n    cite: ['http', 'https'],\n    src: ['http', 'https'],\n    longDesc: ['http', 'https']\n  },\n  tagNames: [\n    'h1',\n    'h2',\n    'h3',\n    'h4',\n    'h5',\n    'h6',\n    'br',\n    'b',\n    'i',\n    'strong',\n    'em',\n    'a',\n    'pre',\n    'code',\n    'img',\n    'tt',\n    'div',\n    'ins',\n    'del',\n    'sup',\n    'sub',\n    'p',\n    'ol',\n    'ul',\n    'table',\n    'thead',\n    'tbody',\n    'tfoot',\n    'blockquote',\n    'dl',\n    'dt',\n    'dd',\n    'kbd',\n    'q',\n    'samp',\n    'var',\n    'hr',\n    'ruby',\n    'rt',\n    'rp',\n    'li',\n    'tr',\n    'td',\n    'th',\n    's',\n    'strike',\n    'summary',\n    'details',\n    'caption',\n    'figure',\n    'figcaption',\n    'abbr',\n    'bdo',\n    'cite',\n    'dfn',\n    'mark',\n    'small',\n    'span',\n    'time',\n    'wbr',\n    'input'\n  ],\n  attributes: {\n    a: ['href'],\n    img: ['src', 'longDesc'],\n    input: [\n      ['type', 'checkbox'],\n      ['disabled', true]\n    ],\n    li: [['className', 'task-list-item']],\n    div: ['itemScope', 'itemType'],\n    blockquote: ['cite'],\n    del: ['cite'],\n    ins: ['cite'],\n    q: ['cite'],\n    '*': [\n      'abbr',\n      'accept',\n      'acceptCharset',\n      'accessKey',\n      'action',\n      'align',\n      'alt',\n      'ariaDescribedBy',\n      'ariaHidden',\n      'ariaLabel',\n      'ariaLabelledBy',\n      'axis',\n      'border',\n      'cellPadding',\n      'cellSpacing',\n      'char',\n      'charOff',\n      'charSet',\n      'checked',\n      'clear',\n      'cols',\n      'colSpan',\n      'color',\n      'compact',\n      'coords',\n      'dateTime',\n      'dir',\n      'disabled',\n      'encType',\n      'htmlFor',\n      'frame',\n      'headers',\n      'height',\n      'hrefLang',\n      'hSpace',\n      'isMap',\n      'id',\n      'label',\n      'lang',\n      'maxLength',\n      'media',\n      'method',\n      'multiple',\n      'name',\n      'noHref',\n      'noShade',\n      'noWrap',\n      'open',\n      'prompt',\n      'readOnly',\n      'rel',\n      'rev',\n      'rows',\n      'rowSpan',\n      'rules',\n      'scope',\n      'selected',\n      'shape',\n      'size',\n      'span',\n      'start',\n      'summary',\n      'tabIndex',\n      'target',\n      'title',\n      'type',\n      'useMap',\n      'vAlign',\n      'value',\n      'vSpace',\n      'width',\n      'itemProp'\n    ]\n  },\n  required: {\n    input: {\n      type: 'checkbox',\n      disabled: true\n    }\n  }\n}\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('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n  /**\n   * @constructor\n   * @param {Properties} property\n   * @param {Normal} normal\n   * @param {string} [space]\n   */\n  constructor(property, normal, space) {\n    this.property = property\n    this.normal = normal\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  let index = -1\n\n  while (++index < definitions.length) {\n    Object.assign(property, definitions[index].property)\n    Object.assign(normal, definitions[index].normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n","export class Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   */\n  constructor(property, attribute) {\n    /** @type {string} */\n    this.property = property\n    /** @type {string} */\n    this.attribute = attribute\n  }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   * @param {number|null} [mask]\n   * @param {string} [space]\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n  if (value) {\n    // @ts-expect-error: assume `value` matches the expected value of `key`.\n    values[key] = value\n  }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  /** @type {string} */\n  let prop\n\n  for (prop in definition.properties) {\n    if (own.call(definition.properties, prop)) {\n      const value = definition.properties[prop]\n      const info = new DefinedInfo(\n        prop,\n        definition.transform(definition.attributes || {}, prop),\n        value,\n        definition.space\n      )\n\n      if (\n        definition.mustUseProperty &&\n        definition.mustUseProperty.includes(prop)\n      ) {\n        info.mustUseProperty = true\n      }\n\n      property[prop] = info\n\n      normal[normalize(prop)] = prop\n      normal[normalize(info.attribute)] = prop\n    }\n  }\n\n  return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n  space: 'xlink',\n  transform(_, prop) {\n    return 'xlink:' + prop.slice(5).toLowerCase()\n  },\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n  space: 'xml',\n  transform(_, prop) {\n    return 'xml:' + prop.slice(3).toLowerCase()\n  },\n  properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  space: 'xmlns',\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  transform: caseInsensitiveTransform,\n  properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n  transform(_, prop) {\n    return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n  },\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  }\n})\n","import {\n  boolean,\n  overloadedBoolean,\n  booleanish,\n  number,\n  spaceSeparated,\n  commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    blocking: spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: boolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shadowRootClonable: boolean,\n    shadowRootDelegatesFocus: boolean,\n    shadowRootMode: null,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  }\n})\n","import {\n  boolean,\n  number,\n  spaceSeparated,\n  commaSeparated,\n  commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n  space: 'svg',\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  transform: caseSensitiveTransform,\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  }\n})\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let prop = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n */\n\nconst search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n *   Type of selector.\n * @template {string} [DefaultTagName='div']\n *   Type of default tag name.\n * @param {Selector | null | undefined} [selector]\n *   Simple CSS selector.\n *\n *   Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n *   Multiple classes are allowed.\n *   Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n *   Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: import('./extract.js').ExtractTagName<Selector, DefaultTagName>}}\n *   Built element.\n */\nexport function parseSelector(selector, defaultTagName) {\n  const value = selector || ''\n  /** @type {Properties} */\n  const props = {}\n  let start = 0\n  /** @type {string | undefined} */\n  let previous\n  /** @type {string | undefined} */\n  let tagName\n\n  while (start < value.length) {\n    search.lastIndex = start\n    const match = search.exec(value)\n    const subvalue = value.slice(start, match ? match.index : value.length)\n\n    if (subvalue) {\n      if (!previous) {\n        tagName = subvalue\n      } else if (previous === '#') {\n        props.id = subvalue\n      } else if (Array.isArray(props.className)) {\n        props.className.push(subvalue)\n      } else {\n        props.className = [subvalue]\n      }\n\n      start += subvalue.length\n    }\n\n    if (match) {\n      previous = match[0]\n      start++\n    }\n  }\n\n  return {\n    type: 'element',\n    // @ts-expect-error: fine.\n    tagName: tagName || defaultTagName || 'div',\n    properties: props,\n    children: []\n  }\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @returns {string}\n *   Space-separated tokens.\n */\nexport function stringify(values) {\n  return values.join(' ').trim()\n}\n","/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nexport function stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n */\n\n/**\n * @typedef {Content | Root} Node\n *   Any concrete `hast` node.\n * @typedef {Root | Element} HResult\n *   Result from a `h` (or `s`) call.\n *\n * @typedef {string | number} HStyleValue\n *   Value for a CSS style field.\n * @typedef {Record<string, HStyleValue>} HStyle\n *   Supported value of a `style` prop.\n * @typedef {string | number | boolean | null | undefined} HPrimitiveValue\n *   Primitive property value.\n * @typedef {Array<string | number>} HArrayValue\n *   List of property values for space- or comma separated values (such as `className`).\n * @typedef {HPrimitiveValue | HArrayValue} HPropertyValue\n *   Primitive value or list value.\n * @typedef {{[property: string]: HPropertyValue | HStyle}} HProperties\n *   Acceptable value for element properties.\n *\n * @typedef {string | number | null | undefined} HPrimitiveChild\n *   Primitive children, either ignored (nullish), or turned into text nodes.\n * @typedef {Array<Node | HPrimitiveChild>} HArrayChild\n *   List of children.\n * @typedef {Node | HPrimitiveChild | HArrayChild} HChild\n *   Acceptable child value.\n */\n\nimport {find, normalize} from 'property-information'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {parse as spaces} from 'space-separated-tokens'\nimport {parse as commas} from 'comma-separated-tokens'\n\nconst buttonTypes = new Set(['menu', 'submit', 'reset', 'button'])\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Schema} schema\n * @param {string} defaultTagName\n * @param {Array<string>} [caseSensitive]\n */\nexport function core(schema, defaultTagName, caseSensitive) {\n  const adjust = caseSensitive && createAdjustMap(caseSensitive)\n\n  const h =\n    /**\n     * @type {{\n     *   (): Root\n     *   (selector: null | undefined, ...children: Array<HChild>): Root\n     *   (selector: string, properties?: HProperties, ...children: Array<HChild>): Element\n     *   (selector: string, ...children: Array<HChild>): Element\n     * }}\n     */\n    (\n      /**\n       * Hyperscript compatible DSL for creating virtual hast trees.\n       *\n       * @param {string | null} [selector]\n       * @param {HProperties | HChild} [properties]\n       * @param {Array<HChild>} children\n       * @returns {HResult}\n       */\n      function (selector, properties, ...children) {\n        let index = -1\n        /** @type {HResult} */\n        let node\n\n        if (selector === undefined || selector === null) {\n          node = {type: 'root', children: []}\n          // @ts-expect-error Properties are not supported for roots.\n          children.unshift(properties)\n        } else {\n          node = parseSelector(selector, defaultTagName)\n          // Normalize the name.\n          node.tagName = node.tagName.toLowerCase()\n          if (adjust && own.call(adjust, node.tagName)) {\n            node.tagName = adjust[node.tagName]\n          }\n\n          // Handle props.\n          if (isProperties(properties, node.tagName)) {\n            /** @type {string} */\n            let key\n\n            for (key in properties) {\n              if (own.call(properties, key)) {\n                // @ts-expect-error `node.properties` is set.\n                addProperty(schema, node.properties, key, properties[key])\n              }\n            }\n          } else {\n            children.unshift(properties)\n          }\n        }\n\n        // Handle children.\n        while (++index < children.length) {\n          addChild(node.children, children[index])\n        }\n\n        if (node.type === 'element' && node.tagName === 'template') {\n          node.content = {type: 'root', children: node.children}\n          node.children = []\n        }\n\n        return node\n      }\n    )\n\n  return h\n}\n\n/**\n * @param {HProperties | HChild} value\n * @param {string} name\n * @returns {value is HProperties}\n */\nfunction isProperties(value, name) {\n  if (\n    value === null ||\n    value === undefined ||\n    typeof value !== 'object' ||\n    Array.isArray(value)\n  ) {\n    return false\n  }\n\n  if (name === 'input' || !value.type || typeof value.type !== 'string') {\n    return true\n  }\n\n  if ('children' in value && Array.isArray(value.children)) {\n    return false\n  }\n\n  if (name === 'button') {\n    return buttonTypes.has(value.type.toLowerCase())\n  }\n\n  return !('value' in value)\n}\n\n/**\n * @param {Schema} schema\n * @param {Properties} properties\n * @param {string} key\n * @param {HStyle | HPropertyValue} value\n * @returns {void}\n */\nfunction addProperty(schema, properties, key, value) {\n  const info = find(schema, key)\n  let index = -1\n  /** @type {HPropertyValue} */\n  let result\n\n  // Ignore nullish and NaN values.\n  if (value === undefined || value === null) return\n\n  if (typeof value === 'number') {\n    // Ignore NaN.\n    if (Number.isNaN(value)) return\n\n    result = value\n  }\n  // Booleans.\n  else if (typeof value === 'boolean') {\n    result = value\n  }\n  // Handle list values.\n  else if (typeof value === 'string') {\n    if (info.spaceSeparated) {\n      result = spaces(value)\n    } else if (info.commaSeparated) {\n      result = commas(value)\n    } else if (info.commaOrSpaceSeparated) {\n      result = spaces(commas(value).join(' '))\n    } else {\n      result = parsePrimitive(info, info.property, value)\n    }\n  } else if (Array.isArray(value)) {\n    result = value.concat()\n  } else {\n    result = info.property === 'style' ? style(value) : String(value)\n  }\n\n  if (Array.isArray(result)) {\n    /** @type {Array<string | number>} */\n    const finalResult = []\n\n    while (++index < result.length) {\n      // @ts-expect-error Assume no booleans in array.\n      finalResult[index] = parsePrimitive(info, info.property, result[index])\n    }\n\n    result = finalResult\n  }\n\n  // Class names (which can be added both on the `selector` and here).\n  if (info.property === 'className' && Array.isArray(properties.className)) {\n    // @ts-expect-error Assume no booleans in `className`.\n    result = properties.className.concat(result)\n  }\n\n  properties[info.property] = result\n}\n\n/**\n * @param {Array<Content>} nodes\n * @param {HChild} value\n * @returns {void}\n */\nfunction addChild(nodes, value) {\n  let index = -1\n\n  if (value === undefined || value === null) {\n    // Empty.\n  } else if (typeof value === 'string' || typeof value === 'number') {\n    nodes.push({type: 'text', value: String(value)})\n  } else if (Array.isArray(value)) {\n    while (++index < value.length) {\n      addChild(nodes, value[index])\n    }\n  } else if (typeof value === 'object' && 'type' in value) {\n    if (value.type === 'root') {\n      addChild(nodes, value.children)\n    } else {\n      nodes.push(value)\n    }\n  } else {\n    throw new Error('Expected node, nodes, or string, got `' + value + '`')\n  }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n * @param {string} name\n * @param {HPrimitiveValue} value\n * @returns {HPrimitiveValue}\n */\nfunction parsePrimitive(info, name, value) {\n  if (typeof value === 'string') {\n    if (info.number && value && !Number.isNaN(Number(value))) {\n      return Number(value)\n    }\n\n    if (\n      (info.boolean || info.overloadedBoolean) &&\n      (value === '' || normalize(value) === normalize(name))\n    ) {\n      return true\n    }\n  }\n\n  return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {HStyle} value\n *   Style object.\n * @returns {string}\n *   CSS string.\n */\nfunction style(value) {\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {string} */\n  let key\n\n  for (key in value) {\n    if (own.call(value, key)) {\n      result.push([key, value[key]].join(': '))\n    }\n  }\n\n  return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {Array<string>} values\n *   List of properly cased keys.\n * @returns {Record<string, string>}\n *   Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n  /** @type {Record<string, string>} */\n  const result = {}\n  let index = -1\n\n  while (++index < values.length) {\n    result[values[index].toLowerCase()] = values[index]\n  }\n\n  return result\n}\n","export const svgCaseSensitiveTagNames = [\n  'altGlyph',\n  'altGlyphDef',\n  'altGlyphItem',\n  'animateColor',\n  'animateMotion',\n  'animateTransform',\n  'clipPath',\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'foreignObject',\n  'glyphRef',\n  'linearGradient',\n  'radialGradient',\n  'solidColor',\n  'textArea',\n  'textPath'\n]\n","/**\n * @typedef {import('./core.js').HChild} Child\n *   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","/**\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} h.JSX.Element\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n */\n\nimport {html} from 'property-information'\nimport {core} from './core.js'\n\nexport const h = core(html, 'div')\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n  html: 'http://www.w3.org/1999/xhtml',\n  mathml: 'http://www.w3.org/1998/Math/MathML',\n  svg: 'http://www.w3.org/2000/svg',\n  xlink: 'http://www.w3.org/1999/xlink',\n  xml: 'http://www.w3.org/XML/1998/namespace',\n  xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('hast').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 `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it.\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<P5Node>} nodes\n *   Nodes.\n * @returns {Array<Content>}\n *   hast nodes.\n */\nfunction all(state, nodes) {\n  let index = -1\n  /** @type {Array<Content>} */\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<string, string>} */\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: <https://github.com/inikulin/parse5/issues/109>.\n    if (\n      result &&\n      !location.endTag &&\n      tail &&\n      tail.position &&\n      tail.position.end\n    ) {\n      result.end = Object.assign({}, tail.position.end)\n    }\n\n    if (state.verbose) {\n      /** @type {Record<string, Position | undefined>} */\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<number>} */\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<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n *   Configuration (required).\n * @property {Invalid} [invalid]\n *   Handler to use for invalid values.\n * @property {Unknown} [unknown]\n *   Handler to use for unknown values.\n * @property {Handlers} [handlers]\n *   Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n *   Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n *   Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n  const settings = options || {}\n\n  /**\n   * Handle one value.\n   *\n   * Based on the bound `key`, a respective handler will be called.\n   * If `value` is not an object, or doesn’t have a `key` property, the special\n   * “invalid” handler will be called.\n   * If `value` has an unknown `key`, the special “unknown” handler will be\n   * called.\n   *\n   * All arguments, and the context object, are passed through to the handler,\n   * and it’s result is returned.\n   *\n   * @this {unknown}\n   *   Any context object.\n   * @param {unknown} [value]\n   *   Any value.\n   * @param {...unknown} parameters\n   *   Arbitrary parameters passed to the zwitch.\n   * @property {Handler} invalid\n   *   Handle for values that do not have a certain ID field.\n   * @property {Handler} unknown\n   *   Handle values that do have a certain ID field, but it’s set to a value\n   *   that is not listed in the `handlers` record.\n   * @property {Handlers} handlers\n   *   Record of handlers.\n   * @returns {unknown}\n   *   Anything.\n   */\n  function one(value, ...parameters) {\n    /** @type {Handler|undefined} */\n    let fn = one.invalid\n    const handlers = one.handlers\n\n    if (value && own.call(value, key)) {\n      // @ts-expect-error Indexable.\n      const id = String(value[key])\n      // @ts-expect-error Indexable.\n      fn = own.call(handlers, id) ? handlers[id] : one.unknown\n    }\n\n    if (fn) {\n      return fn.call(this, value, ...parameters)\n    }\n  }\n\n  one.handlers = settings.handlers || {}\n  one.invalid = settings.invalid\n  one.unknown = settings.unknown\n\n  // @ts-expect-error: matches!\n  return one\n}\n","/**\n * @typedef {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<P5Node, P5Document | P5Fragment>} 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 `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it.\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<P5Attribute>} */\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> | 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<Content>} children\n *   List of children.\n * @param {P5Parent} parentNode\n *   `parse5` parent node.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Array<P5Child>}\n *   Transformed children.\n */\nfunction all(children, parentNode, schema) {\n  let index = -1\n  /** @type {Array<P5Child>} */\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<string>}\n */\nexport const htmlVoidElements = [\n  'area',\n  'base',\n  'basefont',\n  'bgsound',\n  'br',\n  'col',\n  'command',\n  'embed',\n  'frame',\n  'hr',\n  'image',\n  'img',\n  'input',\n  'isindex',\n  'keygen',\n  'link',\n  'menuitem',\n  'meta',\n  'nextid',\n  'param',\n  'source',\n  'track',\n  'wbr'\n]\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentFragment} P5Fragment\n * @typedef {Omit<import('parse5').Element, 'parentNode'>} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {Omit<import('parse5').Location, 'startOffset' | 'endOffset'> & {startOffset: number|undefined, endOffset: number|undefined}} P5Location\n * @typedef {import('parse5').ParserOptions} P5ParserOptions\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {import('../complex-types').Raw} Raw\n *\n * @typedef {Omit<Comment, 'value'> & {value: {stitch: Node}}} Stitch\n *\n * @typedef Options\n * @property {Array<string>} [passThrough]\n *   List of custom hast node types to pass through (keep) in hast.\n *   If the passed through nodes have children, those children are expected to\n *   be hast and will be handled.\n *\n * @typedef HiddenTokenizer\n * @property {Array<HiddenLocationTracker>} __mixins\n *   Way too simple, but works for us.\n * @property {HiddenPreprocessor} preprocessor\n * @property {(value: string) => void} write\n * @property {() => number} _consume\n * @property {Array<HiddenToken>} tokenQueue\n * @property {string} state\n * @property {string} returnState\n * @property {number} charRefCode\n * @property {Array<number>} tempBuff\n * @property {Function} _flushCodePointsConsumedAsCharacterReference\n * @property {string} lastStartTagName\n * @property {number} consumedAfterSnapshot\n * @property {boolean} active\n * @property {HiddenToken|undefined} currentCharacterToken\n * @property {HiddenToken|undefined} currentToken\n * @property {unknown} currentAttr\n * @property {Function} NAMED_CHARACTER_REFERENCE_STATE\n * @property {Function} NUMERIC_CHARACTER_REFERENCE_END_STATE\n *\n * @typedef {Record<string, unknown> & {location: P5Location}} HiddenToken\n *\n * @typedef HiddenPreprocessor\n * @property {string|undefined} html\n * @property {number} pos\n * @property {number} lastGapPos\n * @property {number} lastCharPos\n * @property {Array<number>} gapStack\n * @property {boolean} skipNextNewLine\n * @property {boolean} lastChunkWritten\n * @property {boolean} endOfChunkHit\n *\n * @typedef HiddenLocationTracker\n * @property {P5Location|undefined} currentAttrLocation\n * @property {P5Location} ctLoc\n * @property {HiddenPosTracker} posTracker\n *\n * @typedef HiddenPosTracker\n * @property {boolean} isEol\n * @property {number} lineStartPos\n * @property {number} droppedBufferSize\n * @property {number} offset\n * @property {number} col\n * @property {number} line\n */\n\n// @ts-expect-error: untyped.\nimport Parser from 'parse5/lib/parser/index.js'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {visit} from 'unist-util-visit'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {toParse5} from 'hast-util-to-parse5'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst inTemplateMode = 'IN_TEMPLATE_MODE'\nconst dataState = 'DATA_STATE'\nconst characterToken = 'CHARACTER_TOKEN'\nconst startTagToken = 'START_TAG_TOKEN'\nconst endTagToken = 'END_TAG_TOKEN'\nconst commentToken = 'COMMENT_TOKEN'\nconst doctypeToken = 'DOCTYPE_TOKEN'\n\n/** @type {P5ParserOptions} */\nconst parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\n/**\n * Given a hast tree and an optional vfile (for positional info), return a new\n * parsed-again hast tree.\n *\n * @param tree\n *   Original hast tree.\n * @param file\n *   Virtual file for positional info, optional.\n * @param options\n *   Configuration.\n */\nexport const raw =\n  /**\n   * @type {(\n   *   ((tree: Node, file: VFile|undefined, options?: Options) => Node) &\n   *   ((tree: Node, options?: Options) => Node)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {VFile} [file]\n     * @param {Options} [options]\n     */\n    function (tree, file, options) {\n      let index = -1\n      const parser = new Parser(parseOptions)\n      const one = zwitch('type', {\n        handlers: {root, element, text, comment, doctype, raw: handleRaw},\n        // @ts-expect-error: hush.\n        unknown\n      })\n      /** @type {boolean|undefined} */\n      let stitches\n      /** @type {HiddenTokenizer|undefined} */\n      let tokenizer\n      /** @type {HiddenPreprocessor|undefined} */\n      let preprocessor\n      /** @type {HiddenPosTracker|undefined} */\n      let posTracker\n      /** @type {HiddenLocationTracker|undefined} */\n      let locationTracker\n\n      if (isOptions(file)) {\n        options = file\n        file = undefined\n      }\n\n      if (options && options.passThrough) {\n        while (++index < options.passThrough.length) {\n          // @ts-expect-error: hush.\n          one.handlers[options.passThrough[index]] = stitch\n        }\n      }\n\n      const result = fromParse5(\n        documentMode(tree) ? document() : fragment(),\n        file\n      )\n\n      if (stitches) {\n        visit(result, 'comment', (node, index, parent) => {\n          const stitch = /** @type {Stitch} */ (/** @type {unknown} */ (node))\n          if (stitch.value.stitch && parent !== null && index !== null) {\n            // @ts-expect-error: assume the stitch is allowed.\n            parent.children[index] = stitch.value.stitch\n            return index\n          }\n        })\n      }\n\n      // Unpack if possible and when not given a `root`.\n      if (\n        tree.type !== 'root' &&\n        result.type === 'root' &&\n        result.children.length === 1\n      ) {\n        return result.children[0]\n      }\n\n      return result\n\n      /**\n       * @returns {P5Fragment}\n       */\n      function fragment() {\n        /** @type {P5Element} */\n        const context = {\n          nodeName: 'template',\n          tagName: 'template',\n          attrs: [],\n          namespaceURI: webNamespaces.html,\n          childNodes: []\n        }\n        /** @type {P5Element} */\n        const mock = {\n          nodeName: 'documentmock',\n          tagName: 'documentmock',\n          attrs: [],\n          namespaceURI: webNamespaces.html,\n          childNodes: []\n        }\n        /** @type {P5Fragment} */\n        const doc = {nodeName: '#document-fragment', childNodes: []}\n\n        parser._bootstrap(mock, context)\n        parser._pushTmplInsertionMode(inTemplateMode)\n        parser._initTokenizerForFragmentParsing()\n        parser._insertFakeRootElement()\n        parser._resetInsertionMode()\n        parser._findFormInFragmentContext()\n\n        tokenizer = parser.tokenizer\n        /* c8 ignore next */\n        if (!tokenizer) throw new Error('Expected `tokenizer`')\n        preprocessor = tokenizer.preprocessor\n        locationTracker = tokenizer.__mixins[0]\n        posTracker = locationTracker.posTracker\n\n        one(tree)\n\n        resetTokenizer()\n\n        parser._adoptNodes(mock.childNodes[0], doc)\n\n        return doc\n      }\n\n      /**\n       * @returns {P5Document}\n       */\n      function document() {\n        /** @type {P5Document} */\n        const doc = parser.treeAdapter.createDocument()\n\n        parser._bootstrap(doc, undefined)\n        tokenizer = parser.tokenizer\n        /* c8 ignore next */\n        if (!tokenizer) throw new Error('Expected `tokenizer`')\n        preprocessor = tokenizer.preprocessor\n        locationTracker = tokenizer.__mixins[0]\n        posTracker = locationTracker.posTracker\n\n        one(tree)\n\n        resetTokenizer()\n\n        return doc\n      }\n\n      /**\n       * @param {Array<Content>} nodes\n       * @returns {void}\n       */\n      function all(nodes) {\n        let index = -1\n\n        /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n        if (nodes) {\n          while (++index < nodes.length) {\n            one(nodes[index])\n          }\n        }\n      }\n\n      /**\n       * @param {Root} node\n       * @returns {void}\n       */\n      function root(node) {\n        all(node.children)\n      }\n\n      /**\n       * @param {Element} node\n       * @returns {void}\n       */\n      function element(node) {\n        resetTokenizer()\n        parser._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: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/preprocessor.js#L17>.\n        preprocessor.html = undefined\n        preprocessor.pos = -1\n        preprocessor.lastGapPos = -1\n        preprocessor.lastCharPos = -1\n        preprocessor.gapStack = []\n        preprocessor.skipNextNewLine = false\n        preprocessor.lastChunkWritten = false\n        preprocessor.endOfChunkHit = false\n\n        // Reset preprocessor mixin:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/position-tracking/preprocessor-mixin.js>.\n        posTracker.isEol = false\n        posTracker.lineStartPos = -column + 1 // Looks weird, but ensures we get correct positional info.\n        posTracker.droppedBufferSize = offset\n        posTracker.offset = 0\n        posTracker.col = 1\n        posTracker.line = line\n\n        // Reset location tracker:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js>.\n        locationTracker.currentAttrLocation = undefined\n        locationTracker.ctLoc = createParse5Location(node)\n\n        // See the code for `parse` and `parseFragment`:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/parser/index.js#L371>.\n        tokenizer.write(node.value)\n        parser._runParsingLoop(null)\n\n        // Character references hang, so if we ended there, we need to flush\n        // those too.\n        // We reset the preprocessor as if the document ends here.\n        // Then one single call to the relevant state does the trick, parse5\n        // consumes the whole token.\n        if (\n          tokenizer.state === 'NAMED_CHARACTER_REFERENCE_STATE' ||\n          tokenizer.state === 'NUMERIC_CHARACTER_REFERENCE_END_STATE'\n        ) {\n          preprocessor.lastChunkWritten = true\n          tokenizer[tokenizer.state](tokenizer._consume())\n        }\n      }\n\n      /**\n       * @param {Node} node\n       */\n      function stitch(node) {\n        stitches = true\n\n        /** @type {Node} */\n        let clone\n\n        // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n        // passed through node).\n        if ('children' in node) {\n          clone = {\n            ...node,\n            children: raw(\n              {type: 'root', children: node.children},\n              file,\n              options\n              // @ts-expect-error Assume a given parent yields a parent.\n            ).children\n          }\n        } else {\n          clone = {...node}\n        }\n\n        // Hack: `value` is supposed to be a string, but as none of the tools\n        // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n        // through.\n        comment({type: 'comment', value: {stitch: clone}})\n      }\n\n      function resetTokenizer() {\n        /* c8 ignore next 2 */\n        if (!tokenizer) throw new Error('Expected `tokenizer`')\n        if (!posTracker) throw new Error('Expected `posTracker`')\n\n        // Process final characters if they’re still there after hibernating.\n        // Similar to:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js#L95>.\n        const token = tokenizer.currentCharacterToken\n\n        if (token) {\n          token.location.endLine = posTracker.line\n          token.location.endCol = posTracker.col + 1\n          token.location.endOffset = posTracker.offset + 1\n          parser._processInputToken(token)\n        }\n\n        // Reset tokenizer:\n        // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/index.js#L218-L234>.\n        // Especially putting it back in the `data` state is useful: some elements,\n        // like textareas and iframes, change the state.\n        // See GH-7.\n        // But also if broken HTML is in `raw`, and then a correct element is given.\n        // See GH-11.\n        tokenizer.tokenQueue = []\n        tokenizer.state = dataState\n        tokenizer.returnState = ''\n        tokenizer.charRefCode = -1\n        tokenizer.tempBuff = []\n        tokenizer.lastStartTagName = ''\n        tokenizer.consumedAfterSnapshot = -1\n        tokenizer.active = false\n        tokenizer.currentCharacterToken = undefined\n        tokenizer.currentToken = undefined\n        tokenizer.currentAttr = undefined\n      }\n    }\n  )\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction startTag(node) {\n  /** @type {P5Location} */\n  const location = Object.assign(createParse5Location(node))\n  // @ts-expect-error extra positional info.\n  location.startTag = Object.assign({}, location)\n\n  // Untyped token.\n  return {\n    type: startTagToken,\n    tagName: node.tagName,\n    selfClosing: false,\n    attrs: attributes(node),\n    location\n  }\n}\n\n/**\n * @param {Element} node\n * @returns {Array<P5Attribute>}\n */\nfunction attributes(node) {\n  return toParse5({\n    tagName: node.tagName,\n    type: 'element',\n    properties: node.properties,\n    children: []\n    // @ts-expect-error Assume element.\n  }).attrs\n}\n\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction endTag(node) {\n  /** @type {P5Location} */\n  const location = Object.assign(createParse5Location(node))\n  // @ts-expect-error extra positional info.\n  location.startTag = Object.assign({}, location)\n\n  // Untyped token.\n  return {\n    type: endTagToken,\n    tagName: node.tagName,\n    attrs: [],\n    location\n  }\n}\n\n/**\n * @param {Node} node\n */\nfunction unknown(node) {\n  throw new Error('Cannot compile `' + node.type + '` node')\n}\n\n/**\n * @param {Node} node\n * @returns {boolean}\n */\nfunction documentMode(node) {\n  const head = node.type === 'root' ? node.children[0] : node\n  return Boolean(\n    head &&\n      (head.type === 'doctype' ||\n        (head.type === 'element' && head.tagName === 'html'))\n  )\n}\n\n/**\n * @param {Node|Stitch} node\n * @returns {P5Location}\n */\nfunction createParse5Location(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  return {\n    startLine: start.line,\n    startCol: start.column,\n    startOffset: start.offset,\n    endLine: end.line,\n    endCol: end.column,\n    endOffset: end.offset\n  }\n}\n\n/**\n * @param {VFile|Options|undefined} value\n * @return {value is Options}\n */\nfunction isOptions(value) {\n  return Boolean(value && !('message' in value && 'messages' in value))\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-raw').Options} Options\n * @typedef {import('hast-util-raw')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {raw} from 'hast-util-raw'\n\n/**\n * Plugin to parse the tree again (and raw nodes).\n * Keeping positional info OK.  🙌\n *\n * @type {import('unified').Plugin<[Options?] | Array<void>, Root>}\n */\nexport default function rehypeRaw(options = {}) {\n  return (tree, file) => {\n    // Assume that when a root was given, it’s also returned.\n    const result = /** @type {Root} */ (raw(tree, file, options))\n    return result\n  }\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {Content | Root} Node\n *\n * @typedef {Properties[string]} PropertyValue\n *   Possible property values.\n * @typedef {string | number | boolean} PrimitivePropertyValue\n *   Possible primitive HTML attribute values.\n *\n * @typedef {Record<string, Array<string | [string, ...Array<PrimitivePropertyValue | RegExp>]>>} Attributes\n *  Map of tag names to allow lists for each property.\n * @typedef {Record<string, Array<PrimitivePropertyValue | RegExp>>} AttributeClean\n *   Normalized input.\n *\n * @typedef Schema\n *   Sanitization configuration.\n * @property {Attributes | undefined} [attributes]\n *   Map of tag names to allowed properties.\n *\n *   The special `'*'` key defines property names allowed on all elements.\n * @property {Record<string, Record<string, PropertyValue>> | undefined} [required]\n *   Map of tag names to required property names and their default property value.\n * @property {Array<string> | undefined} [tagNames]\n *   List of allowed tag names.\n * @property {Record<string, Array<string>> | undefined} [protocols]\n *   Map of protocols to allow in property values.\n * @property {Record<string, Array<string>> | undefined} [ancestors]\n *   Map of tag names to their required ancestor elements.\n * @property {Array<string> | undefined} [clobber]\n *   List of allowed property names which can clobber.\n * @property {string | undefined} [clobberPrefix]\n *   Prefix to use before potentially clobbering property names.\n * @property {Array<string> | undefined} [strip]\n *   Names of elements to strip from the tree.\n * @property {boolean | undefined} [allowComments]\n *   Whether to allow comments.\n * @property {boolean | undefined} [allowDoctypes]\n *   Whether to allow doctypes.\n *\n * @typedef {(schema: Schema, value: any, node: any, stack: Array<string>) => unknown} Handler\n * @typedef {Record<string, Handler>} NodeDefinition\n * @typedef {((schema: Schema, node: Node) => NodeDefinition | undefined)} NodeDefinitionGetter\n * @typedef {Record<string, NodeDefinition | NodeDefinitionGetter>} NodeSchema\n */\n\nimport {defaultSchema} from './schema.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {NodeSchema} */\nconst nodeSchema = {\n  root: {children: all},\n  doctype: handleDoctype,\n  comment: handleComment,\n  element: {\n    tagName: handleTagName,\n    properties: handleProperties,\n    children: all\n  },\n  text: {value: handleValue},\n  '*': {data: allow, position: allow}\n}\n\n/**\n * Utility to sanitize a tree\n *\n * @param {Node} node\n *   Hast tree to sanitize\n * @param {Schema} [schema]\n *   Schema defining how to sanitize - defaults to Github style sanitation\n */\nexport function sanitize(node, schema) {\n  /** @type {Node} */\n  let ctx = {type: 'root', children: []}\n\n  if (node && typeof node === 'object' && node.type) {\n    const replace = one(\n      Object.assign({}, defaultSchema, schema || {}),\n      node,\n      []\n    )\n\n    if (replace) {\n      if (Array.isArray(replace)) {\n        if (replace.length === 1) {\n          ctx = replace[0]\n        } else {\n          // @ts-expect-error Assume `root` is not a child.\n          ctx.children = replace\n        }\n      } else {\n        ctx = replace\n      }\n    }\n  }\n\n  return ctx\n}\n\n/**\n * Sanitize `node`.\n *\n * @param {Schema} schema\n * @param {Node} node\n * @param {Array<string>} stack\n * @returns {Node | Array<Node> | undefined}\n */\nfunction one(schema, node, stack) {\n  const type = node && node.type\n  /** @type {Node} */\n  // @ts-expect-error rest of props added later.\n  const replacement = {type: node.type}\n  /** @type {boolean | undefined} */\n  let replace\n\n  if (own.call(nodeSchema, type)) {\n    /** @type {NodeDefinition | NodeDefinitionGetter | undefined} */\n    let definition = nodeSchema[type]\n\n    if (typeof definition === 'function') {\n      definition = definition(schema, node)\n    }\n\n    if (definition) {\n      const allowed = Object.assign({}, definition, nodeSchema['*'])\n      /** @type {string} */\n      let key\n\n      replace = true\n\n      for (key in allowed) {\n        if (own.call(allowed, key)) {\n          // @ts-expect-error: fine.\n          // type-coverage:ignore-next-line\n          const result = allowed[key](schema, node[key], node, stack)\n\n          // eslint-disable-next-line max-depth\n          if (result === false) {\n            replace = undefined\n            // Set the non-safe value.\n            // @ts-expect-error: fine.\n            // type-coverage:ignore-next-line\n            replacement[key] = node[key]\n          } else if (result !== undefined && result !== null) {\n            // @ts-expect-error: fine.\n            // type-coverage:ignore-next-line\n            replacement[key] = result\n          }\n        }\n      }\n    }\n  }\n\n  if (replace) {\n    return replacement\n  }\n\n  return replacement.type === 'element' &&\n    schema.strip &&\n    !schema.strip.includes(replacement.tagName)\n    ? replacement.children\n    : undefined\n}\n\n/**\n * Sanitize `children`.\n *\n * @type {Handler}\n * @param {Array<Node>} children\n * @param {Node} node\n * @returns {Array<Node>}\n */\nfunction all(schema, children, node, stack) {\n  /** @type {Array<Node>} */\n  const results = []\n\n  if (Array.isArray(children)) {\n    let index = -1\n\n    if (node.type === 'element') {\n      stack.push(node.tagName)\n    }\n\n    while (++index < children.length) {\n      const value = one(schema, children[index], stack)\n\n      if (value) {\n        if (Array.isArray(value)) {\n          results.push(...value)\n        } else {\n          results.push(value)\n        }\n      }\n    }\n\n    if (node.type === 'element') {\n      stack.pop()\n    }\n  }\n\n  return results\n}\n\n/** @type {NodeDefinitionGetter} */\nfunction handleDoctype(schema) {\n  return schema.allowDoctypes ? {name: handleDoctypeName} : undefined\n}\n\n/** @type {NodeDefinitionGetter} */\nfunction handleComment(schema) {\n  return schema.allowComments ? {value: handleCommentValue} : undefined\n}\n\n/**\n * Sanitize `properties`.\n *\n * @type {Handler}\n * @param {Properties} properties\n * @param {Element} node\n * @returns {Properties}\n */\nfunction handleProperties(schema, properties, node, stack) {\n  const name = handleTagName(schema, node.tagName, node, stack)\n  /* c8 ignore next */\n  const attrs = schema.attributes || {}\n  /* c8 ignore next */\n  const reqs = schema.required || {}\n  const props = properties || {}\n  const allowed = Object.assign(\n    {},\n    toPropertyValueMap(attrs['*']),\n    toPropertyValueMap(name && own.call(attrs, name) ? attrs[name] : [])\n  )\n  /** @type {Properties} */\n  const result = {}\n  /** @type {string} */\n  let key\n\n  for (key in props) {\n    if (own.call(props, key)) {\n      let value = props[key]\n      /** @type {AttributeClean[string]} */\n      let definition\n\n      if (own.call(allowed, key)) {\n        definition = allowed[key]\n      } else if (data(key) && own.call(allowed, 'data*')) {\n        definition = allowed['data*']\n      } else {\n        continue\n      }\n\n      value = Array.isArray(value)\n        ? handlePropertyValues(schema, value, key, definition)\n        : handlePropertyValue(schema, value, key, definition)\n\n      if (value !== undefined && value !== null) {\n        result[key] = value\n      }\n    }\n  }\n\n  if (name && own.call(reqs, name)) {\n    for (key in reqs[name]) {\n      if (!own.call(result, key)) {\n        result[key] = reqs[name][key]\n      }\n    }\n  }\n\n  return result\n}\n\n/**\n * Always return a valid HTML5 doctype.\n *\n * @type {Handler}\n * @returns {string}\n */\nfunction handleDoctypeName() {\n  return 'html'\n}\n\n/**\n * Sanitize `tagName`.\n *\n * @param {Schema} schema\n * @param {string} tagName\n * @param {Node} _\n * @param {Array<string>} stack\n * @returns {string | false}\n */\nfunction handleTagName(schema, tagName, _, stack) {\n  const name = typeof tagName === 'string' ? tagName : ''\n  let index = -1\n\n  if (\n    !name ||\n    name === '*' ||\n    (schema.tagNames && !schema.tagNames.includes(name))\n  ) {\n    return false\n  }\n\n  // Some nodes can break out of their context if they don’t have a certain\n  // ancestor.\n  if (schema.ancestors && own.call(schema.ancestors, name)) {\n    while (++index < schema.ancestors[name].length) {\n      if (stack.includes(schema.ancestors[name][index])) {\n        return name\n      }\n    }\n\n    return false\n  }\n\n  return name\n}\n\n/**\n * See <https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments>\n *\n * @type {Handler}\n * @param {unknown} value\n * @returns {string}\n */\nfunction handleCommentValue(_, value) {\n  /** @type {string} */\n  const result = typeof value === 'string' ? value : ''\n  const index = result.indexOf('-->')\n  return index < 0 ? result : result.slice(0, index)\n}\n\n/**\n * Sanitize `value`.\n *\n * @type {Handler}\n * @param {unknown} value\n * @returns {string}\n */\nfunction handleValue(_, value) {\n  return typeof value === 'string' ? value : ''\n}\n\n/**\n * Allow `value`.\n *\n * @type {Handler}\n * @param {unknown} value\n */\nfunction allow(_, value) {\n  return value\n}\n\n/**\n * Sanitize a property value which is a list.\n *\n * @param {Schema} schema\n * @param {Array<unknown>} values\n * @param {string} prop\n * @param {AttributeClean[string]} definition\n * @returns {Array<string | number>}\n */\nfunction handlePropertyValues(schema, values, prop, definition) {\n  let index = -1\n  /** @type {Array<string | number>} */\n  const result = []\n\n  while (++index < values.length) {\n    const value = handlePropertyValue(schema, values[index], prop, definition)\n\n    if (value !== undefined && value !== null) {\n      // @ts-expect-error Assume no booleans were in arrays.\n      result.push(value)\n    }\n  }\n\n  return result\n}\n\n/**\n * Sanitize a property value.\n *\n * @param {Schema} schema\n * @param {unknown} value\n * @param {string} prop\n * @param {AttributeClean[string]} definition\n * @returns {PropertyValue}\n */\nfunction handlePropertyValue(schema, value, prop, definition) {\n  if (\n    (typeof value === 'boolean' ||\n      typeof value === 'number' ||\n      typeof value === 'string') &&\n    safeProtocol(schema, value, prop) &&\n    (definition.length === 0 ||\n      definition.some((allowed) =>\n        allowed && typeof allowed === 'object' && 'flags' in allowed\n          ? allowed.test(String(value))\n          : allowed === value\n      ))\n  ) {\n    return schema.clobberPrefix &&\n      schema.clobber &&\n      schema.clobber.includes(prop)\n      ? schema.clobberPrefix + value\n      : value\n  }\n}\n\n/**\n * Check whether `value` is a safe URL.\n *\n * @param {Schema} schema\n * @param {unknown} value\n * @param {string} prop\n * @returns {boolean}\n */\nfunction safeProtocol(schema, value, prop) {\n  const url = String(value)\n  const colon = url.indexOf(':')\n  const questionMark = url.indexOf('?')\n  const numberSign = url.indexOf('#')\n  const slash = url.indexOf('/')\n  const protocols =\n    schema.protocols && own.call(schema.protocols, prop)\n      ? schema.protocols[prop].concat()\n      : []\n  let index = -1\n\n  if (\n    protocols.length === 0 ||\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  ) {\n    return true\n  }\n\n  while (++index < protocols.length) {\n    if (\n      colon === protocols[index].length &&\n      url.slice(0, protocols[index].length) === protocols[index]\n    ) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Create a map from a list of props or a list of properties and values.\n *\n * @param {Attributes[string]} values\n * @returns {AttributeClean}\n */\nfunction toPropertyValueMap(values) {\n  /** @type {AttributeClean} */\n  const result = {}\n  let index = -1\n\n  while (++index < values.length) {\n    const value = values[index]\n\n    if (Array.isArray(value)) {\n      result[value[0]] = value.slice(1)\n    } else {\n      result[value] = []\n    }\n  }\n\n  return result\n}\n\n/**\n * Check if `prop` is a data property.\n *\n * @param {string} prop\n * @returns {boolean}\n */\nfunction data(prop) {\n  return prop.length > 4 && prop.slice(0, 4).toLowerCase() === 'data'\n}\n","/**\n * @typedef {import('hast').Root} Root\n *\n * @typedef {import('hast-util-sanitize').Schema} Options\n *   The sanitation schema defines how and if nodes and properties should be cleaned.\n *   See `hast-util-sanitize`.\n *   The default schema is exported as `defaultSchema`.\n */\n\nimport {sanitize as hastUtilSanitize, defaultSchema} from 'hast-util-sanitize'\n\n/**\n * Plugin to sanitize HTML.\n *\n * @type {import('unified').Plugin<[Options?] | Array<void>, Root, Root>}\n */\nexport default function rehypeSanitize(options = defaultSchema) {\n  // @ts-expect-error: assume input `root` matches output root.\n  return (tree) => hastUtilSanitize(tree, options)\n}\n\nexport {defaultSchema} from 'hast-util-sanitize'\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n *   Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n *   Whether to only escape possibly dangerous characters.\n *   Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n *   Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n  // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n  /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n  value = value.replace(\n    options.subset\n      ? charactersToExpressionCached(options.subset)\n      : defaultSubsetRegex,\n    basic\n  )\n\n  if (options.subset || options.escapeOnly) {\n    return value\n  }\n\n  return (\n    value\n      // Surrogate pairs.\n      .replace(surrogatePairsRegex, surrogate)\n      // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n      // non-ASCII ones).\n      .replace(controlCharactersRegex, basic)\n  )\n\n  /**\n   * @param {string} pair\n   * @param {number} index\n   * @param {string} all\n   */\n  function surrogate(pair, index, all) {\n    return options.format(\n      (pair.charCodeAt(0) - 0xd800) * 0x400 +\n        pair.charCodeAt(1) -\n        0xdc00 +\n        0x10000,\n      all.charCodeAt(index + 2),\n      options\n    )\n  }\n\n  /**\n   * @param {string} character\n   * @param {number} index\n   * @param {string} all\n   */\n  function basic(character, index, all) {\n    return options.format(\n      character.charCodeAt(0),\n      all.charCodeAt(index + 1),\n      options\n    )\n  }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n  let cached = subsetToRegexCache.get(subset)\n\n  if (!cached) {\n    cached = charactersToExpression(subset)\n    subsetToRegexCache.set(subset, cached)\n  }\n\n  return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n  /** @type {Array<string>} */\n  const groups = []\n  let index = -1\n\n  while (++index < subset.length) {\n    groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n  }\n\n  return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n  const value = '&#x' + code.toString(16).toUpperCase()\n  return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n    ? value\n    : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n  const value = '&#' + String(code)\n  return omit && next && !decimalRegex.test(String.fromCharCode(next))\n    ? value\n    : value + ';'\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n  'AElig',\n  'AMP',\n  'Aacute',\n  'Acirc',\n  'Agrave',\n  'Aring',\n  'Atilde',\n  'Auml',\n  'COPY',\n  'Ccedil',\n  'ETH',\n  'Eacute',\n  'Ecirc',\n  'Egrave',\n  'Euml',\n  'GT',\n  'Iacute',\n  'Icirc',\n  'Igrave',\n  'Iuml',\n  'LT',\n  'Ntilde',\n  'Oacute',\n  'Ocirc',\n  'Ograve',\n  'Oslash',\n  'Otilde',\n  'Ouml',\n  'QUOT',\n  'REG',\n  'THORN',\n  'Uacute',\n  'Ucirc',\n  'Ugrave',\n  'Uuml',\n  'Yacute',\n  'aacute',\n  'acirc',\n  'acute',\n  'aelig',\n  'agrave',\n  'amp',\n  'aring',\n  'atilde',\n  'auml',\n  'brvbar',\n  'ccedil',\n  'cedil',\n  'cent',\n  'copy',\n  'curren',\n  'deg',\n  'divide',\n  'eacute',\n  'ecirc',\n  'egrave',\n  'eth',\n  'euml',\n  'frac12',\n  'frac14',\n  'frac34',\n  'gt',\n  'iacute',\n  'icirc',\n  'iexcl',\n  'igrave',\n  'iquest',\n  'iuml',\n  'laquo',\n  'lt',\n  'macr',\n  'micro',\n  'middot',\n  'nbsp',\n  'not',\n  'ntilde',\n  'oacute',\n  'ocirc',\n  'ograve',\n  'ordf',\n  'ordm',\n  'oslash',\n  'otilde',\n  'ouml',\n  'para',\n  'plusmn',\n  'pound',\n  'quot',\n  'raquo',\n  'reg',\n  'sect',\n  'shy',\n  'sup1',\n  'sup2',\n  'sup3',\n  'szlig',\n  'thorn',\n  'times',\n  'uacute',\n  'ucirc',\n  'ugrave',\n  'uml',\n  'uuml',\n  'yacute',\n  'yen',\n  'yuml'\n]\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n  nbsp: ' ',\n  iexcl: '¡',\n  cent: '¢',\n  pound: '£',\n  curren: '¤',\n  yen: '¥',\n  brvbar: '¦',\n  sect: '§',\n  uml: '¨',\n  copy: '©',\n  ordf: 'ª',\n  laquo: '«',\n  not: '¬',\n  shy: '­',\n  reg: '®',\n  macr: '¯',\n  deg: '°',\n  plusmn: '±',\n  sup2: '²',\n  sup3: '³',\n  acute: '´',\n  micro: 'µ',\n  para: '¶',\n  middot: '·',\n  cedil: '¸',\n  sup1: '¹',\n  ordm: 'º',\n  raquo: '»',\n  frac14: '¼',\n  frac12: '½',\n  frac34: '¾',\n  iquest: '¿',\n  Agrave: 'À',\n  Aacute: 'Á',\n  Acirc: 'Â',\n  Atilde: 'Ã',\n  Auml: 'Ä',\n  Aring: 'Å',\n  AElig: 'Æ',\n  Ccedil: 'Ç',\n  Egrave: 'È',\n  Eacute: 'É',\n  Ecirc: 'Ê',\n  Euml: 'Ë',\n  Igrave: 'Ì',\n  Iacute: 'Í',\n  Icirc: 'Î',\n  Iuml: 'Ï',\n  ETH: 'Ð',\n  Ntilde: 'Ñ',\n  Ograve: 'Ò',\n  Oacute: 'Ó',\n  Ocirc: 'Ô',\n  Otilde: 'Õ',\n  Ouml: 'Ö',\n  times: '×',\n  Oslash: 'Ø',\n  Ugrave: 'Ù',\n  Uacute: 'Ú',\n  Ucirc: 'Û',\n  Uuml: 'Ü',\n  Yacute: 'Ý',\n  THORN: 'Þ',\n  szlig: 'ß',\n  agrave: 'à',\n  aacute: 'á',\n  acirc: 'â',\n  atilde: 'ã',\n  auml: 'ä',\n  aring: 'å',\n  aelig: 'æ',\n  ccedil: 'ç',\n  egrave: 'è',\n  eacute: 'é',\n  ecirc: 'ê',\n  euml: 'ë',\n  igrave: 'ì',\n  iacute: 'í',\n  icirc: 'î',\n  iuml: 'ï',\n  eth: 'ð',\n  ntilde: 'ñ',\n  ograve: 'ò',\n  oacute: 'ó',\n  ocirc: 'ô',\n  otilde: 'õ',\n  ouml: 'ö',\n  divide: '÷',\n  oslash: 'ø',\n  ugrave: 'ù',\n  uacute: 'ú',\n  ucirc: 'û',\n  uuml: 'ü',\n  yacute: 'ý',\n  thorn: 'þ',\n  yuml: 'ÿ',\n  fnof: 'ƒ',\n  Alpha: 'Α',\n  Beta: 'Β',\n  Gamma: 'Γ',\n  Delta: 'Δ',\n  Epsilon: 'Ε',\n  Zeta: 'Ζ',\n  Eta: 'Η',\n  Theta: 'Θ',\n  Iota: 'Ι',\n  Kappa: 'Κ',\n  Lambda: 'Λ',\n  Mu: 'Μ',\n  Nu: 'Ν',\n  Xi: 'Ξ',\n  Omicron: 'Ο',\n  Pi: 'Π',\n  Rho: 'Ρ',\n  Sigma: 'Σ',\n  Tau: 'Τ',\n  Upsilon: 'Υ',\n  Phi: 'Φ',\n  Chi: 'Χ',\n  Psi: 'Ψ',\n  Omega: 'Ω',\n  alpha: 'α',\n  beta: 'β',\n  gamma: 'γ',\n  delta: 'δ',\n  epsilon: 'ε',\n  zeta: 'ζ',\n  eta: 'η',\n  theta: 'θ',\n  iota: 'ι',\n  kappa: 'κ',\n  lambda: 'λ',\n  mu: 'μ',\n  nu: 'ν',\n  xi: 'ξ',\n  omicron: 'ο',\n  pi: 'π',\n  rho: 'ρ',\n  sigmaf: 'ς',\n  sigma: 'σ',\n  tau: 'τ',\n  upsilon: 'υ',\n  phi: 'φ',\n  chi: 'χ',\n  psi: 'ψ',\n  omega: 'ω',\n  thetasym: 'ϑ',\n  upsih: 'ϒ',\n  piv: 'ϖ',\n  bull: '•',\n  hellip: '…',\n  prime: '′',\n  Prime: '″',\n  oline: '‾',\n  frasl: '⁄',\n  weierp: '℘',\n  image: 'ℑ',\n  real: 'ℜ',\n  trade: '™',\n  alefsym: 'ℵ',\n  larr: '←',\n  uarr: '↑',\n  rarr: '→',\n  darr: '↓',\n  harr: '↔',\n  crarr: '↵',\n  lArr: '⇐',\n  uArr: '⇑',\n  rArr: '⇒',\n  dArr: '⇓',\n  hArr: '⇔',\n  forall: '∀',\n  part: '∂',\n  exist: '∃',\n  empty: '∅',\n  nabla: '∇',\n  isin: '∈',\n  notin: '∉',\n  ni: '∋',\n  prod: '∏',\n  sum: '∑',\n  minus: '−',\n  lowast: '∗',\n  radic: '√',\n  prop: '∝',\n  infin: '∞',\n  ang: '∠',\n  and: '∧',\n  or: '∨',\n  cap: '∩',\n  cup: '∪',\n  int: '∫',\n  there4: '∴',\n  sim: '∼',\n  cong: '≅',\n  asymp: '≈',\n  ne: '≠',\n  equiv: '≡',\n  le: '≤',\n  ge: '≥',\n  sub: '⊂',\n  sup: '⊃',\n  nsub: '⊄',\n  sube: '⊆',\n  supe: '⊇',\n  oplus: '⊕',\n  otimes: '⊗',\n  perp: '⊥',\n  sdot: '⋅',\n  lceil: '⌈',\n  rceil: '⌉',\n  lfloor: '⌊',\n  rfloor: '⌋',\n  lang: '〈',\n  rang: '〉',\n  loz: '◊',\n  spades: '♠',\n  clubs: '♣',\n  hearts: '♥',\n  diams: '♦',\n  quot: '\"',\n  amp: '&',\n  lt: '<',\n  gt: '>',\n  OElig: 'Œ',\n  oelig: 'œ',\n  Scaron: 'Š',\n  scaron: 'š',\n  Yuml: 'Ÿ',\n  circ: 'ˆ',\n  tilde: '˜',\n  ensp: ' ',\n  emsp: ' ',\n  thinsp: ' ',\n  zwnj: '‌',\n  zwj: '‍',\n  lrm: '‎',\n  rlm: '‏',\n  ndash: '–',\n  mdash: '—',\n  lsquo: '‘',\n  rsquo: '’',\n  sbquo: '‚',\n  ldquo: '“',\n  rdquo: '”',\n  bdquo: '„',\n  dagger: '†',\n  Dagger: '‡',\n  permil: '‰',\n  lsaquo: '‹',\n  rsaquo: '›',\n  euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n  'cent',\n  'copy',\n  'divide',\n  'gt',\n  'lt',\n  'not',\n  'para',\n  'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n  if (own.call(characterEntitiesHtml4, key)) {\n    characters[characterEntitiesHtml4[key]] = key\n  }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n  const character = String.fromCharCode(code)\n\n  if (own.call(characters, character)) {\n    const name = characters[character]\n    const value = '&' + name\n\n    if (\n      omit &&\n      characterEntitiesLegacy.includes(name) &&\n      !dangerous.includes(name) &&\n      (!attribute ||\n        (next &&\n          next !== 61 /* `=` */ &&\n          notAlphanumericRegex.test(String.fromCharCode(next))))\n    ) {\n      return value\n    }\n\n    return value + ';'\n  }\n\n  return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n *   Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n *   Prefer the shortest possible reference, if that results in less bytes.\n *   **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n *   Whether to omit semicolons when possible.\n *   **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n *   Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n *   Create character references which don’t fail in attributes.\n *   **Note**: `attribute` only applies when operating dangerously with\n *   `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n  let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n  /** @type {string|undefined} */\n  let named\n\n  if (options.useNamedReferences || options.useShortestReferences) {\n    named = toNamed(\n      code,\n      next,\n      options.omitOptionalSemicolons,\n      options.attribute\n    )\n  }\n\n  // Use the shortest numeric reference when requested.\n  // A simple algorithm would use decimal for all code points under 100, as\n  // those are shorter than hexadecimal:\n  //\n  // * `&#99;` vs `&#x63;` (decimal shorter)\n  // * `&#100;` vs `&#x64;` (equal)\n  //\n  // However, because we take `next` into consideration when `omit` is used,\n  // And it would be possible that decimals are shorter on bigger values as\n  // well if `next` is hexadecimal but not decimal, we instead compare both.\n  if (\n    (options.useShortestReferences || !named) &&\n    options.useShortestReferences\n  ) {\n    const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n    if (decimal.length < numeric.length) {\n      numeric = decimal\n    }\n  }\n\n  return named &&\n    (!options.useShortestReferences || named.length < numeric.length)\n    ? named\n    : numeric\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n *   Value to encode.\n * @param {Options} [options]\n *   Configuration.\n * @returns {string}\n *   Encoded value.\n */\nexport function stringifyEntities(value, options) {\n  return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n *   Value to encode.\n * @param {LightOptions} [options]\n *   Configuration.\n * @returns {string}\n *   Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n  return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * 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 * 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 <https://infra.spec.whatwg.org/#ascii-whitespace>.\n  return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * @typedef {import('../../types.js').Parent} Parent\n * @typedef {import('../../types.js').Content} Content\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n  return sibling\n\n  /**\n   * Find applicable siblings in a direction.\n   *\n   * @param {Parent | null | undefined} parent\n   * @param {number | null | undefined} index\n   * @param {boolean | null | undefined} [includeWhitespace=false]\n   * @returns {Content}\n   */\n  function sibling(parent, index, includeWhitespace) {\n    const siblings = parent ? parent.children : []\n    let offset = (index || 0) + increment\n    let next = siblings && siblings[offset]\n\n    if (!includeWhitespace) {\n      while (next && whitespace(next)) {\n        offset += increment\n        next = siblings[offset]\n      }\n    }\n\n    return next\n  }\n}\n","/**\n * @typedef {import('../types.js').OmitHandle} OmitHandle\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n *   Omission handlers, where each key is a tag name, and each value is the\n *   corresponding handler.\n * @returns {OmitHandle}\n *   Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n  return omit\n\n  /**\n   * Check if a given node can have a tag omitted.\n   *\n   * @type {OmitHandle}\n   */\n  function omit(node, index, parent) {\n    return (\n      own.call(handlers, node.tagName) &&\n      handlers[node.tagName](node, index, parent)\n    )\n  }\n}\n","/**\n * @typedef {import('../types.js').Element} Element\n * @typedef {import('../types.js').Parent} Parent\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n  html,\n  head: headOrColgroupOrCaption,\n  body,\n  p,\n  li,\n  dt,\n  dd,\n  rt: rubyElement,\n  rp: rubyElement,\n  optgroup,\n  option,\n  menuitem,\n  colgroup: headOrColgroupOrCaption,\n  caption: headOrColgroupOrCaption,\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td: cells,\n  th: cells\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n  const next = siblingAfter(parent, index, true)\n  return (\n    !next ||\n    (next.type !== 'comment' &&\n      !(next.type === 'text' && whitespace(next.value.charAt(0))))\n  )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\n// eslint-disable-next-line complexity\nfunction p(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return next\n    ? next.type === 'element' &&\n        (next.tagName === 'address' ||\n          next.tagName === 'article' ||\n          next.tagName === 'aside' ||\n          next.tagName === 'blockquote' ||\n          next.tagName === 'details' ||\n          next.tagName === 'div' ||\n          next.tagName === 'dl' ||\n          next.tagName === 'fieldset' ||\n          next.tagName === 'figcaption' ||\n          next.tagName === 'figure' ||\n          next.tagName === 'footer' ||\n          next.tagName === 'form' ||\n          next.tagName === 'h1' ||\n          next.tagName === 'h2' ||\n          next.tagName === 'h3' ||\n          next.tagName === 'h4' ||\n          next.tagName === 'h5' ||\n          next.tagName === 'h6' ||\n          next.tagName === 'header' ||\n          next.tagName === 'hgroup' ||\n          next.tagName === 'hr' ||\n          next.tagName === 'main' ||\n          next.tagName === 'menu' ||\n          next.tagName === 'nav' ||\n          next.tagName === 'ol' ||\n          next.tagName === 'p' ||\n          next.tagName === 'pre' ||\n          next.tagName === 'section' ||\n          next.tagName === 'table' ||\n          next.tagName === 'ul')\n    : !parent ||\n        // Confusing parent.\n        !(\n          parent.type === 'element' &&\n          (parent.tagName === 'a' ||\n            parent.tagName === 'audio' ||\n            parent.tagName === 'del' ||\n            parent.tagName === 'ins' ||\n            parent.tagName === 'map' ||\n            parent.tagName === 'noscript' ||\n            parent.tagName === 'video')\n        )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    next &&\n    next.type === 'element' &&\n    (next.tagName === 'dt' || next.tagName === 'dd')\n  )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'dt' || next.tagName === 'dd'))\n  )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'rp' || next.tagName === 'rt'))\n  )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'option' || next.tagName === 'optgroup'))\n  )\n}\n\n/**\n * Whether to omit `</menuitem>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction menuitem(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'menuitem' ||\n        next.tagName === 'hr' ||\n        next.tagName === 'menu'))\n  )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    next &&\n    next.type === 'element' &&\n    (next.tagName === 'tbody' || next.tagName === 'tfoot')\n  )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n  )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n  return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'td' || next.tagName === 'th'))\n  )\n}\n","/**\n * @typedef {import('../types.js').Element} Element\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Content} Content\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingBefore, siblingAfter} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n  html,\n  head,\n  body,\n  colgroup,\n  tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction html(node) {\n  const head = siblingAfter(node, -1)\n  return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction head(node) {\n  const children = node.children\n  /** @type {Array<string>} */\n  const seen = []\n  let index = -1\n\n  while (++index < children.length) {\n    const child = children[index]\n    if (\n      child.type === 'element' &&\n      (child.tagName === 'title' || child.tagName === 'base')\n    ) {\n      if (seen.includes(child.tagName)) return false\n      seen.push(child.tagName)\n    }\n  }\n\n  return children.length > 0\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction body(node) {\n  const head = siblingAfter(node, -1, true)\n\n  return (\n    !head ||\n    (head.type !== 'comment' &&\n      !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n      !(\n        head.type === 'element' &&\n        (head.tagName === 'meta' ||\n          head.tagName === 'link' ||\n          head.tagName === 'script' ||\n          head.tagName === 'style' ||\n          head.tagName === 'template')\n      ))\n  )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n  const previous = siblingBefore(parent, index)\n  const head = siblingAfter(node, -1, true)\n\n  // Previous colgroup was already omitted.\n  if (\n    parent &&\n    previous &&\n    previous.type === 'element' &&\n    previous.tagName === 'colgroup' &&\n    closing(previous, parent.children.indexOf(previous), parent)\n  ) {\n    return false\n  }\n\n  return head && head.type === 'element' && head.tagName === 'col'\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parent | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n  const previous = siblingBefore(parent, index)\n  const head = siblingAfter(node, -1)\n\n  // Previous table section was already omitted.\n  if (\n    parent &&\n    previous &&\n    previous.type === 'element' &&\n    (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n    closing(previous, parent.children.indexOf(previous), parent)\n  ) {\n    return false\n  }\n\n  return head && head.type === 'element' && head.tagName === 'tr'\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Element} Element\n * @typedef {import('../types.js').Properties} Properties\n * @typedef {import('../types.js').PropertyValue} PropertyValue\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {svg, find} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {opening} from '../omission/opening.js'\nimport {closing} from '../omission/closing.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'name' | 'unquoted' | 'single' | 'double', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n  // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n  name: [\n    ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n    ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n  unquoted: [\n    ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n    ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n  single: [\n    [\"&'\".split(''), '\"&\\'`'.split('')],\n    [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n  double: [\n    ['\"&'.split(''), '\"&\\'`'.split('')],\n    ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n  ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parent | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\n// eslint-disable-next-line complexity\nexport function element(node, index, parent, state) {\n  const schema = state.schema\n  const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n  let selfClosing =\n    schema.space === 'svg'\n      ? state.settings.closeEmptyElements\n      : state.settings.voids.includes(node.tagName.toLowerCase())\n  /** @type {Array<string>} */\n  const parts = []\n  /** @type {string} */\n  let last\n\n  if (schema.space === 'html' && node.tagName === 'svg') {\n    state.schema = svg\n  }\n\n  const attrs = serializeAttributes(state, node.properties)\n\n  const content = state.all(\n    schema.space === 'html' && node.tagName === 'template' ? node.content : node\n  )\n\n  state.schema = schema\n\n  // If the node is categorised as void, but it has children, remove the\n  // categorisation.\n  // This enables for example `menuitem`s, which are void in W3C HTML but not\n  // void in WHATWG HTML, to be stringified properly.\n  if (content) selfClosing = false\n\n  if (attrs || !omit || !opening(node, index, parent)) {\n    parts.push('<', node.tagName, attrs ? ' ' + attrs : '')\n\n    if (\n      selfClosing &&\n      (schema.space === 'svg' || state.settings.closeSelfClosing)\n    ) {\n      last = attrs.charAt(attrs.length - 1)\n      if (\n        !state.settings.tightSelfClosing ||\n        last === '/' ||\n        (last && last !== '\"' && last !== \"'\")\n      ) {\n        parts.push(' ')\n      }\n\n      parts.push('/')\n    }\n\n    parts.push('>')\n  }\n\n  parts.push(content)\n\n  if (!selfClosing && (!omit || !closing(node, index, parent))) {\n    parts.push('</' + node.tagName + '>')\n  }\n\n  return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} props\n * @returns {string}\n */\nfunction serializeAttributes(state, props) {\n  /** @type {Array<string>} */\n  const values = []\n  let index = -1\n  /** @type {string} */\n  let key\n\n  if (props) {\n    for (key in props) {\n      if (props[key] !== undefined && props[key] !== null) {\n        const value = serializeAttribute(state, key, props[key])\n        if (value) values.push(value)\n      }\n    }\n  }\n\n  while (++index < values.length) {\n    const last = state.settings.tightAttributes\n      ? values[index].charAt(values[index].length - 1)\n      : null\n\n    // In tight mode, don’t add a space after quoted attributes.\n    if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n      values[index] += ' '\n    }\n  }\n\n  return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {PropertyValue} value\n * @returns {string}\n */\n// eslint-disable-next-line complexity\nfunction serializeAttribute(state, key, value) {\n  const info = find(state.schema, key)\n  const x =\n    state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n  const y = state.settings.allowDangerousCharacters ? 0 : 1\n  let quote = state.quote\n  /** @type {string | undefined} */\n  let result\n\n  if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n    value = true\n  } else if (\n    info.boolean ||\n    (info.overloadedBoolean && typeof value !== 'string')\n  ) {\n    value = Boolean(value)\n  }\n\n  if (\n    value === undefined ||\n    value === null ||\n    value === false ||\n    (typeof value === 'number' && Number.isNaN(value))\n  ) {\n    return ''\n  }\n\n  const name = stringifyEntities(\n    info.attribute,\n    Object.assign({}, state.settings.characterReferences, {\n      // Always encode without parse errors in non-HTML.\n      subset: constants.name[x][y]\n    })\n  )\n\n  // No value.\n  // There is currently only one boolean property in SVG: `[download]` on\n  // `<a>`.\n  // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n  // so I can’t test if dropping the value works.\n  // But I assume that it should:\n  //\n  // ```html\n  // <!doctype html>\n  // <svg viewBox=\"0 0 100 100\">\n  //   <a href=https://example.com download>\n  //     <circle cx=50 cy=40 r=35 />\n  //   </a>\n  // </svg>\n  // ```\n  //\n  // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n  if (value === true) return name\n\n  // `spaces` doesn’t accept a second argument, but it’s given here just to\n  // keep the code cleaner.\n  value = Array.isArray(value)\n    ? (info.commaSeparated ? commas : spaces)(value, {\n        padLeft: !state.settings.tightCommaSeparatedLists\n      })\n    : String(value)\n\n  if (state.settings.collapseEmptyAttributes && !value) return name\n\n  // Check unquoted value.\n  if (state.settings.preferUnquoted) {\n    result = stringifyEntities(\n      value,\n      Object.assign({}, state.settings.characterReferences, {\n        subset: constants.unquoted[x][y],\n        attribute: true\n      })\n    )\n  }\n\n  // If we don’t want unquoted, or if `value` contains character references when\n  // unquoted…\n  if (result !== value) {\n    // If the alternative is less common than `quote`, switch.\n    if (\n      state.settings.quoteSmart &&\n      ccount(value, quote) > ccount(value, state.alternative)\n    ) {\n      quote = state.alternative\n    }\n\n    result =\n      quote +\n      stringifyEntities(\n        value,\n        Object.assign({}, state.settings.characterReferences, {\n          // Always encode without parse errors in non-HTML.\n          subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n          attribute: true\n        })\n      ) +\n      quote\n  }\n\n  // Don’t add a `=` for unquoted empties.\n  return name + (result ? '=' + result : result)\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Raw} Raw\n * @typedef {import('../types.js').Text} Text\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n/**\n * Serialize a text node.\n *\n * @param {Text | Raw} node\n *   Node to handle.\n * @param {number | undefined} _\n *   Index of `node` in `parent.\n * @param {Parent | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function text(node, _, parent, state) {\n  // Check if content of `node` should be escaped.\n  return parent &&\n    parent.type === 'element' &&\n    (parent.tagName === 'script' || parent.tagName === 'style')\n    ? node.value\n    : stringifyEntities(\n        node.value,\n        Object.assign({}, state.settings.characterReferences, {\n          subset: ['<', '&']\n        })\n      )\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Node, index: number | undefined, parent: Parent | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n  invalid,\n  unknown,\n  handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n *   Unknown value.\n * @returns {never}\n *   Never.\n */\nfunction invalid(node) {\n  throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node\n *  Unknown node.\n * @returns {never}\n *   Never.\n */\nfunction unknown(node) {\n  // @ts-expect-error: `type` is defined.\n  throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n","/**\n * @typedef {import('../types.js').Comment} Comment\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n *   Node to handle.\n * @param {number | undefined} _1\n *   Index of `node` in `parent.\n * @param {Parent | undefined} _2\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n  // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n  return state.settings.bogusComments\n    ? '<?' +\n        stringifyEntities(\n          node.value,\n          Object.assign({}, state.settings.characterReferences, {subset: ['>']})\n        ) +\n        '>'\n    : '<!--' + node.value.replace(/^>|^->|<!--|-->|--!>|<!-$/g, encode) + '-->'\n\n  /**\n   * @param {string} $0\n   */\n  function encode($0) {\n    return stringifyEntities(\n      $0,\n      Object.assign({}, state.settings.characterReferences, {\n        subset: ['<', '>']\n      })\n    )\n  }\n}\n","/**\n * @typedef {import('../types.js').DocType} DocType\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {DocType} _1\n *   Node to handle.\n * @param {number | undefined} _2\n *   Index of `node` in `parent.\n * @param {Parent | undefined} _3\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n  return (\n    '<!' +\n    (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n    (state.settings.tightDoctype ? '' : ' ') +\n    'html>'\n  )\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Raw} Raw\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parent | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function raw(node, index, parent, state) {\n  return state.settings.allowDangerousHtml\n    ? node.value\n    : text(node, index, parent, state)\n}\n","/**\n * @typedef {import('../types.js').Root} Root\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n *   Node to handle.\n * @param {number | undefined} _1\n *   Index of `node` in `parent.\n * @param {Parent | undefined} _2\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function root(node, _1, _2, state) {\n  return state.all(node)\n}\n","/**\n * @typedef {import('./types.js').Node} Node\n * @typedef {import('./types.js').Parent} Parent\n * @typedef {import('./types.js').Content} Content\n * @typedef {import('./types.js').Options} Options\n * @typedef {import('./types.js').State} State\n */\n\nimport {html, svg} from 'property-information'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {handle} from './handle/index.js'\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Node | Array<Content>} tree\n *   Tree to serialize.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {string}\n *   Serialized HTML.\n */\n// eslint-disable-next-line complexity\nexport function toHtml(tree, options) {\n  const options_ = options || {}\n  const quote = options_.quote || '\"'\n  const alternative = quote === '\"' ? \"'\" : '\"'\n\n  if (quote !== '\"' && quote !== \"'\") {\n    throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n  }\n\n  /** @type {State} */\n  const state = {\n    one,\n    all,\n    settings: {\n      omitOptionalTags: options_.omitOptionalTags || false,\n      allowParseErrors: options_.allowParseErrors || false,\n      allowDangerousCharacters: options_.allowDangerousCharacters || false,\n      quoteSmart: options_.quoteSmart || false,\n      preferUnquoted: options_.preferUnquoted || false,\n      tightAttributes: options_.tightAttributes || false,\n      upperDoctype: options_.upperDoctype || false,\n      tightDoctype: options_.tightDoctype || false,\n      bogusComments: options_.bogusComments || false,\n      tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n      tightSelfClosing: options_.tightSelfClosing || false,\n      collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n      allowDangerousHtml: options_.allowDangerousHtml || false,\n      voids: options_.voids || htmlVoidElements,\n      characterReferences:\n        options_.characterReferences || options_.entities || {},\n      closeSelfClosing: options_.closeSelfClosing || false,\n      closeEmptyElements: options_.closeEmptyElements || false\n    },\n    schema: options_.space === 'svg' ? svg : html,\n    quote,\n    alternative\n  }\n\n  return state.one(\n    Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n    undefined,\n    undefined\n  )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Node} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parent | undefined} parent\n *   Parent of `node`.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(node, index, parent) {\n  return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Parent | undefined} parent\n *   Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n  /** @type {Array<string>} */\n  const results = []\n  const children = (parent && parent.children) || []\n  let index = -1\n\n  while (++index < children.length) {\n    results[index] = this.one(children[index], index, parent)\n  }\n\n  return results.join('')\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {Root|Root['children'][number]} Node\n * @typedef {import('hast-util-to-html').Options} Options\n */\n\nimport {toHtml} from 'hast-util-to-html'\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?]|Array<void>, Node, string>}\n */\nexport default function rehypeStringify(config) {\n  const processorSettings = /** @type {Options} */ (this.data('settings'))\n  const settings = Object.assign({}, processorSettings, config)\n\n  Object.assign(this, {Compiler: compiler})\n\n  /**\n   * @type {import('unified').CompilerFunction<Node, string>}\n   */\n  function compiler(tree) {\n    return toHtml(tree, settings)\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<Root>} */\n  const parser = (doc) => {\n    // Assume options.\n    const settings = /** @type {Options} */ (this.data('settings'))\n\n    return fromMarkdown(\n      doc,\n      Object.assign({}, settings, options, {\n        // Note: these options are not in the readme.\n        // The goal is for them to be set by plugins on `data` instead of being\n        // passed by users.\n        extensions: this.data('micromarkExtensions') || [],\n        mdastExtensions: this.data('fromMarkdownExtensions') || []\n      })\n    )\n  }\n\n  Object.assign(this, {Parser: parser})\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * 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<string>} */\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('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n *   Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n *   Identifier of definition.\n * @returns {Definition | null}\n *   Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n *   Tree to check.\n * @returns {GetDefinition}\n *   Getter.\n */\nexport function definitions(tree) {\n  /** @type {Record<string, Definition>} */\n  const cache = Object.create(null)\n\n  if (!tree || !tree.type) {\n    throw new Error('mdast-util-definitions expected node')\n  }\n\n  visit(tree, 'definition', (definition) => {\n    const id = clean(definition.identifier)\n    if (id && !own.call(cache, id)) {\n      cache[id] = definition\n    }\n  })\n\n  return definition\n\n  /** @type {GetDefinition} */\n  function definition(identifier) {\n    const id = clean(identifier)\n    // To do: next major: return `undefined` when not found.\n    return id && own.call(cache, id) ? cache[id] : null\n  }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n  return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  if (index === -1) {\n    state.footnoteOrder.push(id)\n    state.footnoteCounts[id] = 1\n    counter = state.footnoteOrder.length\n  } else {\n    state.footnoteCounts[id]++\n    counter = index + 1\n  }\n\n  const reuseCounter = state.footnoteCounts[id]\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + state.clobberPrefix + 'fn-' + safeId,\n      id:\n        state.clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Reference>} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {References} node\n *   Reference node (image, link).\n * @returns {ElementContent | Array<ElementContent>}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return {type: 'text', value: '![' + node.alt + suffix}\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === undefined || spread === null\n    ? node.children.length > 1\n    : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  footnote,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nexport function hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function code(state, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n  // on for years in remark now.\n  const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null\n  /** @type {Properties} */\n  const properties = {}\n\n  if (lang) {\n    properties.className = ['language-' + lang]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n// To do: when both:\n// * <https://github.com/micromark/micromark-extension-footnote>\n// * <https://github.com/syntax-tree/mdast-util-footnote>\n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnote(state, node) {\n  const footnoteById = state.footnoteById\n  let no = 1\n\n  while (no in footnoteById) no++\n\n  const identifier = String(no)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return footnoteReference(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start.line && end.line) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(node, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract<MdastNodes, MdastParent>} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array<HastElementContent> | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record<string, unknown> & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array<HastElementContent> | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array<HastElementContent> | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array<HastElementContent> | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastContent>(nodes: Array<Type>, loose?: boolean | null | undefined) => Array<Type | HastText>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\n * @property {Array<string>} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array<string> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record<string, Handler>} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record<string, MdastFootnoteDefinition>} */\n  const footnoteById = {}\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough\n\n  state.handlers = {...handlers, ...settings.handlers}\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = definitions(tree)\n  state.footnoteById = footnoteById\n  /** @type {Array<string>} */\n  state.footnoteOrder = []\n  /** @type {Record<string, number>} */\n  state.footnoteCounts = {}\n\n  state.patch = patch\n  state.applyData = applyData\n  state.one = oneBound\n  state.all = allBound\n  state.wrap = wrap\n  // To do: next major: remove `augment`.\n  state.augment = augment\n\n  visit(tree, 'footnoteDefinition', (definition) => {\n    const id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  })\n\n  // @ts-expect-error Hush, it’s fine!\n  return state\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\n      const data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {...right.properties, ...data.hProperties}\n      }\n\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    if (left) {\n      const ctx = 'type' in left ? left : {position: left}\n\n      if (!generated(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n      }\n    }\n\n    return right\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props\n      props = {}\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        }\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      result.properties = {...result.properties, ...hProperties}\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n  const type = node && node.type\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent)\n  }\n\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {...node, children: all(state, node)} : node\n  }\n\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent)\n  }\n\n  return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array<HastElementContent>}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array<HastElementContent>} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent)\n\n      // To do: see if we van clean this? Can we merge texts?\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '')\n          }\n\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0]\n\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '')\n            }\n          }\n        }\n\n        if (Array.isArray(result)) {\n          values.push(...result)\n        } else {\n          values.push(result)\n        }\n      }\n    }\n  }\n\n  return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastText | HastElement} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: all(state, node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array<Type | HastText>}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array<Type | HastText>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\n */\nexport function generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {HastNodes | null | undefined}\n *   hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n  const state = createState(tree, options)\n  const node = state.one(tree, null)\n  const foot = footer(state)\n\n  if (foot) {\n    // @ts-expect-error If there’s a footer, there were definitions, meaning block\n    // content.\n    // So assume `node` is a parent node.\n    node.children.push({type: 'text', value: '\\n'}, foot)\n  }\n\n  // To do: next major: always return root?\n  return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\nexport function footer(state) {\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let index = -1\n\n  while (++index < state.footnoteOrder.length) {\n    const def = state.footnoteById[state.footnoteOrder[index]]\n\n    if (!def) {\n      continue\n    }\n\n    const content = state.all(def)\n    const id = String(def.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let referenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n\n    while (++referenceIndex <= state.footnoteCounts[id]) {\n      /** @type {Element} */\n      const backReference = {\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            state.clobberPrefix +\n            'fnref-' +\n            safeId +\n            (referenceIndex > 1 ? '-' + referenceIndex : ''),\n          dataFootnoteBackref: true,\n          className: ['data-footnote-backref'],\n          ariaLabel: state.footnoteBackLabel\n        },\n        children: [{type: 'text', value: '↩'}]\n      }\n\n      if (referenceIndex > 1) {\n        backReference.children.push({\n          type: 'element',\n          tagName: 'sup',\n          children: [{type: 'text', value: String(referenceIndex)}]\n        })\n      }\n\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      backReferences.push(backReference)\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: state.clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(def, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: state.footnoteLabelTagName,\n        properties: {\n          // To do: use structured clone.\n          ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: state.footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor<any, any, any, any>} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `<MdastRoot, HastRoot>` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * *   If a destination processor is given, that processor runs with a new HTML\n *     (hast) tree (bridge-mode).\n *     As the given processor runs with a hast tree, and rehype plugins support\n *     hast, that means rehype plugins can be used with the given processor.\n *     The hast tree is discarded in the end.\n *     It’s highly unlikely that you want to do this.\n * *   The common case is to not pass a destination processor, in which case the\n *     current processor continues running with a new HTML (hast) tree\n *     (mutate-mode).\n *     As the current processor continues with a hast tree, and rehype plugins\n *     support hast, that means rehype plugins can be used after\n *     `remark-rehype`.\n *     It’s likely that this is what you want to do.\n *\n * @param destination\n *   Optional unified processor.\n * @param options\n *   Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n  /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n  (\n    function (destination, options) {\n      return destination && 'run' in destination\n        ? bridge(destination, options)\n        : mutate(destination || options)\n    }\n  )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n  return (node, file, next) => {\n    destination.run(toHast(node, options), file, (error) => {\n      next(error)\n    })\n  }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n  // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n  return (node) => toHast(node, options)\n}\n","/**\n * 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","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > 👉 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   Pipeline.\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error | null | undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result && result.then && typeof result.then === 'function') {\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   *\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('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<string> | 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// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * 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<string>} 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// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * 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: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>\nexport function isUrl(fileUrlOrPath) {\n  return (\n    fileUrlOrPath !== null &&\n    typeof fileUrlOrPath === 'object' &&\n    // @ts-expect-error: indexable.\n    fileUrlOrPath.href &&\n    // @ts-expect-error: indexable.\n    fileUrlOrPath.origin\n  )\n}\n","/// <reference lib=\"dom\" />\n\nimport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js>\n\n/**\n * @param {string | URL} path\n *   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<string, unknown> & {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: <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/90a4ec8/types/node/buffer.d.ts#L170>\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<string> | 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 *   <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n *   Which version of the source map spec this map is following.\n * @property {Array<string>} sources\n *   An array of URLs to the original source files.\n * @property {Array<string>} 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<string> | 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<string, unknown>} 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<VFile>} 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<VFileMessage>}\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<string>}\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","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n  const transformers = trough()\n  /** @type {Processor['attachers']} */\n  const attachers = []\n  /** @type {Record<string, unknown>} */\n  let namespace = {}\n  /** @type {boolean|undefined} */\n  let frozen\n  let freezeIndex = -1\n\n  // Data management.\n  // @ts-expect-error: overloads are handled.\n  processor.data = data\n  processor.Parser = undefined\n  processor.Compiler = undefined\n\n  // Lock.\n  processor.freeze = freeze\n\n  // Plugins.\n  processor.attachers = attachers\n  // @ts-expect-error: overloads are handled.\n  processor.use = use\n\n  // API.\n  processor.parse = parse\n  processor.stringify = stringify\n  // @ts-expect-error: overloads are handled.\n  processor.run = run\n  processor.runSync = runSync\n  // @ts-expect-error: overloads are handled.\n  processor.process = process\n  processor.processSync = processSync\n\n  // Expose.\n  return processor\n\n  // Create a new processor based on the processor in the current scope.\n  /** @type {Processor} */\n  function processor() {\n    const destination = base()\n    let index = -1\n\n    while (++index < attachers.length) {\n      destination.use(...attachers[index])\n    }\n\n    destination.data(extend(true, {}, namespace))\n\n    return destination\n  }\n\n  /**\n   * @param {string|Record<string, unknown>} [key]\n   * @param {unknown} [value]\n   * @returns {unknown}\n   */\n  function data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen)\n        namespace[key] = value\n        return processor\n      }\n\n      // Get `key`.\n      return (own.call(namespace, key) && namespace[key]) || null\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', frozen)\n      namespace = key\n      return processor\n    }\n\n    // Get space.\n    return namespace\n  }\n\n  /** @type {Processor['freeze']} */\n  function freeze() {\n    if (frozen) {\n      return processor\n    }\n\n    while (++freezeIndex < attachers.length) {\n      const [attacher, ...options] = attachers[freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      /** @type {Transformer|void} */\n      const transformer = attacher.call(processor, ...options)\n\n      if (typeof transformer === 'function') {\n        transformers.use(transformer)\n      }\n    }\n\n    frozen = true\n    freezeIndex = Number.POSITIVE_INFINITY\n\n    return processor\n  }\n\n  /**\n   * @param {Pluggable|null|undefined} [value]\n   * @param {...unknown} options\n   * @returns {Processor}\n   */\n  function use(value, ...options) {\n    /** @type {Record<string, unknown>|undefined} */\n    let settings\n\n    assertUnfrozen('use', frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, ...options)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    if (settings) {\n      namespace.settings = Object.assign(namespace.settings || {}, settings)\n    }\n\n    return processor\n\n    /**\n     * @param {import('..').Pluggable<unknown[]>} value\n     * @returns {void}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value)\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...options] = value\n          addPlugin(plugin, ...options)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {void}\n     */\n    function addPreset(result) {\n      addList(result.plugins)\n\n      if (result.settings) {\n        settings = Object.assign(settings || {}, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList|null|undefined} [plugins]\n     * @returns {void}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {...unknown} [value]\n     * @returns {void}\n     */\n    function addPlugin(plugin, value) {\n      let index = -1\n      /** @type {Processor['attachers'][number]|undefined} */\n      let entry\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entry = attachers[index]\n          break\n        }\n      }\n\n      if (entry) {\n        if (isPlainObj(entry[1]) && isPlainObj(value)) {\n          value = extend(true, entry[1], value)\n        }\n\n        entry[1] = value\n      } else {\n        // @ts-expect-error: fine.\n        attachers.push([...arguments])\n      }\n    }\n  }\n\n  /** @type {Processor['parse']} */\n  function parse(doc) {\n    processor.freeze()\n    const file = vfile(doc)\n    const Parser = processor.Parser\n    assertParser('parse', Parser)\n\n    if (newable(Parser, 'parse')) {\n      // @ts-expect-error: `newable` checks this.\n      return new Parser(String(file), file).parse()\n    }\n\n    // @ts-expect-error: `newable` checks this.\n    return Parser(String(file), file) // eslint-disable-line new-cap\n  }\n\n  /** @type {Processor['stringify']} */\n  function stringify(node, doc) {\n    processor.freeze()\n    const file = vfile(doc)\n    const Compiler = processor.Compiler\n    assertCompiler('stringify', Compiler)\n    assertNode(node)\n\n    if (newable(Compiler, 'compile')) {\n      // @ts-expect-error: `newable` checks this.\n      return new Compiler(node, file).compile()\n    }\n\n    // @ts-expect-error: `newable` checks this.\n    return Compiler(node, file) // eslint-disable-line new-cap\n  }\n\n  /**\n   * @param {Node} node\n   * @param {VFileCompatible|RunCallback} [doc]\n   * @param {RunCallback} [callback]\n   * @returns {Promise<Node>|void}\n   */\n  function run(node, doc, callback) {\n    assertNode(node)\n    processor.freeze()\n\n    if (!callback && typeof doc === 'function') {\n      callback = doc\n      doc = undefined\n    }\n\n    if (!callback) {\n      return new Promise(executor)\n    }\n\n    executor(null, callback)\n\n    /**\n     * @param {null|((node: Node) => void)} resolve\n     * @param {(error: Error) => void} reject\n     * @returns {void}\n     */\n    function executor(resolve, reject) {\n      // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n      transformers.run(node, vfile(doc), done)\n\n      /**\n       * @param {Error|null} error\n       * @param {Node} tree\n       * @param {VFile} file\n       * @returns {void}\n       */\n      function done(error, tree, file) {\n        tree = tree || node\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(tree)\n        } else {\n          // @ts-expect-error: `callback` is defined if `resolve` is not.\n          callback(null, tree, file)\n        }\n      }\n    }\n  }\n\n  /** @type {Processor['runSync']} */\n  function runSync(node, file) {\n    /** @type {Node|undefined} */\n    let result\n    /** @type {boolean|undefined} */\n    let complete\n\n    processor.run(node, file, done)\n\n    assertDone('runSync', 'run', complete)\n\n    // @ts-expect-error: we either bailed on an error or have a tree.\n    return result\n\n    /**\n     * @param {Error|null} [error]\n     * @param {Node} [tree]\n     * @returns {void}\n     */\n    function done(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * @param {VFileCompatible} doc\n   * @param {ProcessCallback} [callback]\n   * @returns {Promise<VFile>|undefined}\n   */\n  function process(doc, callback) {\n    processor.freeze()\n    assertParser('process', processor.Parser)\n    assertCompiler('process', processor.Compiler)\n\n    if (!callback) {\n      return new Promise(executor)\n    }\n\n    executor(null, callback)\n\n    /**\n     * @param {null|((file: VFile) => void)} resolve\n     * @param {(error?: Error|null|undefined) => void} reject\n     * @returns {void}\n     */\n    function executor(resolve, reject) {\n      const file = vfile(doc)\n\n      processor.run(processor.parse(file), file, (error, tree, file) => {\n        if (error || !tree || !file) {\n          done(error)\n        } else {\n          /** @type {unknown} */\n          const result = processor.stringify(tree, file)\n\n          if (result === undefined || result === null) {\n            // Empty.\n          } else if (looksLikeAVFileValue(result)) {\n            file.value = result\n          } else {\n            file.result = result\n          }\n\n          done(error, file)\n        }\n      })\n\n      /**\n       * @param {Error|null|undefined} [error]\n       * @param {VFile|undefined} [file]\n       * @returns {void}\n       */\n      function done(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          // @ts-expect-error: `callback` is defined if `resolve` is not.\n          callback(null, file)\n        }\n      }\n    }\n  }\n\n  /** @type {Processor['processSync']} */\n  function processSync(doc) {\n    /** @type {boolean|undefined} */\n    let complete\n\n    processor.freeze()\n    assertParser('processSync', processor.Parser)\n    assertCompiler('processSync', processor.Compiler)\n\n    const file = vfile(doc)\n\n    processor.process(file, done)\n\n    assertDone('processSync', 'process', complete)\n\n    return file\n\n    /**\n     * @param {Error|null|undefined} [error]\n     * @returns {void}\n     */\n    function done(error) {\n      complete = true\n      bail(error)\n    }\n  }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n  return (\n    typeof value === 'function' &&\n    // Prototypes do exist.\n    // type-coverage:ignore-next-line\n    value.prototype &&\n    // A function with keys in its prototype is probably a constructor.\n    // Classes’ prototype methods are not enumerable, so we check if some value\n    // exists in the prototype.\n    // type-coverage:ignore-next-line\n    (keys(value.prototype) || name in value.prototype)\n  )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record<string, unknown>} value\n * @returns {boolean}\n */\nfunction keys(value) {\n  /** @type {string} */\n  let key\n\n  for (key in value) {\n    if (own.call(value, key)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `Parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `Compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n  return typeof value === 'string' || isBuffer(value)\n}\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nexport default throttle;\n","import factory from \"codemirror-ssr\";\nimport usePlaceholder from \"codemirror-ssr/addon/display/placeholder.js\";\nimport useContinuelist from \"codemirror-ssr/addon/edit/continuelist.js\";\nimport useOverlay from \"codemirror-ssr/addon/mode/overlay.js\";\nimport useGfm from \"codemirror-ssr/mode/gfm/gfm.js\";\nimport useMarkdown from \"codemirror-ssr/mode/markdown/markdown.js\";\nimport useXml from \"codemirror-ssr/mode/xml/xml.js\";\nimport useYamlFrontmatter from \"codemirror-ssr/mode/yaml-frontmatter/yaml-frontmatter.js\";\nimport useYaml from \"codemirror-ssr/mode/yaml/yaml.js\";\nimport selectFiles from \"select-files\";\nimport wordCount from \"word-count\";\nimport { visit } from \"unist-util-visit\";\nimport { delegate } from \"tippy.js\";\nimport { defaultSchema } from \"hast-util-sanitize\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeSanitize from \"rehype-sanitize\";\nimport rehypeStringify from \"rehype-stringify\";\nimport remarkParse from \"remark-parse\";\nimport remarkRehype from \"remark-rehype\";\nimport { unified } from \"unified\";\nimport { debounce, throttle } from \"lodash-es\";\nconst index = \"\";\nfunction noop() {\n}\nfunction run(fn) {\n  return fn();\n}\nfunction blank_object() {\n  return /* @__PURE__ */ Object.create(null);\n}\nfunction run_all(fns) {\n  fns.forEach(run);\n}\nfunction is_function(thing) {\n  return typeof thing === \"function\";\n}\nfunction safe_not_equal(a, b) {\n  return a != a ? b == b : a !== b || (a && typeof a === \"object\" || typeof a === \"function\");\n}\nfunction not_equal(a, b) {\n  return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction append(target, node) {\n  target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n  target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n  if (node.parentNode) {\n    node.parentNode.removeChild(node);\n  }\n}\nfunction destroy_each(iterations, detaching) {\n  for (let i = 0; i < iterations.length; i += 1) {\n    if (iterations[i])\n      iterations[i].d(detaching);\n  }\n}\nfunction element(name) {\n  return document.createElement(name);\n}\nfunction text(data) {\n  return document.createTextNode(data);\n}\nfunction empty() {\n  return text(\"\");\n}\nfunction listen(node, event, handler, options) {\n  node.addEventListener(event, handler, options);\n  return () => node.removeEventListener(event, handler, options);\n}\nfunction self(fn) {\n  return function(event) {\n    if (event.target === this)\n      fn.call(this, event);\n  };\n}\nfunction attr(node, attribute, value) {\n  if (value == null)\n    node.removeAttribute(attribute);\n  else if (node.getAttribute(attribute) !== value)\n    node.setAttribute(attribute, value);\n}\nfunction children(element2) {\n  return Array.from(element2.childNodes);\n}\nfunction set_data(text2, data) {\n  data = \"\" + data;\n  if (text2.wholeText !== data)\n    text2.data = data;\n}\nfunction toggle_class(element2, name, toggle) {\n  element2.classList[toggle ? \"add\" : \"remove\"](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n  const e = document.createEvent(\"CustomEvent\");\n  e.initCustomEvent(type, bubbles, cancelable, detail);\n  return e;\n}\nlet current_component;\nfunction set_current_component(component) {\n  current_component = component;\n}\nfunction get_current_component() {\n  if (!current_component)\n    throw new Error(\"Function called outside component initialization\");\n  return current_component;\n}\nfunction onMount(fn) {\n  get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n  get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n  get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n  const component = get_current_component();\n  return (type, detail, { cancelable = false } = {}) => {\n    const callbacks = component.$$.callbacks[type];\n    if (callbacks) {\n      const event = custom_event(type, detail, { cancelable });\n      callbacks.slice().forEach((fn) => {\n        fn.call(component, event);\n      });\n      return !event.defaultPrevented;\n    }\n    return true;\n  };\n}\nconst dirty_components = [];\nconst binding_callbacks = [];\nlet render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n  if (!update_scheduled) {\n    update_scheduled = true;\n    resolved_promise.then(flush);\n  }\n}\nfunction tick() {\n  schedule_update();\n  return resolved_promise;\n}\nfunction add_render_callback(fn) {\n  render_callbacks.push(fn);\n}\nconst seen_callbacks = /* @__PURE__ */ new Set();\nlet flushidx = 0;\nfunction flush() {\n  if (flushidx !== 0) {\n    return;\n  }\n  const saved_component = current_component;\n  do {\n    try {\n      while (flushidx < dirty_components.length) {\n        const component = dirty_components[flushidx];\n        flushidx++;\n        set_current_component(component);\n        update(component.$$);\n      }\n    } catch (e) {\n      dirty_components.length = 0;\n      flushidx = 0;\n      throw e;\n    }\n    set_current_component(null);\n    dirty_components.length = 0;\n    flushidx = 0;\n    while (binding_callbacks.length)\n      binding_callbacks.pop()();\n    for (let i = 0; i < render_callbacks.length; i += 1) {\n      const callback = render_callbacks[i];\n      if (!seen_callbacks.has(callback)) {\n        seen_callbacks.add(callback);\n        callback();\n      }\n    }\n    render_callbacks.length = 0;\n  } while (dirty_components.length);\n  while (flush_callbacks.length) {\n    flush_callbacks.pop()();\n  }\n  update_scheduled = false;\n  seen_callbacks.clear();\n  set_current_component(saved_component);\n}\nfunction update($$) {\n  if ($$.fragment !== null) {\n    $$.update();\n    run_all($$.before_update);\n    const dirty = $$.dirty;\n    $$.dirty = [-1];\n    $$.fragment && $$.fragment.p($$.ctx, dirty);\n    $$.after_update.forEach(add_render_callback);\n  }\n}\nfunction flush_render_callbacks(fns) {\n  const filtered = [];\n  const targets = [];\n  render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));\n  targets.forEach((c) => c());\n  render_callbacks = filtered;\n}\nconst outroing = /* @__PURE__ */ new Set();\nlet outros;\nfunction group_outros() {\n  outros = {\n    r: 0,\n    c: [],\n    p: outros\n    // parent group\n  };\n}\nfunction check_outros() {\n  if (!outros.r) {\n    run_all(outros.c);\n  }\n  outros = outros.p;\n}\nfunction transition_in(block, local) {\n  if (block && block.i) {\n    outroing.delete(block);\n    block.i(local);\n  }\n}\nfunction transition_out(block, local, detach2, callback) {\n  if (block && block.o) {\n    if (outroing.has(block))\n      return;\n    outroing.add(block);\n    outros.c.push(() => {\n      outroing.delete(block);\n      if (callback) {\n        if (detach2)\n          block.d(1);\n        callback();\n      }\n    });\n    block.o(local);\n  } else if (callback) {\n    callback();\n  }\n}\nfunction create_component(block) {\n  block && block.c();\n}\nfunction mount_component(component, target, anchor, customElement) {\n  const { fragment, after_update } = component.$$;\n  fragment && fragment.m(target, anchor);\n  if (!customElement) {\n    add_render_callback(() => {\n      const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n      if (component.$$.on_destroy) {\n        component.$$.on_destroy.push(...new_on_destroy);\n      } else {\n        run_all(new_on_destroy);\n      }\n      component.$$.on_mount = [];\n    });\n  }\n  after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n  const $$ = component.$$;\n  if ($$.fragment !== null) {\n    flush_render_callbacks($$.after_update);\n    run_all($$.on_destroy);\n    $$.fragment && $$.fragment.d(detaching);\n    $$.on_destroy = $$.fragment = null;\n    $$.ctx = [];\n  }\n}\nfunction make_dirty(component, i) {\n  if (component.$$.dirty[0] === -1) {\n    dirty_components.push(component);\n    schedule_update();\n    component.$$.dirty.fill(0);\n  }\n  component.$$.dirty[i / 31 | 0] |= 1 << i % 31;\n}\nfunction init(component, options, instance2, create_fragment2, not_equal2, props, append_styles, dirty = [-1]) {\n  const parent_component = current_component;\n  set_current_component(component);\n  const $$ = component.$$ = {\n    fragment: null,\n    ctx: [],\n    // state\n    props,\n    update: noop,\n    not_equal: not_equal2,\n    bound: blank_object(),\n    // lifecycle\n    on_mount: [],\n    on_destroy: [],\n    on_disconnect: [],\n    before_update: [],\n    after_update: [],\n    context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n    // everything else\n    callbacks: blank_object(),\n    dirty,\n    skip_bound: false,\n    root: options.target || parent_component.$$.root\n  };\n  append_styles && append_styles($$.root);\n  let ready = false;\n  $$.ctx = instance2 ? instance2(component, options.props || {}, (i, ret, ...rest) => {\n    const value = rest.length ? rest[0] : ret;\n    if ($$.ctx && not_equal2($$.ctx[i], $$.ctx[i] = value)) {\n      if (!$$.skip_bound && $$.bound[i])\n        $$.bound[i](value);\n      if (ready)\n        make_dirty(component, i);\n    }\n    return ret;\n  }) : [];\n  $$.update();\n  ready = true;\n  run_all($$.before_update);\n  $$.fragment = create_fragment2 ? create_fragment2($$.ctx) : false;\n  if (options.target) {\n    if (options.hydrate) {\n      const nodes = children(options.target);\n      $$.fragment && $$.fragment.l(nodes);\n      nodes.forEach(detach);\n    } else {\n      $$.fragment && $$.fragment.c();\n    }\n    if (options.intro)\n      transition_in(component.$$.fragment);\n    mount_component(component, options.target, options.anchor, options.customElement);\n    flush();\n  }\n  set_current_component(parent_component);\n}\nclass SvelteComponent {\n  $destroy() {\n    destroy_component(this, 1);\n    this.$destroy = noop;\n  }\n  $on(type, callback) {\n    if (!is_function(callback)) {\n      return noop;\n    }\n    const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n    callbacks.push(callback);\n    return () => {\n      const index2 = callbacks.indexOf(callback);\n      if (index2 !== -1)\n        callbacks.splice(index2, 1);\n    };\n  }\n  $set($$props) {\n    if (this.$$set && !is_empty($$props)) {\n      this.$$.skip_bound = true;\n      this.$$set($$props);\n      this.$$.skip_bound = false;\n    }\n  }\n}\nconst bold = \"Bold\";\nconst boldText = \"bold text\";\nconst cheatsheet = \"Markdown Cheatsheet\";\nconst closeHelp = \"Close help\";\nconst closeToc = \"Close table of contents\";\nconst code = \"Code\";\nconst codeBlock = \"Code block\";\nconst codeLang = \"lang\";\nconst codeText = \"code\";\nconst exitFullscreen = \"Exit fullscreen\";\nconst exitPreviewOnly = \"Exit preview only\";\nconst exitWriteOnly = \"Exit write only\";\nconst fullscreen = \"Fullscreen\";\nconst h1 = \"Heading 1\";\nconst h2 = \"Heading 2\";\nconst h3 = \"Heading 3\";\nconst h4 = \"Heading 4\";\nconst h5 = \"Heading 5\";\nconst h6 = \"Heading 6\";\nconst headingText = \"heading\";\nconst help = \"Help\";\nconst hr = \"Horizontal rule\";\nconst image = \"Image\";\nconst imageAlt = \"alt\";\nconst imageTitle = \"title\";\nconst italic = \"Italic\";\nconst italicText = \"italic text\";\nconst limited = \"The maximum character limit has been reached\";\nconst lines = \"Lines\";\nconst link = \"Link\";\nconst linkText = \"link text\";\nconst ol = \"Ordered list\";\nconst olItem = \"item\";\nconst preview = \"Preview\";\nconst previewOnly = \"Preview only\";\nconst quote = \"Quote\";\nconst quotedText = \"quoted text\";\nconst shortcuts = \"Shortcuts\";\nconst source = \"Source code\";\nconst sync = \"Scroll sync\";\nconst toc = \"Table of contents\";\nconst top = \"Scroll to top\";\nconst ul = \"Unordered list\";\nconst ulItem = \"item\";\nconst words = \"Words\";\nconst write = \"Write\";\nconst writeOnly = \"Write only\";\nconst en = {\n  bold,\n  boldText,\n  cheatsheet,\n  closeHelp,\n  closeToc,\n  code,\n  codeBlock,\n  codeLang,\n  codeText,\n  exitFullscreen,\n  exitPreviewOnly,\n  exitWriteOnly,\n  fullscreen,\n  h1,\n  h2,\n  h3,\n  h4,\n  h5,\n  h6,\n  headingText,\n  help,\n  hr,\n  image,\n  imageAlt,\n  imageTitle,\n  italic,\n  italicText,\n  limited,\n  lines,\n  link,\n  linkText,\n  ol,\n  olItem,\n  preview,\n  previewOnly,\n  quote,\n  quotedText,\n  shortcuts,\n  source,\n  sync,\n  toc,\n  top,\n  ul,\n  ulItem,\n  words,\n  write,\n  writeOnly\n};\nconst icons = {\n  Close: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"m8 8 32 32M8 40 40 8\"/></svg>',\n  H: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M12 5v38M36 5v38M12 24h24\"/></svg>',\n  H1: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M6 8v32M25 8v32M6 24h19M34.226 24 39 19.017V40\"/></svg>',\n  H2: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M6 8v32M24 8v32M7 24h16M32 25c0-3.167 2.667-5 5-5s5 1.833 5 5c0 5.7-10 9.933-10 15h10\"/></svg>',\n  H3: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M6 8v32M24 8v32M7 24h16M32 20h10l-7 9c4 0 7 2 7 6s-3 5-5 5c-2.381 0-4-1-5-2.1\"/></svg>',\n  LevelFourTitle: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M6 8v32M24 8v32M7 24h16M39.977 40V20L31 32.997v2.023h12\"/></svg>',\n  LevelFiveTitle: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M6 8v32M24 8v32M7 24h16M40 21.01h-8v7.024C32 28 34 27 37 27s4 2.534 4 6.5-1 6.5-5 6.5c-3 0-4-2-4-3.992\"/></svg>',\n  LevelSixTitle: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M6 8v32M24 8v32M7 24h16\"/><path stroke=\"currentColor\" stroke-width=\"4\" d=\"M36.5 40a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M41.596 24.74C40.778 22.545 38.804 21 36.5 21c-3.038 0-5.5 2.686-5.5 6v7\"/></svg>',\n  TextBold: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M24 24c5.506 0 9.969-4.477 9.969-10S29.506 4 24 4H11v20h13ZM28.031 44C33.537 44 38 39.523 38 34s-4.463-10-9.969-10H11v20h17.031Z\" clip-rule=\"evenodd\"/></svg>',\n  TextItalic: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M20 6h16M12 42h16M29 5.952 19 42\"/></svg>',\n  Quote: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M18.853 9.116C11.323 13.952 7.14 19.58 6.303 26.003 5 36 13.94 40.893 18.47 36.497 23 32.1 20.285 26.52 17.005 24.994c-3.28-1.525-5.286-.994-4.936-3.033.35-2.038 5.016-7.69 9.116-10.322a.749.749 0 0 0 .114-1.02L20.285 9.3c-.44-.572-.862-.55-1.432-.185ZM38.679 9.116c-7.53 4.836-11.714 10.465-12.55 16.887-1.303 9.997 7.637 14.89 12.167 10.494 4.53-4.397 1.815-9.977-1.466-11.503-3.28-1.525-5.286-.994-4.936-3.033.35-2.038 5.017-7.69 9.117-10.322a.749.749 0 0 0 .113-1.02L40.11 9.3c-.44-.572-.862-.55-1.431-.185Z\" clip-rule=\"evenodd\"/></svg>',\n  LinkOne: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"m26.24 16.373-9.14-9.14c-2.661-2.661-7.035-2.603-9.768.131-2.734 2.734-2.793 7.107-.131 9.768l7.935 7.936M32.903 23.003l7.935 7.935c2.661 2.662 2.603 7.035-.13 9.769-2.735 2.734-7.108 2.792-9.77.13l-9.14-9.14\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M26.11 26.142c2.733-2.734 2.792-7.108.13-9.769M21.799 21.798c-2.734 2.734-2.792 7.108-.131 9.769\"/></svg>',\n  Pic: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M5 10a2 2 0 0 1 2-2h34a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V10Z\" clip-rule=\"evenodd\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M14.5 18a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\" clip-rule=\"evenodd\"/><path stroke=\"currentColor\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"m15 24 5 4 6-7 17 13v4a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-4l10-10Z\"/></svg>',\n  Code: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M16 13 4 25.432 16 37M32 13l12 12.432L32 37\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"4\" d=\"m28 4-7 40\"/></svg>',\n  CodeBrackets: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M16 4c-2 0-5 1-5 5v9c0 3-5 5-5 5s5 2 5 5v11c0 4 3 5 5 5M32 4c2 0 5 1 5 5v9c0 3 5 5 5 5s-5 2-5 5v11c0 4-3 5-5 5\"/></svg>',\n  ListTwo: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M9 42a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM9 14a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM9 28a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M21 24h22M21 38h22M21 10h22\"/></svg>',\n  OrderedList: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M9 4v9M12 13H6M12 27H6M6 20s3-3 5 0-5 7-5 7M6 34.5s2-3 5-1 0 4.5 0 4.5 3 2.5 0 4.5-5-1-5-1M11 38H9M9 4 6 6M21 24h22M21 38h22M21 10h22\"/></svg>',\n  DividingLine: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M5 24h38M21 38h6M37 38h6M21 10h6M5 38h6M5 10h6M37 10h6\"/></svg>',\n  AlignTextLeftOne: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M39 6H9a3 3 0 0 0-3 3v30a3 3 0 0 0 3 3h30a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M26 24H14M34 15H14M32 33H14\"/></svg>',\n  Helpcenter: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M39 6H9a3 3 0 0 0-3 3v30a3 3 0 0 0 3 3h30a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M24 28.625v-4a6 6 0 1 0-6-6\"/><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M24 37.625a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\" clip-rule=\"evenodd\"/></svg>',\n  LeftExpand: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><rect width=\"28\" height=\"36\" x=\"6\" y=\"6\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" rx=\"2\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M42 6v36\"/></svg>',\n  RightExpand: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><rect width=\"28\" height=\"36\" x=\"14\" y=\"6\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" rx=\"2\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M6 6v36\"/></svg>',\n  OffScreen: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M33 6v9h9M15 6v9H6M15 42v-9H6M33 42v-9h8.9\"/></svg>',\n  FullScreen: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M33 6h9v9M42 33v9h-9M15 42H6v-9M6 15V6h9\"/></svg>',\n  GithubOne: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"4\" d=\"M29.344 30.477c2.404-.5 4.585-1.366 6.28-2.638C38.52 25.668 40 22.314 40 19c0-2.324-.881-4.494-2.407-6.332-.85-1.024 1.636-8.667-.573-7.638-2.21 1.03-5.45 3.308-7.147 2.805A20.712 20.712 0 0 0 24 7c-1.8 0-3.532.223-5.147.634C16.505 8.232 14.259 6 12 5.03c-2.26-.97-1.026 6.934-1.697 7.765C8.84 14.605 8 16.73 8 19c0 3.314 1.79 6.668 4.686 8.84 1.93 1.446 4.348 2.368 7.054 2.822M19.74 30.662c-1.159 1.275-1.738 2.486-1.738 3.632v8.717M29.345 30.477c1.097 1.44 1.646 2.734 1.646 3.88v8.654M6 31.215c.899.11 1.566.524 2 1.24.652 1.075 3.074 5.063 5.825 5.063h4.177\"/></svg>'\n};\nfunction createCodeMirror() {\n  const codemirror = factory();\n  usePlaceholder(codemirror);\n  useOverlay(codemirror);\n  useXml(codemirror);\n  useMarkdown(codemirror);\n  useGfm(codemirror);\n  useYaml(codemirror);\n  useYamlFrontmatter(codemirror);\n  useContinuelist(codemirror);\n  return codemirror;\n}\nfunction createEditorUtils(codemirror, editor) {\n  return {\n    /**\n     * Wrap text with decorators, for example:\n     *\n     * `text -> *text*`\n     */\n    wrapText(before, after = before) {\n      const range = editor.somethingSelected() ? editor.listSelections()[0] : editor.findWordAt(editor.getCursor());\n      const from = range.from();\n      const to = range.to();\n      const text2 = editor.getRange(from, to);\n      const fromBefore = codemirror.Pos(from.line, from.ch - before.length);\n      const toAfter = codemirror.Pos(to.line, to.ch + after.length);\n      if (editor.getRange(fromBefore, from) === before && editor.getRange(to, toAfter) === after) {\n        editor.replaceRange(text2, fromBefore, toAfter);\n        editor.setSelection(\n          fromBefore,\n          codemirror.Pos(fromBefore.line, fromBefore.ch + text2.length)\n        );\n      } else {\n        editor.replaceRange(before + text2 + after, from, to);\n        const cursor = editor.getCursor();\n        editor.setSelection(\n          codemirror.Pos(cursor.line, cursor.ch - after.length - text2.length),\n          codemirror.Pos(cursor.line, cursor.ch - after.length)\n        );\n      }\n    },\n    /**\n     * replace multiple lines\n     *\n     * `line -> # line`\n     */\n    replaceLines(replace) {\n      const [selection] = editor.listSelections();\n      const range = [\n        codemirror.Pos(selection.from().line, 0),\n        codemirror.Pos(selection.to().line)\n      ];\n      const lines2 = editor.getRange(...range).split(\"\\n\");\n      editor.replaceRange(lines2.map(replace).join(\"\\n\"), ...range);\n      editor.setSelection(...range);\n    },\n    /**\n     * Append a block based on the cursor position\n     */\n    appendBlock(content) {\n      const cursor = editor.getCursor();\n      let emptyLine = -1;\n      for (let i = cursor.line; i < editor.lineCount(); i++) {\n        if (!editor.getLine(i).trim()) {\n          emptyLine = i;\n          break;\n        }\n      }\n      if (emptyLine === -1) {\n        editor.replaceRange(\"\\n\", codemirror.Pos(editor.lineCount()));\n        emptyLine = editor.lineCount();\n      }\n      editor.replaceRange(\"\\n\" + content, codemirror.Pos(emptyLine));\n      return codemirror.Pos(emptyLine + 1, 0);\n    },\n    /**\n     * Triggers a virtual file input and let user select files\n     *\n     * https://www.npmjs.com/package/select-files\n     */\n    selectFiles\n  };\n}\nfunction findStartIndex(num, nums) {\n  let startIndex = nums.length - 2;\n  for (let i = 0; i < nums.length; i++) {\n    if (num < nums[i]) {\n      startIndex = i - 1;\n      break;\n    }\n  }\n  startIndex = Math.max(startIndex, 0);\n  return startIndex;\n}\nconst getShortcutWithPrefix = (key, shift = false) => {\n  const shiftPrefix = shift ? \"Shift-\" : \"\";\n  const CmdPrefix = typeof navigator !== \"undefined\" && /Mac/.test(navigator.platform) ? \"Cmd-\" : \"Ctrl-\";\n  return shiftPrefix + CmdPrefix + key;\n};\nasync function handleImageUpload({ editor, appendBlock, codemirror }, uploadImages, files) {\n  const imgs = await uploadImages(files);\n  const pos = appendBlock(\n    imgs.map(({ url, alt, title }, i) => {\n      alt = alt != null ? alt : files[i].name;\n      return `![${alt}](${url}${title ? ` \"${title}\"` : \"\"})`;\n    }).join(\"\\n\\n\")\n  );\n  editor.setSelection(pos, codemirror.Pos(pos.line + imgs.length * 2 - 2));\n  editor.focus();\n}\nfunction getBuiltinActions(locale, plugins, uploadImages) {\n  const leftActions = [\n    {\n      icon: icons.H,\n      handler: {\n        type: \"dropdown\",\n        actions: [1, 2, 3, 4, 5, 6].map((level) => ({\n          title: locale[`h${level}`],\n          icon: [\n            icons.H1,\n            icons.H2,\n            icons.H3,\n            icons.LevelFourTitle,\n            icons.LevelFiveTitle,\n            icons.LevelSixTitle\n          ][level - 1],\n          cheatsheet: level <= 3 ? `${\"#\".repeat(level)} ${locale.headingText}` : void 0,\n          handler: {\n            type: \"action\",\n            click({ replaceLines, editor }) {\n              replaceLines((line) => {\n                line = line.trim().replace(/^#*/, \"\").trim();\n                line = \"#\".repeat(level) + \" \" + line;\n                return line;\n              });\n              editor.focus();\n            }\n          }\n        }))\n      }\n    },\n    {\n      title: locale.bold,\n      icon: icons.TextBold,\n      cheatsheet: `**${locale.boldText}**`,\n      handler: {\n        type: \"action\",\n        shortcut: getShortcutWithPrefix(\"B\"),\n        click({ wrapText, editor }) {\n          wrapText(\"**\");\n          editor.focus();\n        }\n      }\n    },\n    {\n      title: locale.italic,\n      icon: icons.TextItalic,\n      cheatsheet: `*${locale.italicText}*`,\n      handler: {\n        type: \"action\",\n        shortcut: getShortcutWithPrefix(\"I\"),\n        click({ wrapText, editor }) {\n          wrapText(\"*\");\n          editor.focus();\n        }\n      }\n    },\n    {\n      title: locale.quote,\n      icon: icons.Quote,\n      cheatsheet: `> ${locale.quotedText}`,\n      handler: {\n        type: \"action\",\n        click({ replaceLines, editor }) {\n          replaceLines((line) => \"> \" + line);\n          editor.focus();\n        }\n      }\n    },\n    {\n      title: locale.link,\n      icon: icons.LinkOne,\n      cheatsheet: `[${locale.linkText}](url)`,\n      handler: {\n        type: \"action\",\n        shortcut: getShortcutWithPrefix(\"K\"),\n        click({ editor, wrapText, codemirror }) {\n          wrapText(\"[\", \"](url)\");\n          const cursor = editor.getCursor();\n          editor.setSelection(\n            codemirror.Pos(cursor.line, cursor.ch + 2),\n            codemirror.Pos(cursor.line, cursor.ch + 5)\n          );\n          editor.focus();\n        }\n      }\n    },\n    {\n      title: locale.image,\n      icon: icons.Pic,\n      cheatsheet: `![${locale.imageAlt}](url \"${locale.imageTitle}\")`,\n      handler: uploadImages ? {\n        type: \"action\",\n        shortcut: getShortcutWithPrefix(\"I\", true),\n        async click(ctx) {\n          const fileList = await selectFiles({\n            accept: \"image/*\",\n            multiple: true\n          });\n          if (fileList == null ? void 0 : fileList.length) {\n            await handleImageUpload(ctx, uploadImages, Array.from(fileList));\n          }\n        }\n      } : void 0\n    },\n    {\n      title: locale.code,\n      icon: icons.Code,\n      cheatsheet: \"`\" + locale.codeText + \"`\",\n      handler: {\n        type: \"action\",\n        shortcut: getShortcutWithPrefix(\"K\", true),\n        click({ wrapText, editor }) {\n          wrapText(\"`\");\n          editor.focus();\n        }\n      }\n    },\n    {\n      title: locale.codeBlock,\n      icon: icons.CodeBrackets,\n      cheatsheet: \"```\" + locale.codeLang + \"↵\",\n      handler: {\n        type: \"action\",\n        shortcut: getShortcutWithPrefix(\"C\", true),\n        click({ editor, appendBlock, codemirror }) {\n          const pos = appendBlock(\"```js\\n```\");\n          editor.setSelection(\n            codemirror.Pos(pos.line, 3),\n            codemirror.Pos(pos.line, 5)\n          );\n          editor.focus();\n        }\n      }\n    },\n    {\n      title: locale.ul,\n      icon: icons.ListTwo,\n      cheatsheet: `- ${locale.ulItem}`,\n      handler: {\n        type: \"action\",\n        shortcut: getShortcutWithPrefix(\"U\", true),\n        click({ replaceLines, editor }) {\n          replaceLines((line) => \"- \" + line);\n          editor.focus();\n        }\n      }\n    },\n    {\n      title: locale.ol,\n      icon: icons.OrderedList,\n      cheatsheet: `1. ${locale.olItem}`,\n      handler: {\n        type: \"action\",\n        shortcut: getShortcutWithPrefix(\"O\", true),\n        click({ replaceLines, editor }) {\n          replaceLines((line, i) => `${i + 1}. ${line}`);\n          editor.focus();\n        }\n      }\n    },\n    {\n      title: locale.hr,\n      icon: icons.DividingLine,\n      cheatsheet: \"---\"\n    }\n  ];\n  const rightActions = [];\n  plugins.forEach(({ actions }) => {\n    if (actions) {\n      actions.forEach((action) => {\n        if (!action.position || action.position !== \"right\")\n          leftActions.push(action);\n        else\n          rightActions.unshift(action);\n      });\n    }\n  });\n  return {\n    leftActions,\n    rightActions\n  };\n}\nfunction get_each_context$2(ctx, list, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[5] = list[i];\n  return child_ctx;\n}\nfunction get_each_context_1$1(ctx, list, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[5] = list[i];\n  return child_ctx;\n}\nfunction create_if_block_1$2(ctx) {\n  let li;\n  let div0;\n  let raw_value = (\n    /*action*/\n    ctx[5].icon + \"\"\n  );\n  let div1;\n  let t0_value = (\n    /*action*/\n    ctx[5].title + \"\"\n  );\n  let t0;\n  let div2;\n  let code2;\n  let t1_value = (\n    /*action*/\n    ctx[5].cheatsheet + \"\"\n  );\n  let t1;\n  return {\n    c() {\n      li = element(\"li\");\n      div0 = element(\"div\");\n      div1 = element(\"div\");\n      t0 = text(t0_value);\n      div2 = element(\"div\");\n      code2 = element(\"code\");\n      t1 = text(t1_value);\n      attr(div0, \"class\", \"bytemd-help-icon\");\n      attr(div1, \"class\", \"bytemd-help-title\");\n      attr(div2, \"class\", \"bytemd-help-content\");\n    },\n    m(target, anchor) {\n      insert(target, li, anchor);\n      append(li, div0);\n      div0.innerHTML = raw_value;\n      append(li, div1);\n      append(div1, t0);\n      append(li, div2);\n      append(div2, code2);\n      append(code2, t1);\n    },\n    p(ctx2, dirty) {\n      if (dirty & /*items*/\n      4 && raw_value !== (raw_value = /*action*/\n      ctx2[5].icon + \"\"))\n        div0.innerHTML = raw_value;\n      if (dirty & /*items*/\n      4 && t0_value !== (t0_value = /*action*/\n      ctx2[5].title + \"\"))\n        set_data(t0, t0_value);\n      if (dirty & /*items*/\n      4 && t1_value !== (t1_value = /*action*/\n      ctx2[5].cheatsheet + \"\"))\n        set_data(t1, t1_value);\n    },\n    d(detaching) {\n      if (detaching)\n        detach(li);\n    }\n  };\n}\nfunction create_each_block_1$1(ctx) {\n  let if_block_anchor;\n  let if_block = (\n    /*action*/\n    ctx[5].cheatsheet && create_if_block_1$2(ctx)\n  );\n  return {\n    c() {\n      if (if_block)\n        if_block.c();\n      if_block_anchor = empty();\n    },\n    m(target, anchor) {\n      if (if_block)\n        if_block.m(target, anchor);\n      insert(target, if_block_anchor, anchor);\n    },\n    p(ctx2, dirty) {\n      if (\n        /*action*/\n        ctx2[5].cheatsheet\n      ) {\n        if (if_block) {\n          if_block.p(ctx2, dirty);\n        } else {\n          if_block = create_if_block_1$2(ctx2);\n          if_block.c();\n          if_block.m(if_block_anchor.parentNode, if_block_anchor);\n        }\n      } else if (if_block) {\n        if_block.d(1);\n        if_block = null;\n      }\n    },\n    d(detaching) {\n      if (if_block)\n        if_block.d(detaching);\n      if (detaching)\n        detach(if_block_anchor);\n    }\n  };\n}\nfunction create_if_block$3(ctx) {\n  let li;\n  let div0;\n  let raw_value = (\n    /*action*/\n    ctx[5].icon + \"\"\n  );\n  let div1;\n  let t0_value = (\n    /*action*/\n    ctx[5].title + \"\"\n  );\n  let t0;\n  let div2;\n  let kbd;\n  let t1_value = (\n    /*action*/\n    ctx[5].handler.shortcut + \"\"\n  );\n  let t1;\n  return {\n    c() {\n      li = element(\"li\");\n      div0 = element(\"div\");\n      div1 = element(\"div\");\n      t0 = text(t0_value);\n      div2 = element(\"div\");\n      kbd = element(\"kbd\");\n      t1 = text(t1_value);\n      attr(div0, \"class\", \"bytemd-help-icon\");\n      attr(div1, \"class\", \"bytemd-help-title\");\n      attr(div2, \"class\", \"bytemd-help-content\");\n    },\n    m(target, anchor) {\n      insert(target, li, anchor);\n      append(li, div0);\n      div0.innerHTML = raw_value;\n      append(li, div1);\n      append(div1, t0);\n      append(li, div2);\n      append(div2, kbd);\n      append(kbd, t1);\n    },\n    p(ctx2, dirty) {\n      if (dirty & /*items*/\n      4 && raw_value !== (raw_value = /*action*/\n      ctx2[5].icon + \"\"))\n        div0.innerHTML = raw_value;\n      if (dirty & /*items*/\n      4 && t0_value !== (t0_value = /*action*/\n      ctx2[5].title + \"\"))\n        set_data(t0, t0_value);\n      if (dirty & /*items*/\n      4 && t1_value !== (t1_value = /*action*/\n      ctx2[5].handler.shortcut + \"\"))\n        set_data(t1, t1_value);\n    },\n    d(detaching) {\n      if (detaching)\n        detach(li);\n    }\n  };\n}\nfunction create_each_block$2(ctx) {\n  let if_block_anchor;\n  let if_block = (\n    /*action*/\n    ctx[5].handler && /*action*/\n    ctx[5].handler.type === \"action\" && /*action*/\n    ctx[5].handler.shortcut && create_if_block$3(ctx)\n  );\n  return {\n    c() {\n      if (if_block)\n        if_block.c();\n      if_block_anchor = empty();\n    },\n    m(target, anchor) {\n      if (if_block)\n        if_block.m(target, anchor);\n      insert(target, if_block_anchor, anchor);\n    },\n    p(ctx2, dirty) {\n      if (\n        /*action*/\n        ctx2[5].handler && /*action*/\n        ctx2[5].handler.type === \"action\" && /*action*/\n        ctx2[5].handler.shortcut\n      ) {\n        if (if_block) {\n          if_block.p(ctx2, dirty);\n        } else {\n          if_block = create_if_block$3(ctx2);\n          if_block.c();\n          if_block.m(if_block_anchor.parentNode, if_block_anchor);\n        }\n      } else if (if_block) {\n        if_block.d(1);\n        if_block = null;\n      }\n    },\n    d(detaching) {\n      if (if_block)\n        if_block.d(detaching);\n      if (detaching)\n        detach(if_block_anchor);\n    }\n  };\n}\nfunction create_fragment$5(ctx) {\n  let div;\n  let h20;\n  let t0_value = (\n    /*locale*/\n    ctx[0].cheatsheet + \"\"\n  );\n  let t0;\n  let ul0;\n  let h21;\n  let t1_value = (\n    /*locale*/\n    ctx[0].shortcuts + \"\"\n  );\n  let t1;\n  let ul1;\n  let each_value_1 = (\n    /*items*/\n    ctx[2]\n  );\n  let each_blocks_1 = [];\n  for (let i = 0; i < each_value_1.length; i += 1) {\n    each_blocks_1[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i));\n  }\n  let each_value = (\n    /*items*/\n    ctx[2]\n  );\n  let each_blocks = [];\n  for (let i = 0; i < each_value.length; i += 1) {\n    each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));\n  }\n  return {\n    c() {\n      div = element(\"div\");\n      h20 = element(\"h2\");\n      t0 = text(t0_value);\n      ul0 = element(\"ul\");\n      for (let i = 0; i < each_blocks_1.length; i += 1) {\n        each_blocks_1[i].c();\n      }\n      h21 = element(\"h2\");\n      t1 = text(t1_value);\n      ul1 = element(\"ul\");\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].c();\n      }\n      attr(div, \"class\", \"bytemd-help\");\n      toggle_class(div, \"bytemd-hidden\", !/*visible*/\n      ctx[1]);\n    },\n    m(target, anchor) {\n      insert(target, div, anchor);\n      append(div, h20);\n      append(h20, t0);\n      append(div, ul0);\n      for (let i = 0; i < each_blocks_1.length; i += 1) {\n        if (each_blocks_1[i]) {\n          each_blocks_1[i].m(ul0, null);\n        }\n      }\n      append(div, h21);\n      append(h21, t1);\n      append(div, ul1);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        if (each_blocks[i]) {\n          each_blocks[i].m(ul1, null);\n        }\n      }\n    },\n    p(ctx2, [dirty]) {\n      if (dirty & /*locale*/\n      1 && t0_value !== (t0_value = /*locale*/\n      ctx2[0].cheatsheet + \"\"))\n        set_data(t0, t0_value);\n      if (dirty & /*items*/\n      4) {\n        each_value_1 = /*items*/\n        ctx2[2];\n        let i;\n        for (i = 0; i < each_value_1.length; i += 1) {\n          const child_ctx = get_each_context_1$1(ctx2, each_value_1, i);\n          if (each_blocks_1[i]) {\n            each_blocks_1[i].p(child_ctx, dirty);\n          } else {\n            each_blocks_1[i] = create_each_block_1$1(child_ctx);\n            each_blocks_1[i].c();\n            each_blocks_1[i].m(ul0, null);\n          }\n        }\n        for (; i < each_blocks_1.length; i += 1) {\n          each_blocks_1[i].d(1);\n        }\n        each_blocks_1.length = each_value_1.length;\n      }\n      if (dirty & /*locale*/\n      1 && t1_value !== (t1_value = /*locale*/\n      ctx2[0].shortcuts + \"\"))\n        set_data(t1, t1_value);\n      if (dirty & /*items*/\n      4) {\n        each_value = /*items*/\n        ctx2[2];\n        let i;\n        for (i = 0; i < each_value.length; i += 1) {\n          const child_ctx = get_each_context$2(ctx2, each_value, i);\n          if (each_blocks[i]) {\n            each_blocks[i].p(child_ctx, dirty);\n          } else {\n            each_blocks[i] = create_each_block$2(child_ctx);\n            each_blocks[i].c();\n            each_blocks[i].m(ul1, null);\n          }\n        }\n        for (; i < each_blocks.length; i += 1) {\n          each_blocks[i].d(1);\n        }\n        each_blocks.length = each_value.length;\n      }\n      if (dirty & /*visible*/\n      2) {\n        toggle_class(div, \"bytemd-hidden\", !/*visible*/\n        ctx2[1]);\n      }\n    },\n    i: noop,\n    o: noop,\n    d(detaching) {\n      if (detaching)\n        detach(div);\n      destroy_each(each_blocks_1, detaching);\n      destroy_each(each_blocks, detaching);\n    }\n  };\n}\nfunction instance$5($$self, $$props, $$invalidate) {\n  let items;\n  let { actions } = $$props;\n  let { locale } = $$props;\n  let { visible } = $$props;\n  function flatItems(actions2) {\n    let items2 = [];\n    actions2.forEach((action) => {\n      const { handler, cheatsheet: cheatsheet2 } = action;\n      if ((handler == null ? void 0 : handler.type) === \"dropdown\") {\n        items2.push(...flatItems(handler.actions));\n      }\n      if (cheatsheet2) {\n        items2.push(action);\n      }\n    });\n    return items2;\n  }\n  $$self.$$set = ($$props2) => {\n    if (\"actions\" in $$props2)\n      $$invalidate(3, actions = $$props2.actions);\n    if (\"locale\" in $$props2)\n      $$invalidate(0, locale = $$props2.locale);\n    if (\"visible\" in $$props2)\n      $$invalidate(1, visible = $$props2.visible);\n  };\n  $$self.$$.update = () => {\n    if ($$self.$$.dirty & /*actions*/\n    8) {\n      $$invalidate(2, items = flatItems(actions));\n    }\n  };\n  return [locale, visible, items, actions];\n}\nclass Help extends SvelteComponent {\n  constructor(options) {\n    super();\n    init(this, options, instance$5, create_fragment$5, safe_not_equal, { actions: 3, locale: 0, visible: 1 });\n  }\n}\nfunction create_if_block_1$1(ctx) {\n  let span;\n  let t_value = (\n    /*locale*/\n    ctx[2].limited + \"\"\n  );\n  let t;\n  return {\n    c() {\n      span = element(\"span\");\n      t = text(t_value);\n      attr(span, \"class\", \"bytemd-status-error\");\n    },\n    m(target, anchor) {\n      insert(target, span, anchor);\n      append(span, t);\n    },\n    p(ctx2, dirty) {\n      if (dirty & /*locale*/\n      4 && t_value !== (t_value = /*locale*/\n      ctx2[2].limited + \"\"))\n        set_data(t, t_value);\n    },\n    d(detaching) {\n      if (detaching)\n        detach(span);\n    }\n  };\n}\nfunction create_if_block$2(ctx) {\n  let label;\n  let input;\n  let t_value = (\n    /*locale*/\n    ctx[2].sync + \"\"\n  );\n  let t;\n  let mounted;\n  let dispose;\n  return {\n    c() {\n      label = element(\"label\");\n      input = element(\"input\");\n      t = text(t_value);\n      attr(input, \"type\", \"checkbox\");\n      input.checked = /*syncEnabled*/\n      ctx[1];\n    },\n    m(target, anchor) {\n      insert(target, label, anchor);\n      append(label, input);\n      append(label, t);\n      if (!mounted) {\n        dispose = listen(\n          input,\n          \"change\",\n          /*change_handler*/\n          ctx[8]\n        );\n        mounted = true;\n      }\n    },\n    p(ctx2, dirty) {\n      if (dirty & /*syncEnabled*/\n      2) {\n        input.checked = /*syncEnabled*/\n        ctx2[1];\n      }\n      if (dirty & /*locale*/\n      4 && t_value !== (t_value = /*locale*/\n      ctx2[2].sync + \"\"))\n        set_data(t, t_value);\n    },\n    d(detaching) {\n      if (detaching)\n        detach(label);\n      mounted = false;\n      dispose();\n    }\n  };\n}\nfunction create_fragment$4(ctx) {\n  let div2;\n  let div0;\n  let span0;\n  let t0_value = (\n    /*locale*/\n    ctx[2].words + \"\"\n  );\n  let t0;\n  let t1;\n  let strong0;\n  let t2;\n  let span1;\n  let t3_value = (\n    /*locale*/\n    ctx[2].lines + \"\"\n  );\n  let t3;\n  let t4;\n  let strong1;\n  let t5;\n  let div1;\n  let span2;\n  let t6_value = (\n    /*locale*/\n    ctx[2].top + \"\"\n  );\n  let t6;\n  let mounted;\n  let dispose;\n  let if_block0 = (\n    /*islimited*/\n    ctx[3] && create_if_block_1$1(ctx)\n  );\n  let if_block1 = (\n    /*showSync*/\n    ctx[0] && create_if_block$2(ctx)\n  );\n  return {\n    c() {\n      div2 = element(\"div\");\n      div0 = element(\"div\");\n      span0 = element(\"span\");\n      t0 = text(t0_value);\n      t1 = text(\": \");\n      strong0 = element(\"strong\");\n      t2 = text(\n        /*words*/\n        ctx[5]\n      );\n      span1 = element(\"span\");\n      t3 = text(t3_value);\n      t4 = text(\": \");\n      strong1 = element(\"strong\");\n      t5 = text(\n        /*lines*/\n        ctx[4]\n      );\n      if (if_block0)\n        if_block0.c();\n      div1 = element(\"div\");\n      if (if_block1)\n        if_block1.c();\n      span2 = element(\"span\");\n      t6 = text(t6_value);\n      attr(div0, \"class\", \"bytemd-status-left\");\n      attr(div1, \"class\", \"bytemd-status-right\");\n      attr(div2, \"class\", \"bytemd-status\");\n    },\n    m(target, anchor) {\n      insert(target, div2, anchor);\n      append(div2, div0);\n      append(div0, span0);\n      append(span0, t0);\n      append(span0, t1);\n      append(span0, strong0);\n      append(strong0, t2);\n      append(div0, span1);\n      append(span1, t3);\n      append(span1, t4);\n      append(span1, strong1);\n      append(strong1, t5);\n      if (if_block0)\n        if_block0.m(div0, null);\n      append(div2, div1);\n      if (if_block1)\n        if_block1.m(div1, null);\n      append(div1, span2);\n      append(span2, t6);\n      if (!mounted) {\n        dispose = [\n          listen(\n            span2,\n            \"click\",\n            /*click_handler*/\n            ctx[9]\n          ),\n          listen(span2, \"keydown\", self(\n            /*keydown_handler*/\n            ctx[10]\n          ))\n        ];\n        mounted = true;\n      }\n    },\n    p(ctx2, [dirty]) {\n      if (dirty & /*locale*/\n      4 && t0_value !== (t0_value = /*locale*/\n      ctx2[2].words + \"\"))\n        set_data(t0, t0_value);\n      if (dirty & /*words*/\n      32)\n        set_data(\n          t2,\n          /*words*/\n          ctx2[5]\n        );\n      if (dirty & /*locale*/\n      4 && t3_value !== (t3_value = /*locale*/\n      ctx2[2].lines + \"\"))\n        set_data(t3, t3_value);\n      if (dirty & /*lines*/\n      16)\n        set_data(\n          t5,\n          /*lines*/\n          ctx2[4]\n        );\n      if (\n        /*islimited*/\n        ctx2[3]\n      ) {\n        if (if_block0) {\n          if_block0.p(ctx2, dirty);\n        } else {\n          if_block0 = create_if_block_1$1(ctx2);\n          if_block0.c();\n          if_block0.m(div0, null);\n        }\n      } else if (if_block0) {\n        if_block0.d(1);\n        if_block0 = null;\n      }\n      if (\n        /*showSync*/\n        ctx2[0]\n      ) {\n        if (if_block1) {\n          if_block1.p(ctx2, dirty);\n        } else {\n          if_block1 = create_if_block$2(ctx2);\n          if_block1.c();\n          if_block1.m(div1, span2);\n        }\n      } else if (if_block1) {\n        if_block1.d(1);\n        if_block1 = null;\n      }\n      if (dirty & /*locale*/\n      4 && t6_value !== (t6_value = /*locale*/\n      ctx2[2].top + \"\"))\n        set_data(t6, t6_value);\n    },\n    i: noop,\n    o: noop,\n    d(detaching) {\n      if (detaching)\n        detach(div2);\n      if (if_block0)\n        if_block0.d();\n      if (if_block1)\n        if_block1.d();\n      mounted = false;\n      run_all(dispose);\n    }\n  };\n}\nfunction instance$4($$self, $$props, $$invalidate) {\n  let words2;\n  let lines2;\n  let { showSync } = $$props;\n  let { value } = $$props;\n  let { syncEnabled } = $$props;\n  let { locale } = $$props;\n  let { islimited } = $$props;\n  const dispatch = createEventDispatcher();\n  const change_handler = () => dispatch(\"sync\", !syncEnabled);\n  const click_handler = () => dispatch(\"top\");\n  const keydown_handler = (e) => [\"Enter\", \"Space\"].includes(e.code) && dispatch(\"top\");\n  $$self.$$set = ($$props2) => {\n    if (\"showSync\" in $$props2)\n      $$invalidate(0, showSync = $$props2.showSync);\n    if (\"value\" in $$props2)\n      $$invalidate(7, value = $$props2.value);\n    if (\"syncEnabled\" in $$props2)\n      $$invalidate(1, syncEnabled = $$props2.syncEnabled);\n    if (\"locale\" in $$props2)\n      $$invalidate(2, locale = $$props2.locale);\n    if (\"islimited\" in $$props2)\n      $$invalidate(3, islimited = $$props2.islimited);\n  };\n  $$self.$$.update = () => {\n    if ($$self.$$.dirty & /*value*/\n    128) {\n      $$invalidate(5, words2 = wordCount(value));\n    }\n    if ($$self.$$.dirty & /*value*/\n    128) {\n      $$invalidate(4, lines2 = value.split(\"\\n\").length);\n    }\n  };\n  return [\n    showSync,\n    syncEnabled,\n    locale,\n    islimited,\n    lines2,\n    words2,\n    dispatch,\n    value,\n    change_handler,\n    click_handler,\n    keydown_handler\n  ];\n}\nclass Status extends SvelteComponent {\n  constructor(options) {\n    super();\n    init(this, options, instance$4, create_fragment$4, safe_not_equal, {\n      showSync: 0,\n      value: 7,\n      syncEnabled: 1,\n      locale: 2,\n      islimited: 3\n    });\n  }\n}\nfunction get_each_context$1(ctx, list, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[11] = list[i];\n  child_ctx[13] = i;\n  return child_ctx;\n}\nfunction create_each_block$1(ctx) {\n  let li;\n  let t_value = (\n    /*item*/\n    ctx[11].text + \"\"\n  );\n  let t;\n  let li_class_value;\n  let li_style_value;\n  let mounted;\n  let dispose;\n  function click_handler() {\n    return (\n      /*click_handler*/\n      ctx[8](\n        /*index*/\n        ctx[13]\n      )\n    );\n  }\n  function keydown_handler(...args) {\n    return (\n      /*keydown_handler*/\n      ctx[9](\n        /*index*/\n        ctx[13],\n        ...args\n      )\n    );\n  }\n  return {\n    c() {\n      li = element(\"li\");\n      t = text(t_value);\n      attr(li, \"class\", li_class_value = `bytemd-toc-${/*item*/\n      ctx[11].level}`);\n      attr(li, \"style\", li_style_value = `padding-left:${/*item*/\n      (ctx[11].level - /*minLevel*/\n      ctx[3]) * 16 + 8}px`);\n      toggle_class(\n        li,\n        \"bytemd-toc-active\",\n        /*currentHeadingIndex*/\n        ctx[4] === /*index*/\n        ctx[13]\n      );\n      toggle_class(\n        li,\n        \"bytemd-toc-first\",\n        /*item*/\n        ctx[11].level === /*minLevel*/\n        ctx[3]\n      );\n    },\n    m(target, anchor) {\n      insert(target, li, anchor);\n      append(li, t);\n      if (!mounted) {\n        dispose = [\n          listen(li, \"click\", click_handler),\n          listen(li, \"keydown\", self(keydown_handler))\n        ];\n        mounted = true;\n      }\n    },\n    p(new_ctx, dirty) {\n      ctx = new_ctx;\n      if (dirty & /*items*/\n      4 && t_value !== (t_value = /*item*/\n      ctx[11].text + \"\"))\n        set_data(t, t_value);\n      if (dirty & /*items*/\n      4 && li_class_value !== (li_class_value = `bytemd-toc-${/*item*/\n      ctx[11].level}`)) {\n        attr(li, \"class\", li_class_value);\n      }\n      if (dirty & /*items, minLevel*/\n      12 && li_style_value !== (li_style_value = `padding-left:${/*item*/\n      (ctx[11].level - /*minLevel*/\n      ctx[3]) * 16 + 8}px`)) {\n        attr(li, \"style\", li_style_value);\n      }\n      if (dirty & /*items, currentHeadingIndex*/\n      20) {\n        toggle_class(\n          li,\n          \"bytemd-toc-active\",\n          /*currentHeadingIndex*/\n          ctx[4] === /*index*/\n          ctx[13]\n        );\n      }\n      if (dirty & /*items, items, minLevel*/\n      12) {\n        toggle_class(\n          li,\n          \"bytemd-toc-first\",\n          /*item*/\n          ctx[11].level === /*minLevel*/\n          ctx[3]\n        );\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(li);\n      mounted = false;\n      run_all(dispose);\n    }\n  };\n}\nfunction create_fragment$3(ctx) {\n  let div;\n  let h22;\n  let t_value = (\n    /*locale*/\n    ctx[0].toc + \"\"\n  );\n  let t;\n  let ul2;\n  let each_value = (\n    /*items*/\n    ctx[2]\n  );\n  let each_blocks = [];\n  for (let i = 0; i < each_value.length; i += 1) {\n    each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));\n  }\n  return {\n    c() {\n      div = element(\"div\");\n      h22 = element(\"h2\");\n      t = text(t_value);\n      ul2 = element(\"ul\");\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].c();\n      }\n      attr(div, \"class\", \"bytemd-toc\");\n      toggle_class(div, \"bytemd-hidden\", !/*visible*/\n      ctx[1]);\n    },\n    m(target, anchor) {\n      insert(target, div, anchor);\n      append(div, h22);\n      append(h22, t);\n      append(div, ul2);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        if (each_blocks[i]) {\n          each_blocks[i].m(ul2, null);\n        }\n      }\n    },\n    p(ctx2, [dirty]) {\n      if (dirty & /*locale*/\n      1 && t_value !== (t_value = /*locale*/\n      ctx2[0].toc + \"\"))\n        set_data(t, t_value);\n      if (dirty & /*items, minLevel, currentHeadingIndex, dispatch*/\n      60) {\n        each_value = /*items*/\n        ctx2[2];\n        let i;\n        for (i = 0; i < each_value.length; i += 1) {\n          const child_ctx = get_each_context$1(ctx2, each_value, i);\n          if (each_blocks[i]) {\n            each_blocks[i].p(child_ctx, dirty);\n          } else {\n            each_blocks[i] = create_each_block$1(child_ctx);\n            each_blocks[i].c();\n            each_blocks[i].m(ul2, null);\n          }\n        }\n        for (; i < each_blocks.length; i += 1) {\n          each_blocks[i].d(1);\n        }\n        each_blocks.length = each_value.length;\n      }\n      if (dirty & /*visible*/\n      2) {\n        toggle_class(div, \"bytemd-hidden\", !/*visible*/\n        ctx2[1]);\n      }\n    },\n    i: noop,\n    o: noop,\n    d(detaching) {\n      if (detaching)\n        detach(div);\n      destroy_each(each_blocks, detaching);\n    }\n  };\n}\nfunction instance$3($$self, $$props, $$invalidate) {\n  let { hast } = $$props;\n  let { currentBlockIndex } = $$props;\n  let { locale } = $$props;\n  let { visible } = $$props;\n  const dispatch = createEventDispatcher();\n  let items;\n  let minLevel = 6;\n  let currentHeadingIndex = 0;\n  function stringifyHeading(e) {\n    let result = \"\";\n    visit(e, (node) => {\n      if (node.type === \"text\") {\n        result += node.value;\n      }\n    });\n    return result;\n  }\n  const click_handler = (index2) => {\n    dispatch(\"click\", index2);\n  };\n  const keydown_handler = (index2, e) => {\n    if ([\"Enter\", \"Space\"].includes(e.code)) {\n      dispatch(\"click\", index2);\n    }\n  };\n  $$self.$$set = ($$props2) => {\n    if (\"hast\" in $$props2)\n      $$invalidate(6, hast = $$props2.hast);\n    if (\"currentBlockIndex\" in $$props2)\n      $$invalidate(7, currentBlockIndex = $$props2.currentBlockIndex);\n    if (\"locale\" in $$props2)\n      $$invalidate(0, locale = $$props2.locale);\n    if (\"visible\" in $$props2)\n      $$invalidate(1, visible = $$props2.visible);\n  };\n  $$self.$$.update = () => {\n    if ($$self.$$.dirty & /*hast, minLevel, items, currentBlockIndex*/\n    204) {\n      (() => {\n        $$invalidate(2, items = []);\n        $$invalidate(4, currentHeadingIndex = 0);\n        hast.children.filter((v) => v.type === \"element\").forEach((node, index2) => {\n          if (node.tagName[0] === \"h\" && !!node.children.length) {\n            const i = Number(node.tagName[1]);\n            $$invalidate(3, minLevel = Math.min(minLevel, i));\n            items.push({ level: i, text: stringifyHeading(node) });\n          }\n          if (currentBlockIndex >= index2) {\n            $$invalidate(4, currentHeadingIndex = items.length - 1);\n          }\n        });\n      })();\n    }\n  };\n  return [\n    locale,\n    visible,\n    items,\n    minLevel,\n    currentHeadingIndex,\n    dispatch,\n    hast,\n    currentBlockIndex,\n    click_handler,\n    keydown_handler\n  ];\n}\nclass Toc extends SvelteComponent {\n  constructor(options) {\n    super();\n    init(this, options, instance$3, create_fragment$3, not_equal, {\n      hast: 6,\n      currentBlockIndex: 7,\n      locale: 0,\n      visible: 1\n    });\n  }\n}\nfunction get_each_context(ctx, list, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[25] = list[i];\n  child_ctx[27] = i;\n  return child_ctx;\n}\nfunction get_each_context_1(ctx, list, i) {\n  const child_ctx = ctx.slice();\n  child_ctx[25] = list[i];\n  child_ctx[27] = i;\n  return child_ctx;\n}\nfunction create_else_block(ctx) {\n  let div0;\n  let t0_value = (\n    /*locale*/\n    ctx[2].write + \"\"\n  );\n  let t0;\n  let div1;\n  let t1_value = (\n    /*locale*/\n    ctx[2].preview + \"\"\n  );\n  let t1;\n  let mounted;\n  let dispose;\n  return {\n    c() {\n      div0 = element(\"div\");\n      t0 = text(t0_value);\n      div1 = element(\"div\");\n      t1 = text(t1_value);\n      attr(div0, \"class\", \"bytemd-toolbar-tab\");\n      toggle_class(\n        div0,\n        \"bytemd-toolbar-tab-active\",\n        /*activeTab*/\n        ctx[1] !== \"preview\"\n      );\n      attr(div1, \"class\", \"bytemd-toolbar-tab\");\n      toggle_class(\n        div1,\n        \"bytemd-toolbar-tab-active\",\n        /*activeTab*/\n        ctx[1] === \"preview\"\n      );\n    },\n    m(target, anchor) {\n      insert(target, div0, anchor);\n      append(div0, t0);\n      insert(target, div1, anchor);\n      append(div1, t1);\n      if (!mounted) {\n        dispose = [\n          listen(\n            div0,\n            \"click\",\n            /*click_handler*/\n            ctx[16]\n          ),\n          listen(div0, \"keydown\", self(\n            /*keydown_handler*/\n            ctx[17]\n          )),\n          listen(\n            div1,\n            \"click\",\n            /*click_handler_1*/\n            ctx[18]\n          ),\n          listen(div1, \"keydown\", self(\n            /*keydown_handler_1*/\n            ctx[19]\n          ))\n        ];\n        mounted = true;\n      }\n    },\n    p(ctx2, dirty) {\n      if (dirty & /*locale*/\n      4 && t0_value !== (t0_value = /*locale*/\n      ctx2[2].write + \"\"))\n        set_data(t0, t0_value);\n      if (dirty & /*activeTab*/\n      2) {\n        toggle_class(\n          div0,\n          \"bytemd-toolbar-tab-active\",\n          /*activeTab*/\n          ctx2[1] !== \"preview\"\n        );\n      }\n      if (dirty & /*locale*/\n      4 && t1_value !== (t1_value = /*locale*/\n      ctx2[2].preview + \"\"))\n        set_data(t1, t1_value);\n      if (dirty & /*activeTab*/\n      2) {\n        toggle_class(\n          div1,\n          \"bytemd-toolbar-tab-active\",\n          /*activeTab*/\n          ctx2[1] === \"preview\"\n        );\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(div0);\n      if (detaching)\n        detach(div1);\n      mounted = false;\n      run_all(dispose);\n    }\n  };\n}\nfunction create_if_block_1(ctx) {\n  let each_1_anchor;\n  let each_value_1 = (\n    /*actions*/\n    ctx[3]\n  );\n  let each_blocks = [];\n  for (let i = 0; i < each_value_1.length; i += 1) {\n    each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));\n  }\n  return {\n    c() {\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].c();\n      }\n      each_1_anchor = empty();\n    },\n    m(target, anchor) {\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        if (each_blocks[i]) {\n          each_blocks[i].m(target, anchor);\n        }\n      }\n      insert(target, each_1_anchor, anchor);\n    },\n    p(ctx2, dirty) {\n      if (dirty & /*tippyClass, actions*/\n      8) {\n        each_value_1 = /*actions*/\n        ctx2[3];\n        let i;\n        for (i = 0; i < each_value_1.length; i += 1) {\n          const child_ctx = get_each_context_1(ctx2, each_value_1, i);\n          if (each_blocks[i]) {\n            each_blocks[i].p(child_ctx, dirty);\n          } else {\n            each_blocks[i] = create_each_block_1(child_ctx);\n            each_blocks[i].c();\n            each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);\n          }\n        }\n        for (; i < each_blocks.length; i += 1) {\n          each_blocks[i].d(1);\n        }\n        each_blocks.length = each_value_1.length;\n      }\n    },\n    d(detaching) {\n      destroy_each(each_blocks, detaching);\n      if (detaching)\n        detach(each_1_anchor);\n    }\n  };\n}\nfunction create_if_block_2(ctx) {\n  let div;\n  let raw_value = (\n    /*item*/\n    ctx[25].icon + \"\"\n  );\n  return {\n    c() {\n      div = element(\"div\");\n      attr(div, \"class\", [\"bytemd-toolbar-icon\", tippyClass].join(\" \"));\n      attr(\n        div,\n        \"bytemd-tippy-path\",\n        /*index*/\n        ctx[27]\n      );\n    },\n    m(target, anchor) {\n      insert(target, div, anchor);\n      div.innerHTML = raw_value;\n    },\n    p(ctx2, dirty) {\n      if (dirty & /*actions*/\n      8 && raw_value !== (raw_value = /*item*/\n      ctx2[25].icon + \"\"))\n        div.innerHTML = raw_value;\n    },\n    d(detaching) {\n      if (detaching)\n        detach(div);\n    }\n  };\n}\nfunction create_each_block_1(ctx) {\n  let if_block_anchor;\n  let if_block = (\n    /*item*/\n    ctx[25].handler && create_if_block_2(ctx)\n  );\n  return {\n    c() {\n      if (if_block)\n        if_block.c();\n      if_block_anchor = empty();\n    },\n    m(target, anchor) {\n      if (if_block)\n        if_block.m(target, anchor);\n      insert(target, if_block_anchor, anchor);\n    },\n    p(ctx2, dirty) {\n      if (\n        /*item*/\n        ctx2[25].handler\n      ) {\n        if (if_block) {\n          if_block.p(ctx2, dirty);\n        } else {\n          if_block = create_if_block_2(ctx2);\n          if_block.c();\n          if_block.m(if_block_anchor.parentNode, if_block_anchor);\n        }\n      } else if (if_block) {\n        if_block.d(1);\n        if_block = null;\n      }\n    },\n    d(detaching) {\n      if (if_block)\n        if_block.d(detaching);\n      if (detaching)\n        detach(if_block_anchor);\n    }\n  };\n}\nfunction create_if_block$1(ctx) {\n  let div;\n  let raw_value = (\n    /*item*/\n    ctx[25].icon + \"\"\n  );\n  return {\n    c() {\n      div = element(\"div\");\n      attr(div, \"class\", [\"bytemd-toolbar-icon\", tippyClass, tippyClassRight].join(\" \"));\n      attr(\n        div,\n        \"bytemd-tippy-path\",\n        /*index*/\n        ctx[27]\n      );\n      toggle_class(\n        div,\n        \"bytemd-toolbar-icon-active\",\n        /*item*/\n        ctx[25].active\n      );\n    },\n    m(target, anchor) {\n      insert(target, div, anchor);\n      div.innerHTML = raw_value;\n    },\n    p(ctx2, dirty) {\n      if (dirty & /*rightActions*/\n      32 && raw_value !== (raw_value = /*item*/\n      ctx2[25].icon + \"\"))\n        div.innerHTML = raw_value;\n      if (dirty & /*rightActions*/\n      32) {\n        toggle_class(\n          div,\n          \"bytemd-toolbar-icon-active\",\n          /*item*/\n          ctx2[25].active\n        );\n      }\n    },\n    d(detaching) {\n      if (detaching)\n        detach(div);\n    }\n  };\n}\nfunction create_each_block(ctx) {\n  let if_block_anchor;\n  let if_block = !/*item*/\n  ctx[25].hidden && create_if_block$1(ctx);\n  return {\n    c() {\n      if (if_block)\n        if_block.c();\n      if_block_anchor = empty();\n    },\n    m(target, anchor) {\n      if (if_block)\n        if_block.m(target, anchor);\n      insert(target, if_block_anchor, anchor);\n    },\n    p(ctx2, dirty) {\n      if (!/*item*/\n      ctx2[25].hidden) {\n        if (if_block) {\n          if_block.p(ctx2, dirty);\n        } else {\n          if_block = create_if_block$1(ctx2);\n          if_block.c();\n          if_block.m(if_block_anchor.parentNode, if_block_anchor);\n        }\n      } else if (if_block) {\n        if_block.d(1);\n        if_block = null;\n      }\n    },\n    d(detaching) {\n      if (if_block)\n        if_block.d(detaching);\n      if (detaching)\n        detach(if_block_anchor);\n    }\n  };\n}\nfunction create_fragment$2(ctx) {\n  let div2;\n  let div0;\n  let div1;\n  let mounted;\n  let dispose;\n  function select_block_type(ctx2, dirty) {\n    if (\n      /*split*/\n      ctx2[0]\n    )\n      return create_if_block_1;\n    return create_else_block;\n  }\n  let current_block_type = select_block_type(ctx);\n  let if_block = current_block_type(ctx);\n  let each_value = (\n    /*rightActions*/\n    ctx[5]\n  );\n  let each_blocks = [];\n  for (let i = 0; i < each_value.length; i += 1) {\n    each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));\n  }\n  return {\n    c() {\n      div2 = element(\"div\");\n      div0 = element(\"div\");\n      if_block.c();\n      div1 = element(\"div\");\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        each_blocks[i].c();\n      }\n      attr(div0, \"class\", \"bytemd-toolbar-left\");\n      attr(div1, \"class\", \"bytemd-toolbar-right\");\n      attr(div2, \"class\", \"bytemd-toolbar\");\n    },\n    m(target, anchor) {\n      insert(target, div2, anchor);\n      append(div2, div0);\n      if_block.m(div0, null);\n      append(div2, div1);\n      for (let i = 0; i < each_blocks.length; i += 1) {\n        if (each_blocks[i]) {\n          each_blocks[i].m(div1, null);\n        }\n      }\n      ctx[20](div2);\n      if (!mounted) {\n        dispose = [\n          listen(\n            div2,\n            \"click\",\n            /*handleClick*/\n            ctx[7]\n          ),\n          listen(div2, \"keydown\", self(\n            /*keydown_handler_2*/\n            ctx[21]\n          ))\n        ];\n        mounted = true;\n      }\n    },\n    p(ctx2, [dirty]) {\n      if (current_block_type === (current_block_type = select_block_type(ctx2)) && if_block) {\n        if_block.p(ctx2, dirty);\n      } else {\n        if_block.d(1);\n        if_block = current_block_type(ctx2);\n        if (if_block) {\n          if_block.c();\n          if_block.m(div0, null);\n        }\n      }\n      if (dirty & /*tippyClass, tippyClassRight, rightActions*/\n      32) {\n        each_value = /*rightActions*/\n        ctx2[5];\n        let i;\n        for (i = 0; i < each_value.length; i += 1) {\n          const child_ctx = get_each_context(ctx2, each_value, i);\n          if (each_blocks[i]) {\n            each_blocks[i].p(child_ctx, dirty);\n          } else {\n            each_blocks[i] = create_each_block(child_ctx);\n            each_blocks[i].c();\n            each_blocks[i].m(div1, null);\n          }\n        }\n        for (; i < each_blocks.length; i += 1) {\n          each_blocks[i].d(1);\n        }\n        each_blocks.length = each_value.length;\n      }\n    },\n    i: noop,\n    o: noop,\n    d(detaching) {\n      if (detaching)\n        detach(div2);\n      if_block.d();\n      destroy_each(each_blocks, detaching);\n      ctx[20](null);\n      mounted = false;\n      run_all(dispose);\n    }\n  };\n}\nconst tippyClass = \"bytemd-tippy\";\nconst tippyClassRight = \"bytemd-tippy-right\";\nconst tippyPathKey = \"bytemd-tippy-path\";\nfunction instance$2($$self, $$props, $$invalidate) {\n  let tocActive;\n  let helpActive;\n  let writeActive;\n  let previewActive;\n  let rightActions;\n  const dispatch = createEventDispatcher();\n  let toolbar;\n  let { context } = $$props;\n  let { split } = $$props;\n  let { activeTab } = $$props;\n  let { fullscreen: fullscreen2 } = $$props;\n  let { sidebar } = $$props;\n  let { locale } = $$props;\n  let { actions } = $$props;\n  let { rightAfferentActions } = $$props;\n  function getPayloadFromElement(e) {\n    var _a, _b;\n    const paths = (_b = (_a = e.getAttribute(tippyPathKey)) == null ? void 0 : _a.split(\"-\")) == null ? void 0 : _b.map((x) => parseInt(x, 10));\n    if (!paths)\n      return;\n    let item = {\n      title: \"\",\n      handler: {\n        type: \"dropdown\",\n        actions: e.classList.contains(tippyClassRight) ? rightActions : actions\n      }\n    };\n    paths == null ? void 0 : paths.forEach((index2) => {\n      var _a2;\n      if (((_a2 = item.handler) == null ? void 0 : _a2.type) === \"dropdown\") {\n        item = item.handler.actions[index2];\n      }\n    });\n    return { paths, item };\n  }\n  let delegateInstance;\n  function init2() {\n    delegateInstance = delegate(toolbar, {\n      target: `.${tippyClass}`,\n      onCreate({ setProps, reference }) {\n        const payload = getPayloadFromElement(reference);\n        if (!payload)\n          return;\n        const { item, paths } = payload;\n        const { handler } = item;\n        if (!handler)\n          return;\n        if (handler.type === \"action\") {\n          setProps({\n            content: item.title,\n            onHidden(ins) {\n              ins.destroy();\n            }\n          });\n        } else if (handler.type === \"dropdown\") {\n          const dropdown = document.createElement(\"div\");\n          dropdown.classList.add(\"bytemd-dropdown\");\n          if (item.title) {\n            const dropdownTitle = document.createElement(\"div\");\n            dropdownTitle.classList.add(\"bytemd-dropdown-title\");\n            dropdownTitle.appendChild(document.createTextNode(item.title));\n            dropdown.appendChild(dropdownTitle);\n          }\n          handler.actions.forEach((subAction, i) => {\n            var _a;\n            const dropdownItem = document.createElement(\"div\");\n            dropdownItem.classList.add(\"bytemd-dropdown-item\");\n            dropdownItem.setAttribute(tippyPathKey, [...paths, i].join(\"-\"));\n            if (((_a = subAction.handler) == null ? void 0 : _a.type) === \"dropdown\") {\n              dropdownItem.classList.add(tippyClass);\n            }\n            if (reference.classList.contains(tippyClassRight)) {\n              dropdownItem.classList.add(tippyClassRight);\n            }\n            dropdownItem.innerHTML = `${subAction.icon ? `<div class=\"bytemd-dropdown-item-icon\">${subAction.icon}</div>` : \"\"}<div class=\"bytemd-dropdown-item-title\">${subAction.title}</div>`;\n            dropdown.appendChild(dropdownItem);\n          });\n          setProps({\n            allowHTML: true,\n            showOnCreate: true,\n            theme: \"light-border\",\n            placement: \"bottom-start\",\n            interactive: true,\n            interactiveDebounce: 50,\n            arrow: false,\n            offset: [0, 4],\n            content: dropdown.outerHTML,\n            onHidden(ins) {\n              ins.destroy();\n            },\n            onCreate(ins) {\n              [...ins.popper.querySelectorAll(\".bytemd-dropdown-item\")].forEach((el, i) => {\n                var _a;\n                const actionHandler = (_a = handler.actions[i]) == null ? void 0 : _a.handler;\n                if ((actionHandler == null ? void 0 : actionHandler.type) === \"action\") {\n                  const { mouseenter, mouseleave } = actionHandler;\n                  if (mouseenter) {\n                    el.addEventListener(\"mouseenter\", () => {\n                      mouseenter(context);\n                    });\n                  }\n                  if (mouseleave) {\n                    el.addEventListener(\"mouseleave\", () => {\n                      mouseleave(context);\n                    });\n                  }\n                }\n              });\n            }\n          });\n        }\n      }\n    });\n  }\n  onMount(() => {\n    init2();\n  });\n  function handleClick(e) {\n    var _a, _b;\n    const target = e.target.closest(`[${tippyPathKey}]`);\n    if (!target)\n      return;\n    const handler = (_b = (_a = getPayloadFromElement(target)) == null ? void 0 : _a.item) == null ? void 0 : _b.handler;\n    if ((handler == null ? void 0 : handler.type) === \"action\") {\n      handler.click(context);\n    }\n    delegateInstance == null ? void 0 : delegateInstance.destroy();\n    init2();\n  }\n  const click_handler = () => dispatch(\"tab\", \"write\");\n  const keydown_handler = (e) => [\"Enter\", \"Space\"].includes(e.code) && dispatch(\"tab\", \"write\");\n  const click_handler_1 = () => dispatch(\"tab\", \"preview\");\n  const keydown_handler_1 = (e) => [\"Enter\", \"Space\"].includes(e.code) && dispatch(\"tab\", \"preview\");\n  function div2_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      toolbar = $$value;\n      $$invalidate(4, toolbar);\n    });\n  }\n  const keydown_handler_2 = (e) => [\"Enter\", \"Space\"].includes(e.code) && handleClick(e);\n  $$self.$$set = ($$props2) => {\n    if (\"context\" in $$props2)\n      $$invalidate(8, context = $$props2.context);\n    if (\"split\" in $$props2)\n      $$invalidate(0, split = $$props2.split);\n    if (\"activeTab\" in $$props2)\n      $$invalidate(1, activeTab = $$props2.activeTab);\n    if (\"fullscreen\" in $$props2)\n      $$invalidate(9, fullscreen2 = $$props2.fullscreen);\n    if (\"sidebar\" in $$props2)\n      $$invalidate(10, sidebar = $$props2.sidebar);\n    if (\"locale\" in $$props2)\n      $$invalidate(2, locale = $$props2.locale);\n    if (\"actions\" in $$props2)\n      $$invalidate(3, actions = $$props2.actions);\n    if (\"rightAfferentActions\" in $$props2)\n      $$invalidate(11, rightAfferentActions = $$props2.rightAfferentActions);\n  };\n  $$self.$$.update = () => {\n    if ($$self.$$.dirty & /*sidebar*/\n    1024) {\n      $$invalidate(15, tocActive = sidebar === \"toc\");\n    }\n    if ($$self.$$.dirty & /*sidebar*/\n    1024) {\n      $$invalidate(14, helpActive = sidebar === \"help\");\n    }\n    if ($$self.$$.dirty & /*activeTab*/\n    2) {\n      $$invalidate(13, writeActive = activeTab === \"write\");\n    }\n    if ($$self.$$.dirty & /*activeTab*/\n    2) {\n      $$invalidate(12, previewActive = activeTab === \"preview\");\n    }\n    if ($$self.$$.dirty & /*tocActive, locale, helpActive, writeActive, split, previewActive, fullscreen, rightAfferentActions*/\n    64005) {\n      $$invalidate(5, rightActions = [\n        {\n          title: tocActive ? locale.closeToc : locale.toc,\n          icon: icons.AlignTextLeftOne,\n          handler: {\n            type: \"action\",\n            click() {\n              dispatch(\"click\", \"toc\");\n            }\n          },\n          active: tocActive\n        },\n        {\n          title: helpActive ? locale.closeHelp : locale.help,\n          icon: icons.Helpcenter,\n          handler: {\n            type: \"action\",\n            click() {\n              dispatch(\"click\", \"help\");\n            }\n          },\n          active: helpActive\n        },\n        {\n          title: writeActive ? locale.exitWriteOnly : locale.writeOnly,\n          icon: icons.LeftExpand,\n          handler: {\n            type: \"action\",\n            click() {\n              dispatch(\"tab\", \"write\");\n            }\n          },\n          active: writeActive,\n          hidden: !split\n        },\n        {\n          title: previewActive ? locale.exitPreviewOnly : locale.previewOnly,\n          icon: icons.RightExpand,\n          handler: {\n            type: \"action\",\n            click() {\n              dispatch(\"tab\", \"preview\");\n            }\n          },\n          active: previewActive,\n          hidden: !split\n        },\n        {\n          title: fullscreen2 ? locale.exitFullscreen : locale.fullscreen,\n          icon: fullscreen2 ? icons.OffScreen : icons.FullScreen,\n          handler: {\n            type: \"action\",\n            click() {\n              dispatch(\"click\", \"fullscreen\");\n            }\n          }\n        },\n        {\n          title: locale.source,\n          icon: icons.GithubOne,\n          handler: {\n            type: \"action\",\n            click() {\n              window.open(\"https://github.com/bytedance/bytemd\");\n            }\n          }\n        },\n        ...rightAfferentActions\n      ]);\n    }\n  };\n  return [\n    split,\n    activeTab,\n    locale,\n    actions,\n    toolbar,\n    rightActions,\n    dispatch,\n    handleClick,\n    context,\n    fullscreen2,\n    sidebar,\n    rightAfferentActions,\n    previewActive,\n    writeActive,\n    helpActive,\n    tocActive,\n    click_handler,\n    keydown_handler,\n    click_handler_1,\n    keydown_handler_1,\n    div2_binding,\n    keydown_handler_2\n  ];\n}\nclass Toolbar extends SvelteComponent {\n  constructor(options) {\n    super();\n    init(this, options, instance$2, create_fragment$2, not_equal, {\n      context: 8,\n      split: 0,\n      activeTab: 1,\n      fullscreen: 9,\n      sidebar: 10,\n      locale: 2,\n      actions: 3,\n      rightAfferentActions: 11\n    });\n  }\n}\nconst schemaStr = JSON.stringify(defaultSchema);\nfunction getProcessor({\n  sanitize,\n  plugins,\n  remarkRehype: remarkRehypeOptions = {}\n}) {\n  let processor = unified().use(remarkParse);\n  plugins == null ? void 0 : plugins.forEach(({ remark }) => {\n    if (remark)\n      processor = remark(processor);\n  });\n  processor = processor.use(remarkRehype, { allowDangerousHtml: true, ...remarkRehypeOptions }).use(rehypeRaw);\n  let schema = JSON.parse(schemaStr);\n  schema.attributes[\"*\"].push(\"className\");\n  if (typeof sanitize === \"function\") {\n    schema = sanitize(schema);\n  }\n  processor = processor.use(rehypeSanitize, schema);\n  plugins == null ? void 0 : plugins.forEach(({ rehype }) => {\n    if (rehype)\n      processor = rehype(processor);\n  });\n  return processor.use(rehypeStringify);\n}\nfunction create_fragment$1(ctx) {\n  let div;\n  return {\n    c() {\n      div = element(\"div\");\n      attr(div, \"class\", \"markdown-body\");\n    },\n    m(target, anchor) {\n      insert(target, div, anchor);\n      div.innerHTML = /*html*/\n      ctx[1];\n      ctx[8](div);\n    },\n    p(ctx2, [dirty]) {\n      if (dirty & /*html*/\n      2)\n        div.innerHTML = /*html*/\n        ctx2[1];\n    },\n    i: noop,\n    o: noop,\n    d(detaching) {\n      if (detaching)\n        detach(div);\n      ctx[8](null);\n    }\n  };\n}\nfunction instance$1($$self, $$props, $$invalidate) {\n  let html;\n  const dispatch = createEventDispatcher();\n  let { value = \"\" } = $$props;\n  let { plugins = [] } = $$props;\n  let { sanitize = void 0 } = $$props;\n  let { remarkRehype: remarkRehype2 = void 0 } = $$props;\n  let markdownBody;\n  let cbs = [];\n  function on() {\n    cbs = plugins.map((p) => {\n      var _a;\n      return (_a = p.viewerEffect) == null ? void 0 : _a.call(p, { markdownBody, file });\n    });\n  }\n  function off() {\n    cbs.forEach((cb) => cb == null ? void 0 : cb());\n  }\n  onMount(() => {\n    markdownBody.addEventListener(\"click\", (e) => {\n      var _a;\n      const $ = e.target;\n      if ($.tagName !== \"A\")\n        return;\n      const href = $.getAttribute(\"href\");\n      if (!(href == null ? void 0 : href.startsWith(\"#\")))\n        return;\n      (_a = markdownBody.querySelector(\"#user-content-\" + href.slice(1))) == null ? void 0 : _a.scrollIntoView();\n    });\n  });\n  onDestroy(off);\n  let file;\n  let i = 0;\n  const dispatchPlugin = () => (tree, file2) => {\n    tick().then(() => {\n      dispatch(\"hast\", { hast: tree, file: file2 });\n    });\n  };\n  afterUpdate(() => {\n    off();\n    on();\n  });\n  function div_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      markdownBody = $$value;\n      $$invalidate(0, markdownBody);\n    });\n  }\n  $$self.$$set = ($$props2) => {\n    if (\"value\" in $$props2)\n      $$invalidate(2, value = $$props2.value);\n    if (\"plugins\" in $$props2)\n      $$invalidate(3, plugins = $$props2.plugins);\n    if (\"sanitize\" in $$props2)\n      $$invalidate(4, sanitize = $$props2.sanitize);\n    if (\"remarkRehype\" in $$props2)\n      $$invalidate(5, remarkRehype2 = $$props2.remarkRehype);\n  };\n  $$self.$$.update = () => {\n    if ($$self.$$.dirty & /*sanitize, plugins, remarkRehype, value, i*/\n    188) {\n      try {\n        $$invalidate(6, file = getProcessor({\n          sanitize,\n          plugins: [\n            ...plugins,\n            {\n              // remark: (p) =>\n              //   p.use(() => (tree) =>{\n              //     console.log(tree)\n              //   }),\n              rehype: (processor) => processor.use(dispatchPlugin)\n            }\n          ],\n          remarkRehype: remarkRehype2\n        }).processSync(value));\n        $$invalidate(7, i++, i);\n      } catch (err) {\n        console.error(err);\n      }\n    }\n    if ($$self.$$.dirty & /*file, i*/\n    192) {\n      $$invalidate(1, html = `${file}<!--${i}-->`);\n    }\n  };\n  return [\n    markdownBody,\n    html,\n    value,\n    plugins,\n    sanitize,\n    remarkRehype2,\n    file,\n    i,\n    div_binding\n  ];\n}\nclass Viewer extends SvelteComponent {\n  constructor(options) {\n    super();\n    init(this, options, instance$1, create_fragment$1, not_equal, {\n      value: 2,\n      plugins: 3,\n      sanitize: 4,\n      remarkRehype: 5\n    });\n  }\n}\nfunction create_if_block(ctx) {\n  let viewer;\n  let current;\n  viewer = new Viewer({\n    props: {\n      value: (\n        /*debouncedValue*/\n        ctx[16]\n      ),\n      plugins: (\n        /*plugins*/\n        ctx[1]\n      ),\n      sanitize: (\n        /*sanitize*/\n        ctx[2]\n      ),\n      remarkRehype: (\n        /*remarkRehype*/\n        ctx[3]\n      )\n    }\n  });\n  viewer.$on(\n    \"hast\",\n    /*hast_handler*/\n    ctx[35]\n  );\n  return {\n    c() {\n      create_component(viewer.$$.fragment);\n    },\n    m(target, anchor) {\n      mount_component(viewer, target, anchor);\n      current = true;\n    },\n    p(ctx2, dirty) {\n      const viewer_changes = {};\n      if (dirty[0] & /*debouncedValue*/\n      65536)\n        viewer_changes.value = /*debouncedValue*/\n        ctx2[16];\n      if (dirty[0] & /*plugins*/\n      2)\n        viewer_changes.plugins = /*plugins*/\n        ctx2[1];\n      if (dirty[0] & /*sanitize*/\n      4)\n        viewer_changes.sanitize = /*sanitize*/\n        ctx2[2];\n      if (dirty[0] & /*remarkRehype*/\n      8)\n        viewer_changes.remarkRehype = /*remarkRehype*/\n        ctx2[3];\n      viewer.$set(viewer_changes);\n    },\n    i(local) {\n      if (current)\n        return;\n      transition_in(viewer.$$.fragment, local);\n      current = true;\n    },\n    o(local) {\n      transition_out(viewer.$$.fragment, local);\n      current = false;\n    },\n    d(detaching) {\n      destroy_component(viewer, detaching);\n    }\n  };\n}\nfunction create_fragment(ctx) {\n  let div5;\n  let toolbar;\n  let div4;\n  let div0;\n  let div0_style_value;\n  let div1;\n  let div1_style_value;\n  let div3;\n  let div2;\n  let raw_value = icons.Close + \"\";\n  let help2;\n  let toc2;\n  let status;\n  let current;\n  let mounted;\n  let dispose;\n  toolbar = new Toolbar({\n    props: {\n      context: (\n        /*context*/\n        ctx[10]\n      ),\n      split: (\n        /*split*/\n        ctx[11]\n      ),\n      activeTab: (\n        /*activeTab*/\n        ctx[8]\n      ),\n      sidebar: (\n        /*sidebar*/\n        ctx[9]\n      ),\n      fullscreen: (\n        /*fullscreen*/\n        ctx[15]\n      ),\n      rightAfferentActions: (\n        /*actions*/\n        ctx[21].rightActions\n      ),\n      locale: (\n        /*mergedLocale*/\n        ctx[12]\n      ),\n      actions: (\n        /*actions*/\n        ctx[21].leftActions\n      )\n    }\n  });\n  toolbar.$on(\n    \"key\",\n    /*key_handler*/\n    ctx[31]\n  );\n  toolbar.$on(\n    \"tab\",\n    /*tab_handler*/\n    ctx[32]\n  );\n  toolbar.$on(\n    \"click\",\n    /*click_handler*/\n    ctx[33]\n  );\n  let if_block = !/*overridePreview*/\n  ctx[4] && /*split*/\n  (ctx[11] || /*activeTab*/\n  ctx[8] === \"preview\") && create_if_block(ctx);\n  help2 = new Help({\n    props: {\n      locale: (\n        /*mergedLocale*/\n        ctx[12]\n      ),\n      actions: (\n        /*actions*/\n        ctx[21].leftActions\n      ),\n      visible: (\n        /*sidebar*/\n        ctx[9] === \"help\"\n      )\n    }\n  });\n  toc2 = new Toc({\n    props: {\n      hast: (\n        /*hast*/\n        ctx[18]\n      ),\n      locale: (\n        /*mergedLocale*/\n        ctx[12]\n      ),\n      currentBlockIndex: (\n        /*currentBlockIndex*/\n        ctx[20]\n      ),\n      visible: (\n        /*sidebar*/\n        ctx[9] === \"toc\"\n      )\n    }\n  });\n  toc2.$on(\n    \"click\",\n    /*click_handler_2*/\n    ctx[39]\n  );\n  status = new Status({\n    props: {\n      locale: (\n        /*mergedLocale*/\n        ctx[12]\n      ),\n      showSync: !/*overridePreview*/\n      ctx[4] && /*split*/\n      ctx[11],\n      value: (\n        /*debouncedValue*/\n        ctx[16]\n      ),\n      syncEnabled: (\n        /*syncEnabled*/\n        ctx[17]\n      ),\n      islimited: (\n        /*value*/\n        ctx[0].length > /*maxLength*/\n        ctx[5]\n      )\n    }\n  });\n  status.$on(\n    \"sync\",\n    /*sync_handler*/\n    ctx[40]\n  );\n  status.$on(\n    \"top\",\n    /*top_handler*/\n    ctx[41]\n  );\n  return {\n    c() {\n      div5 = element(\"div\");\n      create_component(toolbar.$$.fragment);\n      div4 = element(\"div\");\n      div0 = element(\"div\");\n      div1 = element(\"div\");\n      if (if_block)\n        if_block.c();\n      div3 = element(\"div\");\n      div2 = element(\"div\");\n      create_component(help2.$$.fragment);\n      create_component(toc2.$$.fragment);\n      create_component(status.$$.fragment);\n      attr(div0, \"class\", \"bytemd-editor\");\n      attr(div0, \"style\", div0_style_value = /*styles*/\n      ctx[22].edit);\n      attr(div1, \"class\", \"bytemd-preview\");\n      attr(div1, \"style\", div1_style_value = /*styles*/\n      ctx[22].preview);\n      attr(div2, \"class\", \"bytemd-sidebar-close\");\n      attr(div3, \"class\", \"bytemd-sidebar\");\n      toggle_class(\n        div3,\n        \"bytemd-hidden\",\n        /*sidebar*/\n        ctx[9] === false\n      );\n      attr(div4, \"class\", \"bytemd-body\");\n      attr(div5, \"class\", \"bytemd\");\n      toggle_class(\n        div5,\n        \"bytemd-split\",\n        /*split*/\n        ctx[11] && /*activeTab*/\n        ctx[8] === false\n      );\n      toggle_class(\n        div5,\n        \"bytemd-fullscreen\",\n        /*fullscreen*/\n        ctx[15]\n      );\n    },\n    m(target, anchor) {\n      insert(target, div5, anchor);\n      mount_component(toolbar, div5, null);\n      append(div5, div4);\n      append(div4, div0);\n      ctx[34](div0);\n      append(div4, div1);\n      if (if_block)\n        if_block.m(div1, null);\n      ctx[36](div1);\n      append(div4, div3);\n      append(div3, div2);\n      div2.innerHTML = raw_value;\n      mount_component(help2, div3, null);\n      mount_component(toc2, div3, null);\n      mount_component(status, div5, null);\n      ctx[42](div5);\n      current = true;\n      if (!mounted) {\n        dispose = [\n          listen(\n            div2,\n            \"click\",\n            /*click_handler_1*/\n            ctx[37]\n          ),\n          listen(div2, \"keydown\", self(\n            /*keydown_handler*/\n            ctx[38]\n          ))\n        ];\n        mounted = true;\n      }\n    },\n    p(ctx2, dirty) {\n      const toolbar_changes = {};\n      if (dirty[0] & /*context*/\n      1024)\n        toolbar_changes.context = /*context*/\n        ctx2[10];\n      if (dirty[0] & /*split*/\n      2048)\n        toolbar_changes.split = /*split*/\n        ctx2[11];\n      if (dirty[0] & /*activeTab*/\n      256)\n        toolbar_changes.activeTab = /*activeTab*/\n        ctx2[8];\n      if (dirty[0] & /*sidebar*/\n      512)\n        toolbar_changes.sidebar = /*sidebar*/\n        ctx2[9];\n      if (dirty[0] & /*fullscreen*/\n      32768)\n        toolbar_changes.fullscreen = /*fullscreen*/\n        ctx2[15];\n      if (dirty[0] & /*actions*/\n      2097152)\n        toolbar_changes.rightAfferentActions = /*actions*/\n        ctx2[21].rightActions;\n      if (dirty[0] & /*mergedLocale*/\n      4096)\n        toolbar_changes.locale = /*mergedLocale*/\n        ctx2[12];\n      if (dirty[0] & /*actions*/\n      2097152)\n        toolbar_changes.actions = /*actions*/\n        ctx2[21].leftActions;\n      toolbar.$set(toolbar_changes);\n      if (!current || dirty[0] & /*styles*/\n      4194304 && div0_style_value !== (div0_style_value = /*styles*/\n      ctx2[22].edit)) {\n        attr(div0, \"style\", div0_style_value);\n      }\n      if (!/*overridePreview*/\n      ctx2[4] && /*split*/\n      (ctx2[11] || /*activeTab*/\n      ctx2[8] === \"preview\")) {\n        if (if_block) {\n          if_block.p(ctx2, dirty);\n          if (dirty[0] & /*overridePreview, split, activeTab*/\n          2320) {\n            transition_in(if_block, 1);\n          }\n        } else {\n          if_block = create_if_block(ctx2);\n          if_block.c();\n          transition_in(if_block, 1);\n          if_block.m(div1, null);\n        }\n      } else if (if_block) {\n        group_outros();\n        transition_out(if_block, 1, 1, () => {\n          if_block = null;\n        });\n        check_outros();\n      }\n      if (!current || dirty[0] & /*styles*/\n      4194304 && div1_style_value !== (div1_style_value = /*styles*/\n      ctx2[22].preview)) {\n        attr(div1, \"style\", div1_style_value);\n      }\n      const help_changes = {};\n      if (dirty[0] & /*mergedLocale*/\n      4096)\n        help_changes.locale = /*mergedLocale*/\n        ctx2[12];\n      if (dirty[0] & /*actions*/\n      2097152)\n        help_changes.actions = /*actions*/\n        ctx2[21].leftActions;\n      if (dirty[0] & /*sidebar*/\n      512)\n        help_changes.visible = /*sidebar*/\n        ctx2[9] === \"help\";\n      help2.$set(help_changes);\n      const toc_changes = {};\n      if (dirty[0] & /*hast*/\n      262144)\n        toc_changes.hast = /*hast*/\n        ctx2[18];\n      if (dirty[0] & /*mergedLocale*/\n      4096)\n        toc_changes.locale = /*mergedLocale*/\n        ctx2[12];\n      if (dirty[0] & /*currentBlockIndex*/\n      1048576)\n        toc_changes.currentBlockIndex = /*currentBlockIndex*/\n        ctx2[20];\n      if (dirty[0] & /*sidebar*/\n      512)\n        toc_changes.visible = /*sidebar*/\n        ctx2[9] === \"toc\";\n      toc2.$set(toc_changes);\n      if (!current || dirty[0] & /*sidebar*/\n      512) {\n        toggle_class(\n          div3,\n          \"bytemd-hidden\",\n          /*sidebar*/\n          ctx2[9] === false\n        );\n      }\n      const status_changes = {};\n      if (dirty[0] & /*mergedLocale*/\n      4096)\n        status_changes.locale = /*mergedLocale*/\n        ctx2[12];\n      if (dirty[0] & /*overridePreview, split*/\n      2064)\n        status_changes.showSync = !/*overridePreview*/\n        ctx2[4] && /*split*/\n        ctx2[11];\n      if (dirty[0] & /*debouncedValue*/\n      65536)\n        status_changes.value = /*debouncedValue*/\n        ctx2[16];\n      if (dirty[0] & /*syncEnabled*/\n      131072)\n        status_changes.syncEnabled = /*syncEnabled*/\n        ctx2[17];\n      if (dirty[0] & /*value, maxLength*/\n      33)\n        status_changes.islimited = /*value*/\n        ctx2[0].length > /*maxLength*/\n        ctx2[5];\n      status.$set(status_changes);\n      if (!current || dirty[0] & /*split, activeTab*/\n      2304) {\n        toggle_class(\n          div5,\n          \"bytemd-split\",\n          /*split*/\n          ctx2[11] && /*activeTab*/\n          ctx2[8] === false\n        );\n      }\n      if (!current || dirty[0] & /*fullscreen*/\n      32768) {\n        toggle_class(\n          div5,\n          \"bytemd-fullscreen\",\n          /*fullscreen*/\n          ctx2[15]\n        );\n      }\n    },\n    i(local) {\n      if (current)\n        return;\n      transition_in(toolbar.$$.fragment, local);\n      transition_in(if_block);\n      transition_in(help2.$$.fragment, local);\n      transition_in(toc2.$$.fragment, local);\n      transition_in(status.$$.fragment, local);\n      current = true;\n    },\n    o(local) {\n      transition_out(toolbar.$$.fragment, local);\n      transition_out(if_block);\n      transition_out(help2.$$.fragment, local);\n      transition_out(toc2.$$.fragment, local);\n      transition_out(status.$$.fragment, local);\n      current = false;\n    },\n    d(detaching) {\n      if (detaching)\n        detach(div5);\n      destroy_component(toolbar);\n      ctx[34](null);\n      if (if_block)\n        if_block.d();\n      ctx[36](null);\n      destroy_component(help2);\n      destroy_component(toc2);\n      destroy_component(status);\n      ctx[42](null);\n      mounted = false;\n      run_all(dispose);\n    }\n  };\n}\nfunction instance($$self, $$props, $$invalidate) {\n  let mergedLocale;\n  let actions;\n  let split;\n  let styles;\n  let context;\n  let { value = \"\" } = $$props;\n  let { plugins = [] } = $$props;\n  let { sanitize = void 0 } = $$props;\n  let { remarkRehype: remarkRehype2 = void 0 } = $$props;\n  let { mode = \"auto\" } = $$props;\n  let { previewDebounce = 300 } = $$props;\n  let { placeholder = void 0 } = $$props;\n  let { editorConfig = void 0 } = $$props;\n  let { locale = void 0 } = $$props;\n  let { uploadImages = void 0 } = $$props;\n  let { overridePreview = void 0 } = $$props;\n  let { maxLength = Infinity } = $$props;\n  const dispatch = createEventDispatcher();\n  let root;\n  let editorEl;\n  let previewEl;\n  let containerWidth = Infinity;\n  let codemirror;\n  let editor;\n  let activeTab;\n  let fullscreen2 = false;\n  let sidebar = false;\n  let cbs = [];\n  let keyMap = {};\n  function on() {\n    cbs = plugins.map((p) => {\n      var _a;\n      return (_a = p.editorEffect) == null ? void 0 : _a.call(p, context);\n    });\n    keyMap = {};\n    actions.leftActions.forEach(({ handler }) => {\n      if ((handler == null ? void 0 : handler.type) === \"action\" && handler.shortcut) {\n        keyMap[handler.shortcut] = () => {\n          handler.click(context);\n        };\n      }\n    });\n    editor.addKeyMap(keyMap);\n  }\n  function off() {\n    cbs.forEach((cb) => cb && cb());\n    editor == null ? void 0 : editor.removeKeyMap(keyMap);\n  }\n  let debouncedValue = value;\n  const setDebouncedValue = debounce(\n    (value2) => {\n      $$invalidate(16, debouncedValue = value2);\n      overridePreview == null ? void 0 : overridePreview(previewEl, {\n        value: debouncedValue,\n        plugins,\n        sanitize,\n        remarkRehype: remarkRehype2\n      });\n    },\n    previewDebounce\n  );\n  let syncEnabled = true;\n  let editCalled = false;\n  let previewCalled = false;\n  let editPs;\n  let previewPs;\n  let hast = { type: \"root\", children: [] };\n  let vfile;\n  let currentBlockIndex = 0;\n  onMount(async () => {\n    $$invalidate(30, codemirror = createCodeMirror());\n    $$invalidate(7, editor = codemirror(editorEl, {\n      value,\n      mode: \"yaml-frontmatter\",\n      lineWrapping: true,\n      tabSize: 8,\n      indentUnit: 4,\n      extraKeys: {\n        Enter: \"newlineAndIndentContinueMarkdownList\"\n      },\n      ...editorConfig,\n      placeholder\n    }));\n    editor.addKeyMap({\n      Tab: \"indentMore\",\n      \"Shift-Tab\": \"indentLess\"\n    });\n    editor.on(\"change\", () => {\n      dispatch(\"change\", { value: editor.getValue() });\n    });\n    const updateBlockPositions = throttle(\n      () => {\n        editPs = [];\n        previewPs = [];\n        const scrollInfo = editor.getScrollInfo();\n        const body = previewEl.childNodes[0];\n        if (!(body instanceof HTMLElement))\n          return;\n        const leftNodes = hast.children.filter((v) => v.type === \"element\");\n        const rightNodes = [...body.childNodes].filter((v) => v instanceof HTMLElement);\n        for (let i = 0; i < leftNodes.length; i++) {\n          const leftNode = leftNodes[i];\n          const rightNode = rightNodes[i];\n          if (!leftNode.position) {\n            continue;\n          }\n          const left = editor.heightAtLine(leftNode.position.start.line - 1, \"local\") / (scrollInfo.height - scrollInfo.clientHeight);\n          const right = (rightNode.offsetTop - body.offsetTop) / (previewEl.scrollHeight - previewEl.clientHeight);\n          if (left >= 1 || right >= 1) {\n            break;\n          }\n          editPs.push(left);\n          previewPs.push(right);\n        }\n        editPs.push(1);\n        previewPs.push(1);\n      },\n      1e3\n    );\n    const editorScrollHandler = () => {\n      if (overridePreview)\n        return;\n      if (!syncEnabled)\n        return;\n      if (previewCalled) {\n        previewCalled = false;\n        return;\n      }\n      updateBlockPositions();\n      const info = editor.getScrollInfo();\n      const leftRatio = info.top / (info.height - info.clientHeight);\n      const startIndex = findStartIndex(leftRatio, editPs);\n      const rightRatio = (leftRatio - editPs[startIndex]) * (previewPs[startIndex + 1] - previewPs[startIndex]) / (editPs[startIndex + 1] - editPs[startIndex]) + previewPs[startIndex];\n      previewEl.scrollTo(0, rightRatio * (previewEl.scrollHeight - previewEl.clientHeight));\n      editCalled = true;\n    };\n    const previewScrollHandler = () => {\n      if (overridePreview)\n        return;\n      updateBlockPositions();\n      $$invalidate(20, currentBlockIndex = findStartIndex(previewEl.scrollTop / (previewEl.scrollHeight - previewEl.offsetHeight), previewPs));\n      if (!syncEnabled)\n        return;\n      if (editCalled) {\n        editCalled = false;\n        return;\n      }\n      const rightRatio = previewEl.scrollTop / (previewEl.scrollHeight - previewEl.clientHeight);\n      const startIndex = findStartIndex(rightRatio, previewPs);\n      const leftRatio = (rightRatio - previewPs[startIndex]) * (editPs[startIndex + 1] - editPs[startIndex]) / (previewPs[startIndex + 1] - previewPs[startIndex]) + editPs[startIndex];\n      if (isNaN(leftRatio)) {\n        return;\n      }\n      const info = editor.getScrollInfo();\n      editor.scrollTo(0, leftRatio * (info.height - info.clientHeight));\n      previewCalled = true;\n    };\n    editor.on(\"scroll\", editorScrollHandler);\n    previewEl.addEventListener(\"scroll\", previewScrollHandler, { passive: true });\n    const handleImages = async (e, itemList) => {\n      if (!uploadImages)\n        return;\n      const files = Array.from(itemList != null ? itemList : []).map((item) => {\n        if (item.type.startsWith(\"image/\")) {\n          return item.getAsFile();\n        }\n      }).filter((f) => f != null);\n      if (files.length) {\n        e.preventDefault();\n        await handleImageUpload(context, uploadImages, files);\n      }\n    };\n    editor.on(\"drop\", async (_, e) => {\n      var _a;\n      handleImages(e, (_a = e.dataTransfer) == null ? void 0 : _a.items);\n    });\n    editor.on(\"paste\", async (_, e) => {\n      var _a;\n      handleImages(e, (_a = e.clipboardData) == null ? void 0 : _a.items);\n    });\n    new ResizeObserver((entries) => {\n      $$invalidate(29, containerWidth = entries[0].contentRect.width);\n    }).observe(root, {\n      box: \"border-box\"\n      // console.log(containerWidth);\n    });\n  });\n  onDestroy(off);\n  const key_handler = (e) => {\n    editor.setOption(\"keyMap\", e.detail);\n    editor.focus();\n  };\n  const tab_handler = (e) => {\n    const v = e.detail;\n    if (split) {\n      $$invalidate(8, activeTab = activeTab === v ? false : v);\n    } else {\n      $$invalidate(8, activeTab = v);\n    }\n    if (activeTab === \"write\") {\n      tick().then(() => {\n        editor && editor.focus();\n      });\n    }\n    if (v === \"write\") {\n      tick().then(() => {\n        editor && editor.setSize(null, null);\n      });\n    }\n  };\n  const click_handler = (e) => {\n    switch (e.detail) {\n      case \"fullscreen\":\n        $$invalidate(15, fullscreen2 = !fullscreen2);\n        break;\n      case \"help\":\n        $$invalidate(9, sidebar = sidebar === \"help\" ? false : \"help\");\n        break;\n      case \"toc\":\n        $$invalidate(9, sidebar = sidebar === \"toc\" ? false : \"toc\");\n        break;\n    }\n  };\n  function div0_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      editorEl = $$value;\n      $$invalidate(13, editorEl);\n    });\n  }\n  const hast_handler = (e) => {\n    $$invalidate(18, hast = e.detail.hast);\n    $$invalidate(19, vfile = e.detail.file);\n  };\n  function div1_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      previewEl = $$value;\n      $$invalidate(14, previewEl);\n    });\n  }\n  const click_handler_1 = () => {\n    $$invalidate(9, sidebar = false);\n  };\n  const keydown_handler = (e) => {\n    if ([\"Enter\", \"Space\"].includes(e.code)) {\n      $$invalidate(9, sidebar = false);\n    }\n  };\n  const click_handler_2 = (e) => {\n    const headings = previewEl.querySelectorAll(\"h1,h2,h3,h4,h5,h6\");\n    headings[e.detail].scrollIntoView();\n  };\n  const sync_handler = (e) => {\n    $$invalidate(17, syncEnabled = e.detail);\n  };\n  const top_handler = () => {\n    editor.scrollTo(null, 0);\n    previewEl.scrollTo({ top: 0 });\n  };\n  function div5_binding($$value) {\n    binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n      root = $$value;\n      $$invalidate(6, root);\n    });\n  }\n  $$self.$$set = ($$props2) => {\n    if (\"value\" in $$props2)\n      $$invalidate(0, value = $$props2.value);\n    if (\"plugins\" in $$props2)\n      $$invalidate(1, plugins = $$props2.plugins);\n    if (\"sanitize\" in $$props2)\n      $$invalidate(2, sanitize = $$props2.sanitize);\n    if (\"remarkRehype\" in $$props2)\n      $$invalidate(3, remarkRehype2 = $$props2.remarkRehype);\n    if (\"mode\" in $$props2)\n      $$invalidate(23, mode = $$props2.mode);\n    if (\"previewDebounce\" in $$props2)\n      $$invalidate(24, previewDebounce = $$props2.previewDebounce);\n    if (\"placeholder\" in $$props2)\n      $$invalidate(25, placeholder = $$props2.placeholder);\n    if (\"editorConfig\" in $$props2)\n      $$invalidate(26, editorConfig = $$props2.editorConfig);\n    if (\"locale\" in $$props2)\n      $$invalidate(27, locale = $$props2.locale);\n    if (\"uploadImages\" in $$props2)\n      $$invalidate(28, uploadImages = $$props2.uploadImages);\n    if (\"overridePreview\" in $$props2)\n      $$invalidate(4, overridePreview = $$props2.overridePreview);\n    if (\"maxLength\" in $$props2)\n      $$invalidate(5, maxLength = $$props2.maxLength);\n  };\n  $$self.$$.update = () => {\n    if ($$self.$$.dirty[0] & /*locale*/\n    134217728) {\n      $$invalidate(12, mergedLocale = { ...en, ...locale });\n    }\n    if ($$self.$$.dirty[0] & /*mergedLocale, plugins, uploadImages*/\n    268439554) {\n      $$invalidate(21, actions = getBuiltinActions(mergedLocale, plugins, uploadImages));\n    }\n    if ($$self.$$.dirty[0] & /*mode, containerWidth*/\n    545259520) {\n      $$invalidate(11, split = mode === \"split\" || mode === \"auto\" && containerWidth >= 800);\n    }\n    if ($$self.$$.dirty[0] & /*split*/\n    2048) {\n      ((_) => {\n        if (split)\n          $$invalidate(8, activeTab = false);\n      })();\n    }\n    if ($$self.$$.dirty[0] & /*split, activeTab, sidebar*/\n    2816) {\n      $$invalidate(22, styles = (() => {\n        let edit;\n        let preview2;\n        if (split && activeTab === false) {\n          if (sidebar) {\n            edit = `width:calc(50% - ${sidebar ? 140 : 0}px)`;\n            preview2 = `width:calc(50% - ${sidebar ? 140 : 0}px)`;\n          } else {\n            edit = \"width:50%\";\n            preview2 = \"width:50%\";\n          }\n        } else if (activeTab === \"preview\") {\n          edit = \"display:none\";\n          preview2 = `width:calc(100% - ${sidebar ? 280 : 0}px)`;\n        } else {\n          edit = `width:calc(100% - ${sidebar ? 280 : 0}px)`;\n          preview2 = \"display:none\";\n        }\n        return { edit, preview: preview2 };\n      })());\n    }\n    if ($$self.$$.dirty[0] & /*codemirror, editor, root*/\n    1073742016) {\n      $$invalidate(10, context = (() => {\n        const context2 = {\n          // @ts-ignore\n          codemirror,\n          editor,\n          root,\n          // @ts-ignore\n          ...createEditorUtils(codemirror, editor)\n        };\n        return context2;\n      })());\n    }\n    if ($$self.$$.dirty[0] & /*value*/\n    1) {\n      setDebouncedValue(value);\n    }\n    if ($$self.$$.dirty[0] & /*editor, value*/\n    129) {\n      if (editor && value !== editor.getValue()) {\n        editor.setValue(value);\n      }\n    }\n    if ($$self.$$.dirty[0] & /*editor, plugins*/\n    130) {\n      if (editor && plugins) {\n        off();\n        tick().then(() => {\n          on();\n        });\n      }\n    }\n  };\n  return [\n    value,\n    plugins,\n    sanitize,\n    remarkRehype2,\n    overridePreview,\n    maxLength,\n    root,\n    editor,\n    activeTab,\n    sidebar,\n    context,\n    split,\n    mergedLocale,\n    editorEl,\n    previewEl,\n    fullscreen2,\n    debouncedValue,\n    syncEnabled,\n    hast,\n    vfile,\n    currentBlockIndex,\n    actions,\n    styles,\n    mode,\n    previewDebounce,\n    placeholder,\n    editorConfig,\n    locale,\n    uploadImages,\n    containerWidth,\n    codemirror,\n    key_handler,\n    tab_handler,\n    click_handler,\n    div0_binding,\n    hast_handler,\n    div1_binding,\n    click_handler_1,\n    keydown_handler,\n    click_handler_2,\n    sync_handler,\n    top_handler,\n    div5_binding\n  ];\n}\nclass Editor extends SvelteComponent {\n  constructor(options) {\n    super();\n    init(\n      this,\n      options,\n      instance,\n      create_fragment,\n      not_equal,\n      {\n        value: 0,\n        plugins: 1,\n        sanitize: 2,\n        remarkRehype: 3,\n        mode: 23,\n        previewDebounce: 24,\n        placeholder: 25,\n        editorConfig: 26,\n        locale: 27,\n        uploadImages: 28,\n        overridePreview: 4,\n        maxLength: 5\n      },\n      null,\n      [-1, -1]\n    );\n  }\n}\nexport {\n  Editor,\n  Viewer,\n  getProcessor\n};\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\nexport default (function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n  return {\n    startState: function() {\n      return {\n        base: CodeMirror.startState(base),\n        overlay: CodeMirror.startState(overlay),\n        basePos: 0, baseCur: null,\n        overlayPos: 0, overlayCur: null,\n        streamSeen: null\n      };\n    },\n    copyState: function(state) {\n      return {\n        base: CodeMirror.copyState(base, state.base),\n        overlay: CodeMirror.copyState(overlay, state.overlay),\n        basePos: state.basePos, baseCur: null,\n        overlayPos: state.overlayPos, overlayCur: null\n      };\n    },\n\n    token: function(stream, state) {\n      if (stream != state.streamSeen ||\n          Math.min(state.basePos, state.overlayPos) < stream.start) {\n        state.streamSeen = stream;\n        state.basePos = state.overlayPos = stream.start;\n      }\n\n      if (stream.start == state.basePos) {\n        state.baseCur = base.token(stream, state.base);\n        state.basePos = stream.pos;\n      }\n      if (stream.start == state.overlayPos) {\n        stream.pos = stream.start;\n        state.overlayCur = overlay.token(stream, state.overlay);\n        state.overlayPos = stream.pos;\n      }\n      stream.pos = Math.min(state.basePos, state.overlayPos);\n\n      // state.overlay.combineTokens always takes precedence over combine,\n      // unless set to null\n      if (state.overlayCur == null) return state.baseCur;\n      else if (state.baseCur != null &&\n               state.overlay.combineTokens ||\n               combine && state.overlay.combineTokens == null)\n        return state.baseCur + \" \" + state.overlayCur;\n      else return state.overlayCur;\n    },\n\n    indent: base.indent && function(state, textAfter, line) {\n      return base.indent(state.base, textAfter, line);\n    },\n    electricChars: base.electricChars,\n\n    innerMode: function(state) { return {state: state.base, mode: base}; },\n\n    blankLine: function(state) {\n      var baseToken, overlayToken;\n      if (base.blankLine) baseToken = base.blankLine(state.base);\n      if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n      return overlayToken == null ?\n        baseToken :\n        (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n    }\n  };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\nexport default (function(CodeMirror) {\n\"use strict\";\n\nvar urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\\.beep|\\.lwz|\\.xpc|\\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\\.beeps?|xmpp|xri|ymsgr|z39\\.50[rs]?):(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\([^\\s()<>]*\\))+(?:\\([^\\s()<>]*\\)|[^\\s`*!()\\[\\]{};:'\".,<>?«»“”‘’]))/i\n\nCodeMirror.defineMode(\"gfm\", function(config, modeConfig) {\n  var codeDepth = 0;\n  function blankLine(state) {\n    state.code = false;\n    return null;\n  }\n  var gfmOverlay = {\n    startState: function() {\n      return {\n        code: false,\n        codeBlock: false,\n        ateSpace: false\n      };\n    },\n    copyState: function(s) {\n      return {\n        code: s.code,\n        codeBlock: s.codeBlock,\n        ateSpace: s.ateSpace\n      };\n    },\n    token: function(stream, state) {\n      state.combineTokens = null;\n\n      // Hack to prevent formatting override inside code blocks (block and inline)\n      if (state.codeBlock) {\n        if (stream.match(/^```+/)) {\n          state.codeBlock = false;\n          return null;\n        }\n        stream.skipToEnd();\n        return null;\n      }\n      if (stream.sol()) {\n        state.code = false;\n      }\n      if (stream.sol() && stream.match(/^```+/)) {\n        stream.skipToEnd();\n        state.codeBlock = true;\n        return null;\n      }\n      // If this block is changed, it may need to be updated in Markdown mode\n      if (stream.peek() === '`') {\n        stream.next();\n        var before = stream.pos;\n        stream.eatWhile('`');\n        var difference = 1 + stream.pos - before;\n        if (!state.code) {\n          codeDepth = difference;\n          state.code = true;\n        } else {\n          if (difference === codeDepth) { // Must be exact\n            state.code = false;\n          }\n        }\n        return null;\n      } else if (state.code) {\n        stream.next();\n        return null;\n      }\n      // Check if space. If so, links can be formatted later on\n      if (stream.eatSpace()) {\n        state.ateSpace = true;\n        return null;\n      }\n      if (stream.sol() || state.ateSpace) {\n        state.ateSpace = false;\n        if (modeConfig.gitHubSpice !== false) {\n          if(stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+@)?(?=.{0,6}\\d)(?:[a-f0-9]{7,40}\\b)/)) {\n            // User/Project@SHA\n            // User@SHA\n            // SHA\n            state.combineTokens = true;\n            return \"link\";\n          } else if (stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+)?#[0-9]+\\b/)) {\n            // User/Project#Num\n            // User#Num\n            // #Num\n            state.combineTokens = true;\n            return \"link\";\n          }\n        }\n      }\n      if (stream.match(urlRE) &&\n          stream.string.slice(stream.start - 2, stream.start) != \"](\" &&\n          (stream.start == 0 || /\\W/.test(stream.string.charAt(stream.start - 1)))) {\n        // URLs\n        // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls\n        // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine\n        // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL\n        state.combineTokens = true;\n        return \"link\";\n      }\n      stream.next();\n      return null;\n    },\n    blankLine: blankLine\n  };\n\n  var markdownConfig = {\n    taskLists: true,\n    strikethrough: true,\n    emoji: true\n  };\n  for (var attr in modeConfig) {\n    markdownConfig[attr] = modeConfig[attr];\n  }\n  markdownConfig.name = \"markdown\";\n  return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay);\n\n}, \"markdown\");\n\n  CodeMirror.defineMIME(\"text/x-gfm\", \"gfm\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\nexport default (function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"yaml\", function() {\n\n  var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];\n  var keywordRegex = new RegExp(\"\\\\b((\"+cons.join(\")|(\")+\"))$\", 'i');\n\n  return {\n    token: function(stream, state) {\n      var ch = stream.peek();\n      var esc = state.escaped;\n      state.escaped = false;\n      /* comments */\n      if (ch == \"#\" && (stream.pos == 0 || /\\s/.test(stream.string.charAt(stream.pos - 1)))) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n\n      if (stream.match(/^('([^']|\\\\.)*'?|\"([^\"]|\\\\.)*\"?)/))\n        return \"string\";\n\n      if (state.literal && stream.indentation() > state.keyCol) {\n        stream.skipToEnd(); return \"string\";\n      } else if (state.literal) { state.literal = false; }\n      if (stream.sol()) {\n        state.keyCol = 0;\n        state.pair = false;\n        state.pairStart = false;\n        /* document start */\n        if(stream.match('---')) { return \"def\"; }\n        /* document end */\n        if (stream.match('...')) { return \"def\"; }\n        /* array list item */\n        if (stream.match(/\\s*-\\s+/)) { return 'meta'; }\n      }\n      /* inline pairs/lists */\n      if (stream.match(/^(\\{|\\}|\\[|\\])/)) {\n        if (ch == '{')\n          state.inlinePairs++;\n        else if (ch == '}')\n          state.inlinePairs--;\n        else if (ch == '[')\n          state.inlineList++;\n        else\n          state.inlineList--;\n        return 'meta';\n      }\n\n      /* list separator */\n      if (state.inlineList > 0 && !esc && ch == ',') {\n        stream.next();\n        return 'meta';\n      }\n      /* pairs separator */\n      if (state.inlinePairs > 0 && !esc && ch == ',') {\n        state.keyCol = 0;\n        state.pair = false;\n        state.pairStart = false;\n        stream.next();\n        return 'meta';\n      }\n\n      /* start of value of a pair */\n      if (state.pairStart) {\n        /* block literals */\n        if (stream.match(/^\\s*(\\||\\>)\\s*/)) { state.literal = true; return 'meta'; };\n        /* references */\n        if (stream.match(/^\\s*(\\&|\\*)[a-z0-9\\._-]+\\b/i)) { return 'variable-2'; }\n        /* numbers */\n        if (state.inlinePairs == 0 && stream.match(/^\\s*-?[0-9\\.\\,]+\\s?$/)) { return 'number'; }\n        if (state.inlinePairs > 0 && stream.match(/^\\s*-?[0-9\\.\\,]+\\s?(?=(,|}))/)) { return 'number'; }\n        /* keywords */\n        if (stream.match(keywordRegex)) { return 'keyword'; }\n      }\n\n      /* pairs (associative arrays) -> key */\n      if (!state.pair && stream.match(/^\\s*(?:[,\\[\\]{}&*!|>'\"%@`][^\\s'\":]|[^,\\[\\]{}#&*!|>'\"%@`])[^#]*?(?=\\s*:($|\\s))/)) {\n        state.pair = true;\n        state.keyCol = stream.indentation();\n        return \"atom\";\n      }\n      if (state.pair && stream.match(/^:\\s*/)) { state.pairStart = true; return 'meta'; }\n\n      /* nothing found, continue */\n      state.pairStart = false;\n      state.escaped = (ch == '\\\\');\n      stream.next();\n      return null;\n    },\n    startState: function() {\n      return {\n        pair: false,\n        pairStart: false,\n        keyCol: 0,\n        inlinePairs: 0,\n        inlineList: 0,\n        literal: false,\n        escaped: false\n      };\n    },\n    lineComment: \"#\",\n    fold: \"indent\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-yaml\", \"yaml\");\nCodeMirror.defineMIME(\"text/yaml\", \"yaml\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\nexport default (function (CodeMirror) {\n\n  var START = 0, FRONTMATTER = 1, BODY = 2\n\n  // a mixed mode for Markdown text with an optional YAML front matter\n  CodeMirror.defineMode(\"yaml-frontmatter\", function (config, parserConfig) {\n    var yamlMode = CodeMirror.getMode(config, \"yaml\")\n    var innerMode = CodeMirror.getMode(config, parserConfig && parserConfig.base || \"gfm\")\n\n    function localMode(state) {\n      return state.state == FRONTMATTER ? {mode: yamlMode, state: state.yaml} : {mode: innerMode, state: state.inner}\n    }\n\n    return {\n      startState: function () {\n        return {\n          state: START,\n          yaml: null,\n          inner: CodeMirror.startState(innerMode)\n        }\n      },\n      copyState: function (state) {\n        return {\n          state: state.state,\n          yaml: state.yaml && CodeMirror.copyState(yamlMode, state.yaml),\n          inner: CodeMirror.copyState(innerMode, state.inner)\n        }\n      },\n      token: function (stream, state) {\n        if (state.state == START) {\n          if (stream.match('---', false)) {\n            state.state = FRONTMATTER\n            state.yaml = CodeMirror.startState(yamlMode)\n            return yamlMode.token(stream, state.yaml)\n          } else {\n            state.state = BODY\n            return innerMode.token(stream, state.inner)\n          }\n        } else if (state.state == FRONTMATTER) {\n          var end = stream.sol() && stream.match(/(---|\\.\\.\\.)/, false)\n          var style = yamlMode.token(stream, state.yaml)\n          if (end) {\n            state.state = BODY\n            state.yaml = null\n          }\n          return style\n        } else {\n          return innerMode.token(stream, state.inner)\n        }\n      },\n      innerMode: localMode,\n      indent: function(state, a, b) {\n        var m = localMode(state)\n        return m.mode.indent ? m.mode.indent(m.state, a, b) : CodeMirror.Pass\n      },\n      blankLine: function (state) {\n        var m = localMode(state)\n        if (m.mode.blankLine) return m.mode.blankLine(m.state)\n      }\n    }\n  })\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\nexport default (function(CodeMirror) {\n  \"use strict\";\n\n  var listRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]\\s|[*+-]\\s|(\\d+)([.)]))(\\s*)/,\n      emptyListRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]|[*+-]|(\\d+)[.)])(\\s*)$/,\n      unorderedListRE = /[*+-]\\s/;\n\n  CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    var ranges = cm.listSelections(), replacements = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].head;\n\n      // If we're not in Markdown mode, fall back to normal newlineAndIndent\n      var eolState = cm.getStateAfter(pos.line);\n      var inner = CodeMirror.innerMode(cm.getMode(), eolState);\n      if (inner.mode.name !== \"markdown\" && inner.mode.helperType !== \"markdown\") {\n        cm.execCommand(\"newlineAndIndent\");\n        return;\n      } else {\n        eolState = inner.state;\n      }\n\n      var inList = eolState.list !== false;\n      var inQuote = eolState.quote !== 0;\n\n      var line = cm.getLine(pos.line), match = listRE.exec(line);\n      var cursorBeforeBullet = /^\\s*$/.test(line.slice(0, pos.ch));\n      if (!ranges[i].empty() || (!inList && !inQuote) || !match || cursorBeforeBullet) {\n        cm.execCommand(\"newlineAndIndent\");\n        return;\n      }\n      if (emptyListRE.test(line)) {\n        var endOfQuote = inQuote && />\\s*$/.test(line)\n        var endOfList = !/>\\s*$/.test(line)\n        if (endOfQuote || endOfList) cm.replaceRange(\"\", {\n          line: pos.line, ch: 0\n        }, {\n          line: pos.line, ch: pos.ch + 1\n        });\n        replacements[i] = \"\\n\";\n      } else {\n        var indent = match[1], after = match[5];\n        var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf(\">\") >= 0);\n        var bullet = numbered ? (parseInt(match[3], 10) + 1) + match[4] : match[2].replace(\"x\", \" \");\n        replacements[i] = \"\\n\" + indent + bullet + after;\n\n        if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);\n      }\n    }\n\n    cm.replaceSelections(replacements);\n  };\n\n  // Auto-updating Markdown list numbers when a new item is added to the\n  // middle of a list\n  function incrementRemainingMarkdownListNumbers(cm, pos) {\n    var startLine = pos.line, lookAhead = 0, skipCount = 0;\n    var startItem = listRE.exec(cm.getLine(startLine)), startIndent = startItem[1];\n\n    do {\n      lookAhead += 1;\n      var nextLineNumber = startLine + lookAhead;\n      var nextLine = cm.getLine(nextLineNumber), nextItem = listRE.exec(nextLine);\n\n      if (nextItem) {\n        var nextIndent = nextItem[1];\n        var newNumber = (parseInt(startItem[3], 10) + lookAhead - skipCount);\n        var nextNumber = (parseInt(nextItem[3], 10)), itemNumber = nextNumber;\n\n        if (startIndent === nextIndent && !isNaN(nextNumber)) {\n          if (newNumber === nextNumber) itemNumber = nextNumber + 1;\n          if (newNumber > nextNumber) itemNumber = newNumber + 1;\n          cm.replaceRange(\n            nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),\n          {\n            line: nextLineNumber, ch: 0\n          }, {\n            line: nextLineNumber, ch: nextLine.length\n          });\n        } else {\n          if (startIndent.length > nextIndent.length) return;\n          // This doesn't run if the next line immediately indents, as it is\n          // not clear of the users intention (new indented item or same level)\n          if ((startIndent.length < nextIndent.length) && (lookAhead === 1)) return;\n          skipCount += 1;\n        }\n      }\n    } while (nextItem);\n  }\n});\n","import * as bytemd from \"bytemd\";\nimport React, { useRef, useEffect, useMemo } from \"react\";\nconst Editor = ({ onChange, ...props }) => {\n  const ed = useRef();\n  const el = useRef(null);\n  const onChangeRef = useRef();\n  useEffect(() => {\n    if (!el.current)\n      return;\n    const editor = new bytemd.Editor({\n      target: el.current,\n      props\n    });\n    editor.$on(\"change\", (e) => {\n      var _a;\n      (_a = onChangeRef.current) == null ? void 0 : _a.call(onChangeRef, e.detail.value);\n    });\n    ed.current = editor;\n    return () => {\n      editor.$destroy();\n    };\n  }, []);\n  useEffect(() => {\n    onChangeRef.current = onChange;\n  }, [onChange]);\n  useEffect(() => {\n    var _a;\n    (_a = ed.current) == null ? void 0 : _a.$set(props);\n  }, [props]);\n  return /* @__PURE__ */ React.createElement(\"div\", { ref: el });\n};\nconst Viewer = ({\n  value,\n  sanitize,\n  plugins,\n  remarkRehype\n}) => {\n  var _a;\n  const elRef = useRef(null);\n  const file = useMemo(() => {\n    try {\n      return bytemd.getProcessor({ sanitize, plugins, remarkRehype }).processSync(value);\n    } catch (err) {\n      console.error(err);\n    }\n  }, [value, sanitize, plugins, remarkRehype]);\n  useEffect(() => {\n    const markdownBody = elRef.current;\n    if (!markdownBody || !file)\n      return;\n    const cbs = plugins == null ? void 0 : plugins.map(\n      ({ viewerEffect }) => viewerEffect == null ? void 0 : viewerEffect({ markdownBody, file })\n    );\n    return () => {\n      cbs == null ? void 0 : cbs.forEach((cb) => cb && cb());\n    };\n  }, [file, plugins]);\n  return /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      onClick: (e) => {\n        var _a2, _b;\n        const $ = e.target;\n        if ($.tagName !== \"A\")\n          return;\n        const href = $.getAttribute(\"href\");\n        if (!(href == null ? void 0 : href.startsWith(\"#\")))\n          return;\n        (_b = (_a2 = elRef.current) == null ? void 0 : _a2.querySelector(\"#user-content-\" + href.slice(1))) == null ? void 0 : _b.scrollIntoView();\n      },\n      ref: elRef,\n      className: \"markdown-body\",\n      dangerouslySetInnerHTML: { __html: (_a = file == null ? void 0 : file.toString()) != null ? _a : \"\" }\n    }\n  );\n};\nexport {\n  Editor,\n  Viewer\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: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\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: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\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: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\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    // <https://github.com/github/cmark-gfm/issues/279>\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    // <https://github.com/github/cmark-gfm/issues/278>.\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 <https://github.com/github/cmark-gfm/issues/278> 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&amp;).\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&amp;).\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 * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\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 * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\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: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\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<Event>} 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<string>} */\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<Event>} */\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<string>} */\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<string>} */\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   * > <https://github.com/github/cmark-gfm/issues/240>\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<Event>} */\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<Event>]} 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<Change>}\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<Event>} 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<Event>} 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<Event>} 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<Jump>} */\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<Array<Event>>} */\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<Event>} 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<Event>} events\n//  * @param {Array<Jump>} 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<Event>} events\n * @param {number} index\n * @returns {Array<Align>}\n */\nexport function gfmTableAlign(events, index) {\n  let inDelimiterRow = false\n  /** @type {Array<Align>} */\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<Event>} */\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<Event>} 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 * @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<Node, MdastParent>} Parent\n * @typedef {Exclude<Parent, Root>} 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<ContentParent>, 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<string>`) — matches from regex capture groups\n *   * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | 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<Node>`, 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<FindAndReplaceTuple>} FindAndReplaceList\n *   Several find and replaces, in array form.\n * @typedef {Record<string, Replace>} 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<Pair>} 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 extends Node>(tree: Tree, find: Find, replace?: Replace | null | undefined, options?: Options | null | undefined) => Tree) &\n   *   (<Tree extends Node>(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<Root, 'text'>} */\n      function visitor(node, parents) {\n        let index = -1\n        /** @type {Parent | undefined} */\n        let grandparent\n\n        while (++index < parents.length) {\n          const parent = 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<Parent>} 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<PhrasingContent>} */\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<ConstructName>} */\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<PhrasingContent> | 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 * <https://github.com/syntax-tree/mdast#association>.\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: `&copy;` 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<FlowContent>}} 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<string>} */\n  const results = []\n  let index = -1\n\n  indexStack.push(-1)\n\n  while (++index < children.length) {\n    const child = children[index]\n\n    indexStack[indexStack.length - 1] = index\n\n    results.push(\n      tracker.move(\n        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<string>} */\n  const result = []\n  let start = 0\n  let line = 0\n  /** @type {RegExpExecArray | null} */\n  let match\n\n  while ((match = eol.exec(value))) {\n    one(value.slice(start, match.index))\n    result.push(match[0])\n    start = match.index + match[0].length\n    line++\n  }\n\n  one(value.slice(start))\n\n  return result.join('')\n\n  /**\n   * @param {string} value\n   */\n  function one(value) {\n    result.push(map(value, line, !value))\n  }\n}\n","/**\n * @typedef {import('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<PhrasingContent>}} 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<string>} */\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: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n    if (\n      results.length > 0 &&\n      (before === '\\r' || before === '\\n') &&\n      child.type === 'html'\n    ) {\n      results[results.length - 1] = results[results.length - 1].replace(\n        /(\\r?\\n|\\r)$/,\n        ' '\n      )\n      before = ' '\n\n      // To do: does this work to reset tracker?\n      tracker = 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: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\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","// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n *   Configuration.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n *   Whether to align the delimiters (default: `true`);\n *   they are aligned by default:\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 {ReadonlyArray<string | null | undefined> | string | null | undefined} [align]\n *   How to align columns (default: `''`);\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 | null | undefined} [delimiterEnd=true]\n *   Whether to end each row with the delimiter (default: `true`).\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 | null | undefined} [delimiterStart=true]\n *   Whether to begin each row with the delimiter (default: `true`).\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 | null | undefined} [padding=true]\n *   Whether to add a space of padding between delimiters and cells\n *   (default: `true`).\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 {((value: string) => number) | null | undefined} [stringLength]\n *   Function to detect the length of table cell content (optional);\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,\n *   which receives the cell content 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 * @param {string} value\n *   Cell value.\n * @returns {number}\n *   Cell size.\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray<ReadonlyArray<string | null | undefined>>} table\n *   Table data (matrix of strings).\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Result.\n */\nexport function markdownTable(table, options) {\n  const settings = options || {}\n  // To do: next major: change to spread.\n  const align = (settings.align || []).concat()\n  const stringLength = settings.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (settings.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      settings.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 (settings.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (settings.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 (settings.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        settings.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        !(settings.alignDelimiters === false && cell === '') &&\n        (settings.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (settings.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (settings.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (settings.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        settings.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      settings.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 *   Value to serialize.\n * @returns {string}\n *   Result.\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n *   Value.\n * @returns {number}\n *   Alignment.\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      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      table: handleTable,\n      tableRow: handleTableRow,\n      tableCell: handleTableCell,\n      inlineCode: inlineCodeWithTable\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, context, safeOptions) {\n    return serializeData(\n      handleTableAsData(node, context, safeOptions),\n      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<Array<string>>} matrix\n   * @param {Array<string | null | undefined> | 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<Array<string>>} */\n    const result = []\n    const subexit = context.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(\n        children[index],\n        context,\n        safeOptions\n      )\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {ToMarkdownContext} context\n   * @param {SafeOptions} safeOptions\n   */\n  function handleTableRowAsData(node, context, safeOptions) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = context.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(\n        children[index],\n        node,\n        context,\n        safeOptions\n      )\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, context) {\n    let value = inlineCode(node, parent, context)\n\n    if (context.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('../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<Options['listItemIndent'], null | undefined>}\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<Options['bullet'], null | undefined>}\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<Root | Content, Parent>} 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<FromMarkdownExtension>}\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","import remarkGfm from \"remark-gfm\";\nconst icons = {\n  Strikethrough: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M5 24h38M24 24c16 6 10 20 0 20s-12-8-12-8M36 12s-3-8-12-8-12.564 7.6-8.39 14\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M12 36s4 8 12 8 12.564-7.6 8.39-14\"/></svg>',\n  CheckCorrect: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><g stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" clip-path=\"url(#a)\"><path d=\"M42 20v19a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9a3 3 0 0 1 3-3h21\"/><path d=\"m16 20 10 8L41 7\"/></g><defs><clipPath id=\"a\"><path fill=\"currentColor\" d=\"M0 0h48v48H0z\"/></clipPath></defs></svg>',\n  InsertTable: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 48 48\"><path stroke=\"currentColor\" stroke-width=\"4\" d=\"M39.3 6H8.7A2.7 2.7 0 0 0 6 8.7v30.6A2.7 2.7 0 0 0 8.7 42h30.6a2.7 2.7 0 0 0 2.7-2.7V8.7A2.7 2.7 0 0 0 39.3 6Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"4\" d=\"M18 6v36M30 6v36M6 18h36M6 30h36\"/></svg>'\n};\nconst strike = \"Strikethrough\";\nconst strikeText = \"text\";\nconst table = \"Table\";\nconst tableHeading = \"Heading\";\nconst task = \"Task list\";\nconst taskText = \"todo\";\nconst en = {\n  strike,\n  strikeText,\n  table,\n  tableHeading,\n  task,\n  taskText\n};\nfunction gfm({\n  locale: _locale,\n  ...remarkGfmOptions\n} = {}) {\n  const locale = { ...en, ..._locale };\n  return {\n    remark: (processor) => processor.use(remarkGfm, remarkGfmOptions),\n    actions: [\n      {\n        title: locale.strike,\n        icon: icons.Strikethrough,\n        cheatsheet: `~~${locale.strikeText}~~`,\n        handler: {\n          type: \"action\",\n          click({ wrapText, editor }) {\n            wrapText(\"~~\");\n            editor.focus();\n          }\n        }\n      },\n      {\n        title: locale.task,\n        icon: icons.CheckCorrect,\n        cheatsheet: `- [ ] ${locale.taskText}`,\n        handler: {\n          type: \"action\",\n          click({ replaceLines, editor }) {\n            replaceLines((line) => \"- [ ] \" + line);\n            editor.focus();\n          }\n        }\n      },\n      {\n        title: locale.table,\n        icon: icons.InsertTable,\n        handler: {\n          type: \"action\",\n          click({ editor, appendBlock, codemirror }) {\n            const { line } = appendBlock(\n              `| ${locale.tableHeading} |  |\n| --- | --- |\n|  |  |\n`\n            );\n            editor.setSelection(\n              codemirror.Pos(line, 2),\n              codemirror.Pos(line, 2 + locale.tableHeading.length)\n            );\n            editor.focus();\n          }\n        }\n      }\n    ]\n  };\n}\nexport {\n  gfm as default\n};\n","import React, { useState, useEffect } from 'react';\r\nimport { Layout, Input, Button, Space, Modal, Splitter, List, message, Popconfirm } from 'antd';\r\nimport {\r\n    AppstoreAddOutlined,\r\n    ExportOutlined,\r\n    SearchOutlined,\r\n    DeleteOutlined,\r\n    SaveOutlined,\r\n    HomeOutlined,\r\n    FileZipOutlined\r\n} from '@ant-design/icons';\r\n\r\nimport { useSearchParams } from 'react-router-dom';\r\nimport Cookies from 'js-cookie';\r\n\r\nimport math from '@bytemd/plugin-math';\r\nimport mathLocale from '@bytemd/plugin-math/locales/zh_Hans.json';\r\nimport 'katex/dist/katex.css';\r\n\r\nimport highlight from '@bytemd/plugin-highlight';\r\nimport 'github-markdown-css';\r\nimport 'highlight.js/styles/vs.css';\r\n\r\nimport mermaid from '@bytemd/plugin-mermaid';\r\nimport mermaidLocale from '@bytemd/plugin-mermaid/locales/zh_Hans.json';\r\n\r\nimport { Editor } from '@bytemd/react';\r\nimport 'bytemd/dist/index.css';\r\nimport zhHans from 'bytemd/locales/zh_Hans.json';\r\nimport gfm from '@bytemd/plugin-gfm';\r\nimport gfmLocale from '@bytemd/plugin-gfm/locales/zh_Hans.json';\r\nimport './ComMain.css';\r\n\r\nimport CryptoJS from 'crypto-js';\r\n\r\nconst headerStyle = {\r\n    height: 60,\r\n    paddingInline: 30,\r\n    lineHeight: '30px',\r\n    backgroundColor: '#fff',\r\n};\r\n\r\nconst { Header, Content, Sider } = Layout;\r\n\r\nconst plugins = [\r\n    gfm({\r\n        locale: gfmLocale\r\n    }),\r\n    highlight(),\r\n    math({\r\n        locale: mathLocale,\r\n        katexOptions: { output: 'mathml' },\r\n    }),\r\n    mermaid({\r\n        locale: mermaidLocale\r\n    }),\r\n]\r\n\r\nconst GroupMain = () => {\r\n    const [searchParams] = useSearchParams();\r\n    const groupname = searchParams.get('groupname');\r\n    const [keywords, setKeywords] = useState(\"\");\r\n    const [markdownList, setMarkdownList] = useState([]);\r\n    // 新建分组模态框start\r\n    const [newMarkdownData, setNewMarkdownData] = useState({});\r\n    const [isNewMarkdownModalOpen, setIsNewMarkdownModalOpen] = useState(false);\r\n    // 新建分组模态框end\r\n\r\n    // 加解密模态框start\r\n    const [cryptoPwd, setCryptoPwd] = useState(\"\");\r\n    const [isCryptoModalOpen, setIsCryptoModalOpen] = useState(false);\r\n    // 加解密模态框end\r\n    const [mdvalue, setMdValue] = useState('');\r\n    const [mdname, setMdName] = useState('');\r\n    const [showEditor, setShowEditor] = useState(false);\r\n    const [messageApi, contextHolder] = message.useMessage();\r\n\r\n    const fetchMarkdowns = () => {\r\n\r\n        fetch('/search-detail', {\r\n            method: 'POST',\r\n            headers: {\r\n                'Content-Type': 'application/json'\r\n            },\r\n            body: JSON.stringify({\r\n                group: groupname,\r\n                query: keywords\r\n            })\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    setMarkdownList(d.data);\r\n                    if (d.data) {\r\n                        openMarkdown(d.data[0])();\r\n                    }\r\n                } else {\r\n                    messageApi.open({\r\n                        type: 'error',\r\n                        content: d.msg,\r\n                    });\r\n                }\r\n            });\r\n    };\r\n\r\n    useEffect(fetchMarkdowns, []);\r\n\r\n    useEffect(() => {\r\n        Cookies.set(\"groupname\", groupname);\r\n    }, []);\r\n\r\n    const saveMarkdown = () => {\r\n        const mdname = localStorage.getItem(\"mdname\");\r\n        const mdvalues = localStorage.getItem(\"mdvalue\");\r\n        fetch(`/update-markdown/${groupname}/${mdname}`, {\r\n            method: 'POST',\r\n            headers: {\r\n                'Content-Type': 'application/text'\r\n            },\r\n            body: mdvalues\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    // 通知保存成功\r\n                    messageApi.open({\r\n                        type: 'success',\r\n                        content: '保存成功',\r\n                    });\r\n                } else {\r\n                    messageApi.open({\r\n                        type: 'error',\r\n                        content: d.msg,\r\n                    });\r\n                }\r\n            });\r\n    };\r\n    const newMarkdown = () => {\r\n        fetch(`/new-markdown/${groupname}/${newMarkdownData.mdname}`, {\r\n            method: 'POST',\r\n            headers: {\r\n                'Content-Type': 'application/text'\r\n            },\r\n            body: `## 操作介绍\r\n* Ctrl+S保存\r\n* 图片支持复制粘贴、拖拽`\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    fetchMarkdowns();\r\n                    setIsNewMarkdownModalOpen(false);\r\n                } else {\r\n                    messageApi.open({\r\n                        type: 'error',\r\n                        content: d.msg,\r\n                    });\r\n                }\r\n            });\r\n    }\r\n    const openMarkdown = (mdname) => () => {\r\n        if(!mdname) {\r\n            return;\r\n        }\r\n        localStorage.setItem(\"mdname\", mdname);\r\n        setMdName(mdname);\r\n        fetch(`/${mdname}.md`, {\r\n            method: 'GET',\r\n            headers: {\r\n                'Cache-Control': 'no-cache'\r\n            }\r\n        })\r\n            .then(response => response.text())\r\n            .then(d => {\r\n                setMdValue(d);\r\n                setShowEditor(true);\r\n            });\r\n    };\r\n    const deleteConfirm = (e) => {\r\n        const mdname = localStorage.getItem(\"mdname\");\r\n        localStorage.removeItem(\"mdname\");\r\n        setMdName(\"\");\r\n        fetch(`/del-markdown/${groupname}/${mdname}`, {\r\n            method: 'DELETE'\r\n        })\r\n            .then(response => response.text())\r\n            .then(d => {\r\n                setMdValue(\"\");\r\n                fetchMarkdowns();\r\n            });\r\n    };\r\n    const deleteGroupConfirm = (e) => {\r\n        fetch(`/del-group/${groupname}`, {\r\n            method: 'DELETE'\r\n        })\r\n            .then(response => response.text())\r\n            .then(d => {\r\n                window.location.href = \"/\";\r\n            });\r\n    };\r\n    const encrypt = () => {\r\n        var _enmd = CryptoJS.AES.encrypt(mdvalue, cryptoPwd).toString();\r\n        setMdValue(_enmd);\r\n        localStorage.setItem(\"mdvalue\", _enmd);\r\n    };\r\n    const decrypt = () => {\r\n        var _demd = CryptoJS.AES.decrypt(mdvalue, cryptoPwd).toString(CryptoJS.enc.Utf8);\r\n        setMdValue(_demd);\r\n        localStorage.setItem(\"mdvalue\", _demd);\r\n    };\r\n    return (\r\n        <>\r\n            {contextHolder}\r\n            <Modal title=\"新建文档\" open={isNewMarkdownModalOpen} onOk={newMarkdown} onCancel={() => {\r\n                setIsNewMarkdownModalOpen(false);\r\n            }}>\r\n                <Input placeholder='文档名称' value={newMarkdownData.mdname} onChange={(e) => {\r\n                    setNewMarkdownData({\r\n                        mdname: e.target.value\r\n                    })\r\n                }}></Input>\r\n            </Modal>\r\n            <Modal title=\"加解密\" open={isCryptoModalOpen} onOk={() => {\r\n                setIsCryptoModalOpen(false);\r\n            }} onCancel={() => {\r\n                setIsCryptoModalOpen(false);\r\n            }}>\r\n                <Space direction=\"vertical\">\r\n                    <Input.Password placeholder='密码' value={cryptoPwd} onChange={(e) => {\r\n                        setCryptoPwd(e.target.value);\r\n                    }} />\r\n                    <Space>\r\n                        <Button type=\"primary\" onClick={encrypt}>加密</Button>\r\n                        <Button onClick={decrypt}>解密</Button>\r\n                    </Space>\r\n                </Space>\r\n            </Modal>\r\n            <Layout className=\"layout\">\r\n                <Header className=\"header\">\r\n                    <Space>\r\n                        {groupname}\r\n                        <Button icon={<HomeOutlined />} onClick={() => {\r\n                            window.location.href = \"/\";\r\n                        }}>首页</Button>\r\n                        <Space.Compact style={{ width: '100%' }}>\r\n                            <Input onKeyDown={(k) => {\r\n                                if (k.code === \"Enter\") {\r\n                                    fetchMarkdowns();\r\n                                }\r\n                            }} value={keywords} placeholder=\"关键词\" onChange={(e) => setKeywords(e.target.value)} />\r\n                            <Button onClick={fetchMarkdowns} icon={<SearchOutlined />}>搜索</Button>\r\n                        </Space.Compact>\r\n                        <Button icon={<AppstoreAddOutlined />} onClick={() => {\r\n                            setIsNewMarkdownModalOpen(true);\r\n                        }}>新建文档</Button>\r\n                        <Button icon={<ExportOutlined />} onClick={() => {\r\n                            window.open(`/export/${groupname}`);\r\n                        }}>导出分组</Button>\r\n                        <Popconfirm\r\n                            title=\"删除分组\"\r\n                            description=\"确认删除分组?\"\r\n                            onConfirm={deleteGroupConfirm}\r\n                            onCancel={(e) => { }}\r\n                            okText=\"是\"\r\n                            cancelText=\"否\"\r\n                        >\r\n                            <Button danger icon={<DeleteOutlined />}>删除分组</Button>\r\n                        </Popconfirm>\r\n\r\n                    </Space>\r\n                </Header>\r\n                <Content className=\"content\">\r\n                    <Splitter>\r\n                        <Splitter.Panel defaultSize=\"15%\" max=\"70%\">\r\n                            <List\r\n                                style={{\r\n                                    height: '750px'\r\n                                }}\r\n                                dataSource={markdownList}\r\n                                renderItem={(item) => (\r\n                                    <List.Item>\r\n                                        <Button type='link' onClick={openMarkdown(item)}>{item}</Button>\r\n                                    </List.Item>\r\n                                )}\r\n                            />\r\n                        </Splitter.Panel>\r\n                        <Splitter.Panel>\r\n                            {showEditor ?\r\n                                <Layout>\r\n                                    <Header style={headerStyle}>\r\n                                        <Layout style={{ backgroundColor: '#fff' }}>\r\n                                            <Content><h1>{mdname}</h1></Content>\r\n                                            <Sider width=\"40%\" style={{ backgroundColor: '#fff' }}>\r\n                                                <Space>\r\n                                                    <Button icon={<SaveOutlined />} type=\"primary\" onClick={saveMarkdown}>保存</Button>\r\n                                                    <Button icon={<FileZipOutlined />} onClick={() => {\r\n                                                        setIsCryptoModalOpen(true);\r\n                                                    }}>加解密</Button>\r\n                                                    <Button icon={<ExportOutlined />} onClick={() => {\r\n                                                        window.open(`/export/${groupname}/${mdname}`);\r\n                                                    }}>导出</Button>\r\n\r\n                                                    <Popconfirm\r\n                                                        title=\"删除文章\"\r\n                                                        description=\"确认删除文档?\"\r\n                                                        onConfirm={deleteConfirm}\r\n                                                        onCancel={(e) => { }}\r\n                                                        okText=\"是\"\r\n                                                        cancelText=\"否\"\r\n                                                    >\r\n                                                        <Button danger icon={<DeleteOutlined />}>删除</Button>\r\n                                                    </Popconfirm>\r\n                                                </Space>\r\n                                            </Sider>\r\n                                        </Layout>\r\n                                    </Header>\r\n                                    <Content>\r\n                                        <Editor\r\n                                            value={mdvalue}\r\n                                            plugins={plugins}\r\n                                            onChange={(v) => {\r\n                                                setMdValue(v);\r\n                                                localStorage.setItem(\"mdvalue\", v);\r\n                                            }}\r\n                                            editorConfig={{\r\n                                                lineNumbers: true,\r\n                                                autofocus: false,\r\n                                                extraKeys: {\r\n                                                    \"Ctrl-S\": () => {\r\n                                                        // 保存\r\n                                                        saveMarkdown();\r\n                                                        return true; // 返回 true 表示事件已被处理\r\n                                                    }\r\n                                                },\r\n                                            }}\r\n                                            locale={zhHans}\r\n                                            uploadImages={(files) => new Promise((resolve, _) => {\r\n                                                if (!files) {\r\n                                                    return;\r\n                                                }\r\n                                                const mdname = localStorage.getItem(\"mdname\");\r\n                                                // 创建FormData对象,用于将文件上传到服务器\r\n                                                var formData = new FormData();\r\n                                                var image_names = [];\r\n                                                // var file_names = [];\r\n                                                // 将拖拽的文件添加到FormData对象中\r\n                                                for (var i = 0; i < files.length; i++) {\r\n                                                    var name = `${Date.now()}_${files[i].name}`;\r\n                                                    formData.append('file', files[i], name);\r\n                                                    if (files[i].type.indexOf('image') !== -1) {\r\n                                                        image_names.push(name);\r\n                                                    }\r\n                                                    // else {\r\n                                                    //     file_names.push(name);\r\n                                                    // }\r\n                                                }\r\n                                                // 创建XMLHttpRequest对象,用于发送请求\r\n                                                var xhr = new XMLHttpRequest();\r\n                                                // 监听上传进度\r\n                                                xhr.upload.addEventListener('progress', (e) => {\r\n                                                    if (e.lengthComputable) {\r\n                                                        var percent = (e.loaded / e.total) * 100;\r\n                                                        percent = parseInt(percent);\r\n                                                        console.log('上传进度:' + percent + '%');\r\n                                                    }\r\n                                                });\r\n                                                // 监听上传完成事件\r\n                                                xhr.addEventListener('load', (e) => {\r\n                                                    console.log('上传完成');\r\n                                                    let ri = [];\r\n                                                    for (var i = 0; i < image_names.length; i++) {\r\n                                                        ri.push({\r\n                                                            url: `${mdname}/${image_names[i]}`\r\n                                                        });\r\n                                                    }\r\n\r\n                                                    // for (var i = 0; i < file_names.length; i++) {\r\n                                                    //     ri.push({\r\n                                                    //         url: `${mdname}/${file_names[i]}`\r\n                                                    //     });\r\n                                                    // }\r\n                                                    resolve(ri);\r\n                                                });\r\n                                                // 监听上传出错事件\r\n                                                xhr.addEventListener('error', (e) => {\r\n                                                    console.log('上传出错');\r\n                                                });\r\n                                                // 监听上传取消事件\r\n                                                xhr.addEventListener('abort', (e) => {\r\n                                                    console.log('上传取消');\r\n                                                });\r\n                                                // 发送请求\r\n                                                xhr.open('POST', `/upload/${groupname}/${mdname}`);\r\n                                                xhr.send(formData);\r\n                                            })}\r\n                                        />\r\n                                    </Content>\r\n                                </Layout> : <></>}\r\n                        </Splitter.Panel>\r\n                    </Splitter>\r\n                </Content>\r\n            </Layout>\r\n        </>\r\n    );\r\n};\r\n\r\n\r\nexport default GroupMain;\r\n","function highlight({\n  init\n} = {}) {\n  let hljs;\n  return {\n    viewerEffect({ markdownBody }) {\n      (async () => {\n        const els = markdownBody.querySelectorAll(\"pre>code\");\n        if (els.length === 0)\n          return;\n        if (!hljs) {\n          hljs = await import(\"highlight.js\").then((m) => m.default);\n          if (init)\n            await init(hljs);\n        }\n        els.forEach((el) => {\n          hljs.highlightElement(el);\n        });\n      })();\n    }\n  };\n}\nexport {\n  highlight as default\n};\n","import React, { useState } from 'react';\r\nimport { Layout, Input, Button, Typography } from 'antd';\r\nimport Cookies from 'js-cookie'; // 用于操作 cookie\r\nimport UserMain from './UserMain';\r\nimport GroupMain from './GroupMain';\r\n\r\nimport { useNavigate, BrowserRouter, Route, Routes } from 'react-router-dom';\r\n\r\nconst { Content } = Layout;\r\nconst { Title } = Typography;\r\n\r\n// 登录页面组件\r\nconst LoginPage = () => {\r\n    const navigate = useNavigate();\r\n    const token = Cookies.get('session_id'); // 检查 cookie\r\n    const [user, setUser] = useState({});\r\n\r\n    // 登录逻辑\r\n    const handleLogin = () => {\r\n        // 这里可以添加你的登录逻辑,例如请求后端验证用户名和密码\r\n        fetch('/login', {\r\n            method: 'POST',\r\n            headers: {\r\n                'Content-Type': 'application/json'\r\n            },\r\n            body: JSON.stringify(user)\r\n        })\r\n            .then(response => response.json())\r\n            .then(d => {\r\n                if (d.ok) {\r\n                    navigate('/user-main');\r\n                } else {\r\n                    alert(d.msg);\r\n                }\r\n            });\r\n    };\r\n\r\n    return (\r\n        <>\r\n            {token ? <UserMain /> :\r\n                <Layout>\r\n                    <Content\r\n                        style={{\r\n                            display: 'flex',\r\n                            justifyContent: 'center',\r\n                            alignItems: 'center',\r\n                            height: '100vh',\r\n                        }}\r\n                    >\r\n                        <div\r\n                            style={{\r\n                                width: 300,\r\n                                padding: '20px',\r\n                                borderRadius: '8px',\r\n                                boxShadow: '0 0 10px rgba(0, 0, 0, 0.1)',\r\n                            }}\r\n                        >\r\n                            <Title level={3} style={{ textAlign: 'center' }}>\r\n                                用户登录\r\n                            </Title>\r\n                            <Input\r\n                                placeholder=\"请输入用户名\"\r\n                                value={user.username}\r\n                                onChange={(e) => setUser({\r\n                                    ...user,\r\n                                    username: e.target.value\r\n                                })}\r\n                                style={{ marginBottom: '15px' }}\r\n                            />\r\n                            <Input.Password\r\n                                placeholder=\"请输入密码\"\r\n                                value={user.password}\r\n                                onChange={(e) => setUser({\r\n                                    ...user,\r\n                                    password: e.target.value\r\n                                })}\r\n                                style={{ marginBottom: '15px' }}\r\n                            />\r\n                            <Button type=\"primary\" block onClick={handleLogin}>\r\n                                登录\r\n                            </Button>\r\n                        </div>\r\n                    </Content>\r\n                </Layout>}\r\n        </>\r\n    );\r\n};\r\n\r\n// 主应用组件\r\nconst App = () => {\r\n    return (<BrowserRouter>\r\n        <Routes>\r\n            <Route path=\"/\" element={<LoginPage />} />\r\n            <Route path=\"/user-main\" element={<UserMain />} />\r\n            <Route path='/group-main' element={<GroupMain />} />\r\n        </Routes>\r\n    </BrowserRouter>)\r\n};\r\n\r\nexport default App;","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport App from './App';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>\n);\n"],"names":["module","exports","selection","document","getSelection","rangeCount","active","activeElement","ranges","i","push","getRangeAt","tagName","toUpperCase","blur","removeAllRanges","type","forEach","range","addRange","focus","line","column","length","position","character","characters","node","value","root","parent","props","children","siblings","return","prev","charat","next","peek","caret","slice","begin","end","substr","token","alloc","strlen","dealloc","delimit","trim","delimiter","whitespace","escaping","index","count","commenter","from","identifier","compile","parse","rule","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","indexof","replace","abs","append","comment","declaration","ruleset","post","size","sizeof","j","k","x","y","z","RULESET","COMMENT","DECLARATION","FormattingElementList","constructor","treeAdapter","this","entries","bookmark","_getNoahArkConditionCandidates","newElement","candidates","neAttrsLength","getAttrList","neTagName","getTagName","neNamespaceURI","getNamespaceURI","entry","MARKER_ENTRY","element","elementAttrs","idx","attrs","_ensureNoahArkCondition","cLength","neAttrs","neAttrsMap","Object","create","neAttr","name","cAttr","splice","NOAH_ARK_CAPACITY","insertMarker","pushElement","ELEMENT_ENTRY","insertElementAfterBookmark","bookmarkIdx","removeEntry","clearToLastMarker","pop","getElementEntryInScopeWithTagName","getElementEntry","CryptoJS","require","pad","ZeroPadding","data","blockSize","blockSizeBytes","clamp","sigBytes","unpad","dataWords","words","reWhitespace","string","test","charAt","reTrimStart","trimmedEndIndex","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isSymbol","isObject","other","valueOf","baseTrim","isBinary","Mixin","Tokenizer","LocationInfoTokenizerMixin","LocationInfoOpenElementStackMixin","$","TAG_NAMES","parser","super","posTracker","lastStartTagToken","lastFosterParentingLocation","currentToken","_setStartLocation","loc","assign","location","startTag","setNodeSourceCodeLocation","_setEndLocation","closingToken","getNodeSourceCodeLocation","ctLoc","tn","endLoc","END_TAG_TOKEN","endTag","endLine","endCol","endOffset","startLine","startCol","startOffset","updateNodeSourceCodeLocation","_getOverriddenMethods","mxn","orig","_bootstrap","fragmentContext","call","tokenizerMixin","install","tokenizer","openElements","onItemPop","_runParsingLoop","scriptHandler","stackTop","items","_processTokenInForeignContent","_processToken","HTML","BODY","hasInScope","_setDocumentType","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_attachElementToTree","_appendElement","namespaceURI","_insertElement","_insertTemplate","tmplContent","getTemplateContent","current","_insertFakeRootElement","_appendCommentNode","commentNode","_findFosterParentingLocation","_insertCharacters","hasFosterParent","_shouldFosterParentOnInsertion","currentTmplContent","textNodeIdx","beforeElement","indexOf","textNode","ErrorReportingMixinBase","PositionTrackingPreprocessorMixin","preprocessor","opts","lastErrOffset","_reportError","code","Uint16Array","normalizeIdentifier","toLowerCase","NS","NAMESPACES","MATHML","SVG","XLINK","XML","XMLNS","ATTRS","TYPE","ACTION","ENCODING","PROMPT","NAME","COLOR","FACE","SIZE","DOCUMENT_MODE","NO_QUIRKS","QUIRKS","LIMITED_QUIRKS","A","ADDRESS","ANNOTATION_XML","APPLET","AREA","ARTICLE","ASIDE","B","BASE","BASEFONT","BGSOUND","BIG","BLOCKQUOTE","BR","BUTTON","CAPTION","CENTER","CODE","COL","COLGROUP","DD","DESC","DETAILS","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FOREIGN_OBJECT","FORM","FRAME","FRAMESET","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","I","IMG","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LI","LINK","LISTING","MAIN","MALIGNMARK","MARQUEE","MATH","MENU","META","MGLYPH","MI","MO","MN","MS","MTEXT","NAV","NOBR","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","P","PARAM","PLAINTEXT","PRE","RB","RP","RT","RTC","RUBY","S","SCRIPT","SECTION","SELECT","SOURCE","SMALL","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","TABLE","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TITLE","TR","TRACK","TT","U","UL","VAR","WBR","XMP","SPECIAL_ELEMENTS","mode","CFB","lib","BlockCipherMode","extend","generateKeystreamAndEncrypt","cipher","keystream","iv","_iv","undefined","_prevBlock","encryptBlock","Encryptor","processBlock","_cipher","Decryptor","thisBlock","u","b","Symbol","for","c","d","e","f","g","h","l","m","n","p","q","t","v","a","r","$$typeof","ForwardRef","isMemo","controlCharacterInInputStream","noncharacterInInputStream","surrogateInInputStream","nonVoidHtmlElementStartTagWithTrailingSolidus","endTagWithAttributes","endTagWithTrailingSolidus","unexpectedSolidusInTag","unexpectedNullCharacter","unexpectedQuestionMarkInsteadOfTagName","invalidFirstCharacterOfTagName","unexpectedEqualsSignBeforeAttributeName","missingEndTagName","unexpectedCharacterInAttributeName","unknownNamedCharacterReference","missingSemicolonAfterCharacterReference","unexpectedCharacterAfterDoctypeSystemIdentifier","unexpectedCharacterInUnquotedAttributeValue","eofBeforeTagName","eofInTag","missingAttributeValue","missingWhitespaceBetweenAttributes","missingWhitespaceAfterDoctypePublicKeyword","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingWhitespaceAfterDoctypeSystemKeyword","missingQuoteBeforeDoctypePublicIdentifier","missingQuoteBeforeDoctypeSystemIdentifier","missingDoctypePublicIdentifier","missingDoctypeSystemIdentifier","abruptDoctypePublicIdentifier","abruptDoctypeSystemIdentifier","cdataInHtmlContent","incorrectlyOpenedComment","eofInScriptHtmlCommentLikeText","eofInDoctype","nestedComment","abruptClosingOfEmptyComment","eofInComment","incorrectlyClosedComment","eofInCdata","absenceOfDigitsInNumericCharacterReference","nullCharacterReference","surrogateCharacterReference","characterReferenceOutsideUnicodeRange","controlCharacterReference","noncharacterCharacterReference","missingWhitespaceBeforeDoctypeName","missingDoctypeName","invalidCharacterSequenceAfterDoctypeName","duplicateAttribute","nonConformingDoctype","missingDoctype","misplacedDoctype","endTagWithoutMatchingOpenElement","closingOfElementWithOpenChildElements","disallowedContentInNoscriptInHead","openElementsLeftAfterEof","abandonedHeadElementChild","misplacedStartTagForHeadElement","nestedNoscriptInHead","eofInElementThatCanContainOnlyText","blankLine","tokenize","effects","ok","nok","markdownSpace","factorySpace","after","markdownLineEnding","partial","C","WordArray","C_algo","algo","SHA256","SHA224","_doReset","_hash","init","_doFinalize","hash","_createHelper","HmacSHA224","_createHmacHelper","StreamCipher","C_","G","RabbitLegacy","K","_key","cfg","X","_X","_C","_b","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","_doProcessBlock","M","ivSize","gx","ga","gb","gh","gl","Preprocessor","unicode","neTree","ERR","CODE_POINTS","$$","CODE_POINT_SEQUENCES","C1_CONTROLS_REFERENCE_REPLACEMENTS","DATA_STATE","RCDATA_STATE","RAWTEXT_STATE","SCRIPT_DATA_STATE","PLAINTEXT_STATE","TAG_OPEN_STATE","END_TAG_OPEN_STATE","TAG_NAME_STATE","RCDATA_LESS_THAN_SIGN_STATE","RCDATA_END_TAG_OPEN_STATE","RCDATA_END_TAG_NAME_STATE","RAWTEXT_LESS_THAN_SIGN_STATE","RAWTEXT_END_TAG_OPEN_STATE","RAWTEXT_END_TAG_NAME_STATE","SCRIPT_DATA_LESS_THAN_SIGN_STATE","SCRIPT_DATA_END_TAG_OPEN_STATE","SCRIPT_DATA_END_TAG_NAME_STATE","SCRIPT_DATA_ESCAPE_START_STATE","SCRIPT_DATA_ESCAPE_START_DASH_STATE","SCRIPT_DATA_ESCAPED_STATE","SCRIPT_DATA_ESCAPED_DASH_STATE","SCRIPT_DATA_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE","BEFORE_ATTRIBUTE_NAME_STATE","ATTRIBUTE_NAME_STATE","AFTER_ATTRIBUTE_NAME_STATE","BEFORE_ATTRIBUTE_VALUE_STATE","ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE","ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE","ATTRIBUTE_VALUE_UNQUOTED_STATE","AFTER_ATTRIBUTE_VALUE_QUOTED_STATE","SELF_CLOSING_START_TAG_STATE","BOGUS_COMMENT_STATE","MARKUP_DECLARATION_OPEN_STATE","COMMENT_START_STATE","COMMENT_START_DASH_STATE","COMMENT_STATE","COMMENT_LESS_THAN_SIGN_STATE","COMMENT_LESS_THAN_SIGN_BANG_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE","COMMENT_END_DASH_STATE","COMMENT_END_STATE","COMMENT_END_BANG_STATE","DOCTYPE_STATE","BEFORE_DOCTYPE_NAME_STATE","DOCTYPE_NAME_STATE","AFTER_DOCTYPE_NAME_STATE","AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE","AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE","BOGUS_DOCTYPE_STATE","CDATA_SECTION_STATE","CDATA_SECTION_BRACKET_STATE","CDATA_SECTION_END_STATE","CHARACTER_REFERENCE_STATE","NAMED_CHARACTER_REFERENCE_STATE","AMBIGUOUS_AMPERSAND_STATE","NUMERIC_CHARACTER_REFERENCE_STATE","HEXADEMICAL_CHARACTER_REFERENCE_START_STATE","DECIMAL_CHARACTER_REFERENCE_START_STATE","HEXADEMICAL_CHARACTER_REFERENCE_STATE","DECIMAL_CHARACTER_REFERENCE_STATE","NUMERIC_CHARACTER_REFERENCE_END_STATE","isWhitespace","cp","SPACE","LINE_FEED","TABULATION","FORM_FEED","isAsciiDigit","DIGIT_0","DIGIT_9","isAsciiUpper","LATIN_CAPITAL_A","LATIN_CAPITAL_Z","isAsciiLower","LATIN_SMALL_A","LATIN_SMALL_Z","isAsciiLetter","isAsciiAlphaNumeric","isAsciiUpperHexDigit","LATIN_CAPITAL_F","isAsciiLowerHexDigit","LATIN_SMALL_F","toAsciiLowerCodePoint","toChar","String","fromCharCode","toAsciiLowerChar","findNamedEntityTreeBranch","nodeIx","branchCount","lo","hi","mid","midCp","tokenQueue","allowCDATA","state","returnState","charRefCode","tempBuff","lastStartTagName","consumedAfterSnapshot","currentCharacterToken","currentAttr","_err","_errOnNextCodePoint","err","_consume","_unconsume","getNextToken","_ensureHibernation","shift","write","chunk","isLastChunk","insertHtmlAtCurrentPos","endOfChunkHit","retreat","HIBERNATION_TOKEN","advance","_reconsumeInState","_consumeSequenceIfMatch","pattern","startCp","caseSensitive","consumedCount","isMatch","patternLength","patternCp","patternPos","EOF","_isTempBufferEqualToScriptString","SCRIPT_STRING","_createStartTagToken","START_TAG_TOKEN","selfClosing","ackSelfClosing","_createEndTagToken","_createCommentToken","COMMENT_TOKEN","_createDoctypeToken","initialName","DOCTYPE_TOKEN","forceQuirks","publicId","systemId","_createCharacterToken","ch","chars","_createEOFToken","EOF_TOKEN","_createAttr","attrNameFirstCh","_leaveAttrName","toState","getTokenAttr","_leaveAttrValue","_emitCurrentToken","_emitCurrentCharacterToken","ct","_emitEOFToken","_appendCharToCurrentCharacterToken","_emitCodePoint","CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","NULL","NULL_CHARACTER_TOKEN","_emitSeveralCodePoints","codePoints","_emitChars","_matchNamedCharacterReference","result","excess","inNode","HAS_DATA_FLAG","_isCharacterReferenceInAttribute","_isCharacterReferenceAttributeQuirk","withSemicolon","nextCp","EQUALS_SIGN","_flushCodePointsConsumedAsCharacterReference","dropParsedChunk","LESS_THAN_SIGN","AMPERSAND","REPLACEMENT_CHARACTER","EXCLAMATION_MARK","SOLIDUS","QUESTION_MARK","GREATER_THAN_SIGN","HYPHEN_MINUS","QUOTATION_MARK","APOSTROPHE","GRAVE_ACCENT","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","PUBLIC_STRING","SYSTEM_STRING","RIGHT_SQUARE_BRACKET","NUMBER_SIGN","matchResult","SEMICOLON","LATIN_SMALL_X","LATIN_CAPITAL_X","isAsciiHexDigit","isSurrogate","isUndefinedCodePoint","isControlCodePoint","CARRIAGE_RETURN","replacement","MODE","DATA","RCDATA","RAWTEXT","SCRIPT_DATA","attrName","AnsiX923","dataSigBytes","nPaddingBytes","lastBytePos","Ansix923","C_lib","Hasher","W","SHA1","H","_data","nBitsTotal","_nDataBytes","nBitsLeft","Math","floor","_process","clone","HmacSHA1","Cipher","Base","BufferedBlockAlgorithm","C_enc","enc","Base64","Utf8","EvpKDF","createEncryptor","key","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","reset","process","dataUpdate","_append","finalize","keySize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","encrypt","message","decrypt","ciphertext","C_mode","CBC","xorBlock","block","decryptBlock","Pkcs7","paddingWord","paddingWords","padding","concat","CipherParams","BlockCipher","modeCreator","_minBufferSize","_mode","__creator","finalProcessedBlocks","cipherParams","mixIn","toString","formatter","stringify","OpenSSLFormatter","format","OpenSSL","salt","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","OpenSSLKdf","kdf","execute","password","hasher","random","compute","derivedParams","decodeNumericCharacterReference","base","Number","parseLoop","base64Str","base64StrLength","reverseMap","nBytes","bitsCombined","charCodeAt","Base64url","wordArray","urlSafe","map","_safe_map","_map","base64Chars","triplet","paddingChar","join","_reverseMap","paddingIndex","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEndingOrSpace","unicodePunctuation","unicodeWhitespace","regex","currentAttrLocation","_getCurrentLocation","col","_attachCurrentAttrLocationInfo","methods","keys","modeName","isObjectLike","baseGetTag","REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","config","maybeKey","propName","ref","Fragment","jsx","jsxs","html","pos","lastGapPos","lastCharPos","gapStack","skipNextNewLine","lastChunkWritten","bufferWaterline","_addGap","_processSurrogate","isSurrogatePair","getSurrogatePairCodePoint","substring","_checkForProblematicCharacters","hasOwn","prototype","hasOwnProperty","toStr","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","setProperty","target","options","enumerable","configurable","newValue","writable","getProperty","src","copy","copyIsArray","arguments","deep","combineExtensions","extensions","all","syntaxExtension","extension","hook","left","right","constructs","existing","list","before","add","start","remove","parameters","chunkStart","unshift","OpenElementStack","LocationInfoParserMixin","ErrorReportingParserMixin","defaultTreeAdapter","mergeOptions","doctype","foreignContent","DEFAULT_OPTIONS","scriptingEnabled","sourceCodeLocationInfo","onParseError","HIDDEN_INPUT_TYPE","INITIAL_MODE","BEFORE_HTML_MODE","BEFORE_HEAD_MODE","IN_HEAD_MODE","IN_HEAD_NO_SCRIPT_MODE","AFTER_HEAD_MODE","IN_BODY_MODE","TEXT_MODE","IN_TABLE_MODE","IN_TABLE_TEXT_MODE","IN_CAPTION_MODE","IN_COLUMN_GROUP_MODE","IN_TABLE_BODY_MODE","IN_ROW_MODE","IN_CELL_MODE","IN_SELECT_MODE","IN_SELECT_IN_TABLE_MODE","IN_TEMPLATE_MODE","AFTER_BODY_MODE","IN_FRAMESET_MODE","AFTER_FRAMESET_MODE","AFTER_AFTER_BODY_MODE","AFTER_AFTER_FRAMESET_MODE","INSERTION_MODE_RESET_MAP","TEMPLATE_INSERTION_MODE_SWITCH_MAP","TOKEN_HANDLERS","tokenInInitialMode","ignoreToken","appendComment","getDocumentMode","isConforming","setDocumentMode","insertionMode","tokenBeforeHtml","tokenBeforeHead","startTagInBody","headElement","tokenInHead","insertCharacters","startTagInHead","endTagInHead","tokenInHeadNoScript","tokenAfterHead","framesetOk","characterInBody","whitespaceCharacterInBody","endTagInBody","eofInBody","pendingScript","originalInsertionMode","characterInTable","startTagInTable","endTagInTable","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","tokenInTableText","hasInTableScope","generateImpliedEndTags","popUntilTagNamePopped","activeFormattingElements","tokenInColumnGroup","currentTagName","clearBackToTableBodyContext","_insertFakeElement","hasTableBodyContextInTableScope","clearBackToTableRowContext","_closeTableCell","startTagInSelect","endTagInSelect","_resetInsertionMode","newInsertionMode","_popTmplInsertionMode","_pushTmplInsertionMode","eofInTemplate","tokenAfterBody","stopParsing","isRootHtmlElementCurrent","tokenAfterAfterBody","appendCommentToDocument","aaObtainFormattingElementEntry","formattingElementEntry","contains","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","popUntilElementPopped","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","counterOverflow","aaRecreateElementFromEntry","detachNode","appendChild","ns","createElement","aaInsertLastNodeInCommonAncestor","commonAncestor","_isElementCausesFosterParenting","_fosterParentElement","aaReplaceFormattingElement","_adoptNodes","insertAfter","callAdoptionAgency","stopped","beforeToken","_switchToTextParsing","tmplCount","generateImpliedEndTagsThoroughly","errCode","_reconstructActiveFormattingElements","addressStartTagInBody","hasInButtonScope","_closePElement","preStartTagInBody","bStartTagInBody","appletStartTagInBody","areaStartTagInBody","paramStartTagInBody","noembedStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","genericStartTagInBody","activeElementEntry","aStartTagInBody","numberedHeaderStartTagInBody","elementTn","closeTn","generateImpliedEndTagsWithExclusion","listItemStartTagInBody","hrStartTagInBody","rtStartTagInBody","xmpStartTagInBody","adjustTokenSVGAttrs","adjustTokenXMLAttrs","svgStartTagInBody","adoptAttributes","htmlStartTagInBody","bodyElement","tryPeekProperlyNestedBodyElement","bodyStartTagInBody","inTemplate","formElement","formStartTagInBody","nobrStartTagInBody","adjustTokenMathMLAttrs","mathStartTagInBody","menuStartTagInBody","tableStartTagInBody","inputType","inputStartTagInBody","imageStartTagInBody","buttonStartTagInBody","iframeStartTagInBody","selectStartTagInBody","popAllUpToHtmlElement","framesetStartTagInBody","textareaStartTagInBody","plaintextStartTagInBody","addressEndTagInBody","appletEndTagInBody","pEndTagInBody","hasInListItemScope","liEndTagInBody","ddEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","numberedHeaderEndTagInBody","brEndTagInBody","bodyEndTagInBody","htmlEndTagInBody","formEndTagInBody","tmplInsertionModeStackTop","curTn","tokenInTable","clearBackToTableContext","tdStartTagInTable","colStartTagInTable","formStartTagInTable","tableStartTagInTable","tbodyStartTagInTable","inputStartTagInTable","captionStartTagInTable","colgroupStartTagInTable","savedFosterParentingState","fosterParentingEnabled","_processTokenInBodyMode","hasInSelectScope","prevOpenElement","prevOpenElementTn","createDocument","parseFragment","documentMock","_initTokenizerForFragmentParsing","_findFormInFragmentContext","rootElement","getFirstChild","fragment","createDocumentFragment","tmplInsertionModeStack","currentTmplInsertionMode","_setupTokenizerCDATAMode","_processInputToken","runParsingLoopForCurrentChunk","writeCallback","script","_getAdjustedCurrentElement","_isIntegrationPoint","nextTokenizerState","switchToPlaintextParsing","getParentNode","setDocumentType","tmpl","content","setTemplateContent","createCommentNode","_fosterParentText","insertText","donor","recipient","child","_shouldProcessTokenInForeignContent","isCharacterToken","characterInForeignContent","nullCharacterInForeignContent","causesExit","currentNs","adjustTokenSVGTagName","startTagInForeignContent","endTagInForeignContent","foreignNS","isIntegrationPoint","listLength","unopenIdx","popUntilTableCellPopped","last","_resetInsertionModeForSelect","selectIdx","ancestor","openElement","insertBefore","insertTextBefore","ErrorReportingPreprocessorMixin","preprocessorMixin","stack","HMAC","PBKDF2","iterations","hmac","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","update","blockWords","blockWordsLength","intermediate","intermediateWords","NoPadding","T","sin","MD5","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotalH","nBitsTotalL","H_i","s","HmacMD5","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","messageUpdate","innerHash","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","MAYBE_ITERATOR_SYMBOL","iterator","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","emptyObject","Component","context","updater","refs","ComponentDummy","PureComponent","isReactComponent","setState","partialState","callback","Error","forceUpdate","pureComponentPrototype","isPureReactComponent","isArrayImpl","ReactSharedInternals","ReactElement","self","source","owner","isValidElement","object","userProvidedKeyEscapeRegex","getElementKey","escaperLookup","match","escape","noop$1","mapIntoArray","array","escapedPrefix","nameSoFar","oldElement","newKey","invokeCallback","_init","_payload","maybeIterable","nextNamePrefix","done","then","thenable","status","reason","fulfilledValue","error","resolveThenable","mapChildren","func","lazyInitializer","payload","_status","ctor","_result","moduleObject","default","reportGlobalError","reportError","window","ErrorEvent","event","bubbles","cancelable","dispatchEvent","emit","console","noop","Children","forEachFunc","forEachContext","apply","toArray","only","Profiler","StrictMode","Suspense","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","act","cache","fn","cloneElement","childArray","createContext","defaultValue","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","childrenLength","defaultProps","createRef","forwardRef","render","lazy","memo","compare","startTransition","scope","prevTransition","currentTransition","returnValue","onStartTransitionFinish","unstable_useCacheRefresh","useCacheRefresh","use","usable","useActionState","action","initialState","permalink","useCallback","deps","useContext","Context","useDebugValue","useDeferredValue","initialValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","passthrough","reducer","useReducer","initialArg","useRef","useState","useSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","useTransition","version","freeSelf","freeGlobal","Function","cookieNameRegExp","cookieValueRegExp","domainValueRegExp","pathValueRegExp","__toString","NullObject","startIndex","str","max","endIndex","min","decode","decodeURIComponent","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","Iso97971","crypto","globalThis","msCrypto","global","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","F","subtype","overrides","$super","instance","properties","propertyName","encoder","Hex","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","ceil","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","utf8Str","unescape","encodeURIComponent","doFlush","processedWords","nBlocksReady","nWordsReady","nBytesReady","factory","ArrayBuffer","superInit","subInit","typedArray","Uint8Array","Int8Array","Uint8ClampedArray","Int16Array","Int32Array","Float32Array","Float64Array","buffer","byteOffset","byteLength","typedArrayByteLength","resolveAll","events","called","resolve","includes","input","objectProto","nativeObjectToString","symToStringTag","toStringTag","isOwn","tag","unmasked","getRawTag","objectToString","UNDEFINED_CODE_POINTS","cp1","cp2","deselectCurrent","clipboardToIE11Formatting","text","debug","reselectPrevious","mark","success","createRange","textContent","ariaHidden","style","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","preventDefault","clipboardData","warn","clearData","setData","onCopy","body","selectNodeContents","execCommand","copyKey","navigator","userAgent","prompt","removeRange","removeChild","search","isBuffer","ErrorReportingTokenizerMixin","locBeforeToken","_setErrorLocation","heap","parentIndex","first","halfLength","leftIndex","rightIndex","diff","sortIndex","id","unstable_now","performance","now","localPerformance","localDate","Date","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","localSetTimeout","setTimeout","localClearTimeout","clearTimeout","localSetImmediate","setImmediate","advanceTimers","currentTime","timer","startTime","expirationTime","handleTimeout","requestHostCallback","firstTimer","requestHostTimeout","schedulePerformWorkUntilDeadline","isMessageLoopRunning","taskTimeoutID","frameInterval","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","priorityLevel","continuationCallback","MessageChannel","channel","port","port2","port1","onmessage","postMessage","ms","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","task","unstable_continueExecution","unstable_forceFrameRate","fps","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","eventHandler","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","timeout","unstable_shouldYield","unstable_wrapCallback","parentPriorityLevel","characterEscapeOrReference","decodeString","$0","$1","$2","head","hex","decodeNamedCharacterReference","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","pow","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","HmacSHA256","OFB","_keystream","VALID_DOCTYPE_NAME","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","enquoteDoctypeId","quote","hasPrefix","prefixes","serializeContent","N","ORIG_P","ORIG_S","BLOWFISH_CTX","pbox","sbox","ctx","BlowFish_Encrypt","temp","Xl","Xr","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","res","Blowfish","_keyPriorReset","keyWords","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","high","low","round","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","React","formatProdErrorMessage","url","Internals","D","L","findDOMNode","getCrossOriginStringAs","as","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","createPortal","container","nodeType","containerInfo","implementation","createPortal$1","flushSync","previousTransition","previousUpdatePriority","preconnect","href","crossOrigin","prefetchDNS","preinit","integrity","fetchPriority","precedence","nonce","preinitModule","preload","referrerPolicy","imageSrcSet","imageSizes","media","preloadModule","requestFormReset","form","unstable_batchedUpdates","useFormState","useFormStatus","useHostTransitionStatus","IMPORT","NAMESPACE","KEYFRAMES","LAYER","Scheduler","ReactDOM","isValidContainer","REACT_LEGACY_ELEMENT_TYPE","REACT_PROVIDER_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_OFFSCREEN_TYPE","REACT_MEMO_CACHE_SENTINEL","getIteratorFn","REACT_CLIENT_REFERENCE","getComponentNameFromType","displayName","innerType","prefix","suffix","describeBuiltInComponentFrame","reentry","describeNativeComponentFrame","construct","previousPrepareStackTrace","prepareStackTrace","RunInRootFrame","DetermineComponentFrameRoot","Fake","set","Reflect","control","x$0","x$1","catch","sample","namePropDescriptor","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","split","controlLines","frame","describeFiber","fiber","getStackByFiberInDevAndProd","workInProgress","info","getNearestMountedFiber","nearestMounted","alternate","flags","getSuspenseInstanceFromFiber","suspenseState","memoizedState","dehydrated","assertIsMounted","findCurrentHostFiberImpl","sibling","ReactDOMSharedInternals","sharedNotPendingObject","pending","method","valueStack","createCursor","cursor","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","documentElement","getOwnHostContext","parentNode","getChildHostContextProd","popHostContainer","pushHostContext","JSCompiler_inline_result","popHostContext","HostTransitionContext","scheduleCallback$3","cancelCallback$1","shouldYield","requestPaint","getCurrentPriorityLevel","ImmediatePriority","UserBlockingPriority","NormalPriority$1","LowPriority","IdlePriority","log$1","log","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","setStrictMode","clz32","LN2","nextTransitionLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","wipLanes","pendingLanes","nextLanes","suspendedLanes","pingedLanes","warmLanes","finishedLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","claimNextTransitionLane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markSpawnedDeferredLane","spawnedLane","entangledLanes","spawnedLaneIndex","entanglements","markRootEntangled","rootEntangledLanes","index$8","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","stateNode","getResourcesFromRoot","resources","hoistableStyles","Map","hoistableScripts","markNodeAsHoistable","allNativeEvents","Set","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","canUseDOM","VALID_ATTRIBUTE_NAME_REGEX","RegExp","illegalAttributeNameCache","validatedAttributeNameCache","setValueForAttribute","attributeName","removeAttribute","prefix$10","setAttribute","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","setAttributeNS","getToStringValue","isCheckable","elem","nodeName","track","_valueTracker","valueField","descriptor","currentValue","get","getValue","setValue","stopTracking","trackValueOnNode","updateValueIfChanged","tracker","lastValue","checked","getActiveElement","doc","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","updateInput","lastDefaultValue","defaultChecked","setDefaultValue","initInput","isHydrating","ownerDocument","updateOptions","multiple","propValue","setDefaultSelected","selected","defaultSelected","disabled","updateTextarea","initTextarea","setTextContent","firstChild","lastChild","nodeValue","unitlessNumbers","setValueForStyle","styleName","isCustomProperty","cssFloat","has","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","aliases","isJavaScriptProtocol","sanitizeURL","currentReplayingEvent","getEventTarget","nativeEvent","srcElement","correspondingUseElement","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","querySelectorAll","otherNode","otherProps","isInsideEventHandler","batchedUpdates$1","flushSyncWork$1","getListener","passiveBrowserEventsSupported","removeEventListener","startText","fallbackText","getData","startValue","startLength","endValue","endLength","minEnd","getEventCharCode","keyCode","charCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","isPropagationStopped","cancelBubble","persist","isPersistent","lastMovementX","lastMovementY","lastMouseEvent","EventInterface","eventPhase","timeStamp","isTrusted","SyntheticEvent","UIEventInterface","view","detail","SyntheticUIEvent","MouseEventInterface","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","getEventModifierState","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","SyntheticMouseEvent","SyntheticDragEvent","dataTransfer","SyntheticFocusEvent","SyntheticAnimationEvent","animationName","elapsedTime","pseudoElement","SyntheticClipboardEvent","SyntheticCompositionEvent","normalizeKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","SyntheticKeyboardEvent","repeat","locale","which","SyntheticPointerEvent","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","SyntheticTouchEvent","touches","targetTouches","changedTouches","SyntheticTransitionEvent","SyntheticWheelEvent","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SyntheticToggleEvent","newState","oldState","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","supportedInputTypes","color","date","datetime","email","month","number","tel","time","week","isTextInputElement","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","listeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$283","isSupported$jscomp$inline_418","element$jscomp$inline_419","oninput","stopWatchingForValueChange","detachEvent","handlePropertyChange","handleEventsForInputEventPolyfill","attachEvent","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","objectIs","is","shallowEqual","objA","objB","keysA","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","nodeEnd","nextSibling","containsNode","outerNode","innerNode","compareDocumentPosition","getActiveElementDeep","defaultView","HTMLIFrameElement","contentWindow","hasSelectionCapabilities","contentEditable","restoreSelection","priorSelectionInformation","curFocusedElem","focusedElem","priorSelectionRange","selectionRange","selectionStart","selectionEnd","endMarker","anchorNode","anchorOffset","focusNode","focusOffset","setStart","setEnd","scrollLeft","scrollTop","skipSelectionChangeEvent","activeElementInst","lastSelection","mouseDown","constructSelectEvent","makePrefixMap","styleProp","eventName","vendorPrefixes","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitioncancel","transitionend","prefixedEventNames","getVendorPrefixedEventName","prefixMap","animation","transition","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","queue","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","childLanes","_visibility","hiddenUpdates","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","CapturedStacks","WeakMap","createCapturedValueAtFiber","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","memoizedProps","listenToNonDelegatedEvent","mediaEventTypes","suppressHydrationWarning","checkForUnmatchedText","popover","onScroll","onScrollEnd","onClick","onclick","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldClear","shouldSetTextContent","getNextHydratable","resetHydrationState","SuspenseException","SuspenseyCommitException","noopSuspenseyCommitThenable","isThenableResolved","noop$3","trackUsedThenable","thenableState","workInProgressRoot","shellSuspendCounter","fulfilledThenable","rejectedThenable","suspendedThenable","getSuspendedThenable","thenableState$1","thenableIndexCounter$1","unwrapThenable","coerceRef","throwOnInvalidObjectType","returnFiber","newChild","resolveLazy","lazyType","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deletions","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","pendingProps","createWorkInProgress","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","createFiberFromText","updateElement","elementType","updateFragment","createFiberFromTypeAndProps","updatePortal","portal","createFiberFromPortal","createFiberFromFragment","createChild","readContextDuringReconciliation","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildFibersImpl","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","delete","reconcileChildrenArray","step","reconcileChildrenIterator","firstChildFiber","createFiberImplClass","reconcileChildFibers","mountChildFibers","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","baseLanes","reuseHiddenContextOnStack","popHiddenContext","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","handler","suspenseStackCursor","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","row","revealOrder","AbortControllerLocal","AbortController","signal","aborted","listener","abort","scheduleCallback$2","NormalPriority","CacheContext","createCache","controller","refCount","releaseCache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","pingEngtangledActionScope","prevOnStartTransitionFinish","entangledListeners","requestTransitionLane","entangleAsyncAction","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","pooledCache","pushTransition","offscreenWorkInProgress","prevCachePool","pool","getSuspendedCache","cacheFromPool","currentlyRenderingFiber$1","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","updateQueue","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","checkIfContextChanged","numberOfReRenders","lastEffect","stores","memoCache","HooksDispatcherOnRerender","TransitionAwareHostComponent","dispatcher","maybeThenable","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","baseState","baseQueue","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","readContext","useMemoCache","basicStateReducer","updateReducer","updateReducerImpl","lastRenderedReducer","pendingQueue","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$54","workInProgressRootRenderLanes","revertLane","hasEagerState","eagerState","workInProgressRootSkippedLanes","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","updateEffect","subscribeToStore","bind","pushEffect","updateStoreInstance","destroy","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","nextValue","scheduleUpdateOnFiber","mountStateImpl","initialStateInitializer","updateOptimisticImpl","dispatchActionState","actionQueue","setPendingState","isRenderPhaseUpdate","actionNode","isTransition","runActionStateAction","prevState","handleActionReturnValue","onActionError","error$60","onActionSuccess","notifyActionListeners","actionStateReducer","mountActionState","initialStateProp","ssrFormState","formState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","updateActionStateImpl","stateHook","currentStateHook","actionQueueHook","actionStateActionEffect","rerenderActionState","updateRef","mountEffectImpl","fiberFlags","hookFlags","updateEffectImpl","mountEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","refCleanup","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","prevValue","pendingState","finishedState","previousPriority","dispatchSetStateInternal","thenableWithOverride","chainThenableValue","requestUpdateLane","noop$2","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","updateId","updateRefresh","refreshCache","provider","root$63","enqueueUpdate","createUpdate","entangleTransitions","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","throwIfDuringRender","queueLanes","identifierPrefix","booleanOrThenable","applyDerivedStateFromProps","getDerivedStateFromProps","nextProps","classComponentUpdater","component","_reactInternals","checkShouldComponentUpdate","oldProps","newProps","nextContext","shouldComponentUpdate","callComponentWillReceiveProps","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","resolveClassComponentProps","baseProps","propName$67","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","componentStack","e$68","logCaughtError","boundary","onCaughtError","errorBoundary","e$69","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","componentDidCatch","legacyErrorBoundariesThatAlreadyFailed","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","prepareToReadContext","bailoutOnAlreadyFinishedWork","updateMemoComponent","shouldConstruct","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","nextIsDetached","_pendingVisibility","markRef","deferHiddenOffscreenComponent","cachePool","nextBaseLanes","propagateParentContextChanges","replayFunctionComponent","updateClassComponent","contextType","initializeUpdateQueue","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","processUpdateQueue","suspendIfUpdateReadFromEntangledAsyncAction","componentDidMount","unresolvedOldProps","oldContext","contextType$jscomp$0","hasForceUpdate","cloneUpdateQueue","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","mountHostRootWithoutHydrating","SUSPENDED_MARKER","treeContext","retryLane","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","didSuspend","JSCompiler_temp$jscomp$0","nextInstance","overflow","fallback","mountWorkInProgressOffscreenFiber","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","dataset","digest","dgst","renderDidSuspendDelayIfPossible","retryDehydratedSuspenseBoundary","_reactRetry","subtreeFlags","primaryChildren","offscreenProps","createFiberFromOffscreen","scheduleSuspenseWorkOnFiber","propagationRoot","scheduleContextWorkOnParentPath","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","rendering","renderingStartTime","updateSuspenseListComponent","beginWork","pushProvider","didSuspendBefore","attemptEarlyBailoutIfNoScheduledUpdate","lazyComponent","propagateContextChanges","isDehydrated","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","anyProps","hasAttribute","getAttribute","rel","title","canHydrateInstance","canHydrateTextInstance","pooledCacheLanes","valueCursor","currentlyRenderingFiber","lastContextDependency","providerFiber","popProvider","contexts","forcePropagateEntireTree","nextFiber","firstContext","dependency","isInsidePropagationBailout","currentParent","currentDependencies","memoizedValue","readContextForConsumer","consumer","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","callbacks","executionContext","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","didReadFromEntangledAsyncAction","workInProgress$jscomp$0","instance$jscomp$0","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","callCallback","commitCallbacks","commitHookEffectListMount","finishedWork","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","nearestMountedAncestor","commitClassCallbacks","safelyCallComponentWillUnmount","componentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$112","commitHostMount","autoFocus","srcSet","srcset","commitHostUpdate","domElement","lastProps","propKey","lastProp","setProp","propKey$203","propKey$219","propKey$224","propKey$229","setPropOnCustomElement","propKey$234","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","_reactRootContainer","insertOrAppendPlacementNode","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","WeakSet","nextEffect","shouldFireAfterActiveInstanceBlur","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","__reactInternalSnapshotBeforeUpdate","error$111","commitSuspenseHydrationCallbacks","prevOffscreenSubtreeIsHidden","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","onCommitFiberUnmount","prevHostParent","prevHostParentIsContainer","attributes","removeAttributeNode","prevHostParentIsContainer$119","clearSuspenseBoundary","retryIfBlockedOn","attachSuspenseRetryListeners","wakeables","retryCache","_retryCache","getRetryCache","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","getElementsByTagName","querySelector","maybeNodes","getHydratableHoistableCache","httpEquiv","charSet","mountHoistable","acquireResource","nextNode","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","_current","recursivelyTraverseDisappearLayoutEffects","display","retryQueue","parent$jscomp$0","parent$113","parent$115","finishedRoot$jscomp$0","includeWorkInProgressEffects","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","passiveEffectDuration","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","resource","suspendedState","matchMedia","matches","loading","getStyleKey","getStylesheetSelectorFromKey","_p","onUnsuspend","stylesheetPropsFromRawProps","preloadPropsMap","adoptPreloadPropsForStylesheet","linkInstance","Promise","reject","onload","onerror","stylesheets","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","FiberNode","resetWorkInProgress","fiberTag","hostContext","itemProp","onLoad","onError","async","isHostHoistableType","elements","primaryChildInstance","_pendingMarkers","_transitions","detach","attach","pendingChildren","markUpdate","preloadResourceAndSuspendIfNeeded","preloadResource","scheduleRetryEffect","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$131","bubbleProperties","completedWork","didBailout","newChildLanes","child$132","completeWork","pendingContext","queueRecoverableErrors","createElementNS","innerHTML","createTextNode","cache$144","listenToAllSupportedEvents","workInProgressRootExitStatus","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","DefaultAsyncDispatcher","getCacheForType","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootConcurrentErrors","workInProgressRootRecoverableErrors","workInProgressRootDidIncludeRecursiveRenderUpdate","Infinity","workInProgressTransitions","rootDoesHavePassiveEffects","rootWithPendingPassiveEffects","pendingPassiveEffectsLanes","pendingPassiveEffectsRemainingLanes","pendingPassiveTransitions","suspenseHandler","cancelPendingCommit","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","expiredLanes","exitStatus","prevExecutionContext","prevDispatcher","pushDispatcher","prevAsyncDispatcher","pushAsyncDispatcher","thrownValue","throwAndUnwindWorkLoop","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","resetWorkInProgressStack","workLoopConcurrent","thrownValue$166","handleThrow","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","errorRecoveryDisabledLanes","wasRootDehydrated","timeoutHandle","scheduleTimeout","commitRootWhenReady","errors","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","updatedLanes","suspendedRetryLanes","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","unsuspend","insertSuspendedStylesheets","commit","stylesheetTimer","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","expirationTimes","index$6","flushSyncWorkAcrossRoots_impl","cancelTimeout","allEntangledLanes","index$4","shouldYieldForPrerendering","unitOfWork","workLoopSync","thrownValue$164","performUnitOfWork","suspendedReason","rootRenderLanes","attachPingListener","markerInstances","cause","wrapperError","throwException","unwindUnitOfWork","skipSiblings","previousUpdateLanePriority","renderPriorityLevel","flushPassiveEffects","callbackNode","callbackPriority","remainingLanes","previouslyPendingLanes","index$7","hiddenUpdatesForLane","markRootFinished","scheduleCallback$1","eventsEnabled","_enabled","e$20","indexWithinAnchor","indexWithinFocus","selectionInformation","resolvedPrevProps","clearContainerSparingly","commitBeforeMutationEffects","releaseRootPooledCache","onCommitFiberRoot","onCommitRoot","onRecoverableError","commitRootImpl","root$170","renderPriority","onPostCommitFiberRoot","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","cb","processRootScheduleInMicrotask","scheduleMicrotask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$172","performSyncWorkOnRoot","currentPopstateTransitionEvent","shouldAttemptEagerTransition","scheduleTaskForRootDuringMicrotask","index$5","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","FormData","i$jscomp$inline_1439","eventName$jscomp$inline_1440","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","capture","passive","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","parentWindow","getParent","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","getNativeBeforeInputChars","char","getFallbackBeforeInputChars","maybeTargetInst","formAction","extractEvents$1","targetFiber","captureName","_instance2","common","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","formEncType","formMethod","formTarget","encType","__html","muted","isNaN","endsWith","hasSrc","hasSrcSet","propValue$186","parentNamespace","dangerouslySetInnerHTML","localPromise","queueMicrotask","handleErrorInNextTick","parentInstance","suspenseInstance","depth","targetInstance","previousSibling","rootContainerInstance","preconnectsSet","getRootNode","previousDispatcher","previousWasRendering","wasRendering","formInst","preconnectAs","globalDocument","preloadSelector","getScriptKey","getScriptSelectorFromKey","scripts","adoptPreloadPropsForScript","link","insertStylesheet","limitedEscapedHref","currentProps","preloadProps","styles$242","resource$243","hrefLang","rawProps","styleProps","instance$248","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","incompleteTransitions","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","transitionCallbacks","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queuedFocus","accumulateOrCreateContinuousQueuedReplayableEvent","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedExplicitHydrationTargets","existingQueuedEvent","targetContainers","attemptExplicitHydrationTarget","queuedTarget","priority","runWithPriority","attemptReplayContinuousQueuedEvent","queuedEvent","nextBlockedOn","nativeEventClone","attemptReplayContinuousQueuedEventInMap","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","$$reactFormReplay","formProps","ReactDOMRoot","internalRoot","_internalRoot","ReactDOMHydrationRoot","unmount","unstable_scheduleHydration","isomorphicReactPackageVersion$jscomp$inline_1686","componentOrElement","parentA","parentB","didFindChild","child$2","findCurrentFiberUsingSlowPath","internals$jscomp$inline_2165","bundleType","rendererPackageName","currentDispatcherRef","findFiberByHostInstance","reconcilerVersion","hook$jscomp$inline_2166","isDisabled","supportsFiber","inject","createRoot","unstable_strictMode","unstable_transitionCallbacks","hydrateRoot","C_x64","X64WordArray","X64Word_create","SHA512","H0","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","cl","dh","dl","eh","el","fh","fl","hh","hl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","toX32","HmacSHA512","classifyCharacter","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","ar","br","cr","dr","er","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","HmacRIPEMD160","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AES","_nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","_doCryptBlock","nRounds","s0","s1","s2","s3","t0","t2","t3","isImpliedEndTagRequired","isImpliedEndTagRequiredThoroughly","isScopingElement","_indexOf","_isInTemplate","_updateCurrentElement","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","CTR","counter","_counter","CTRGladman","incWord","word","b1","b2","b3","incCounter","ECB","classNames","classes","arg","appendClass","parseValue","newClass","swapEndian","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","Utf16LE","stringifyPosition","point","host","originalMethods","overriddenMethods","Ctor","__mixins","mixin","characterReference","defaults","reduce","merged","optObj","emptyOptions","one","includeImageAlt","includeHtml","Boolean","alt","values","contentStart","attempt","contentInitial","consume","enter","exit","lineStart","contentType","childFlow","childToken","lineStartOffset","continued","item","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","stream","sliceStream","defineSkip","seen","disable","null","subtokenize","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_isInFirstContentOfListItem","subcontent","_container","eventIndex","startPosition","startPositions","childEvents","gaps","adjust","breaks","_gfmTasklistFirstContentOfListItem","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","flowInitial","afterConstruct","resolver","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","_index","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startBufferIndex","endBufferIndex","sliceChunks","chunkIndex","go","_","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","kind","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","open","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","limit","POSITIVE_INFINITY","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","definition","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","defined","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","meta","contentBefore","beforeContentChunk","contentChunk","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","close","group","label","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","own","fromMarkdown","encoding","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","tree","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","settings","lang","referenceType","ordered","spread","compiler","postprocess","defaultConstructs","atCarriageReturn","endPosition","lastIndex","exec","preprocess","combined","Rabbit","MIME_TYPES","SVG_ATTRS_ADJUSTMENT_MAP","attributename","attributetype","basefrequency","baseprofile","calcmode","clippathunits","diffuseconstant","edgemode","filterunits","glyphref","gradienttransform","gradientunits","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","limitingconeangle","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","pathlength","patterncontentunits","patterntransform","patternunits","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","repeatcount","repeatdur","requiredextensions","requiredfeatures","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","surfacescale","systemlanguage","tablevalues","targetx","targety","textlength","viewbox","viewtarget","xchannelselector","ychannelselector","zoomandpan","XML_ATTRS_ADJUSTMENT_MAP","xmlns","SVG_TAG_NAMES_ADJUSTMENT_MAP","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","lineargradient","radialgradient","textpath","EXITS_FOREIGN_CONTENT","startTagToken","adjustedAttrName","adjustedAttrEntry","adjustedTagName","isHtmlIntegrationPoint","isMathMLTextIntegrationPoint","isEol","lineStartPos","droppedBufferSize","prevPos","reduction","SHA384","HmacSHA384","Iso10126","serialize","output","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","_des1","_des2","_des3","childNodes","newNode","referenceNode","templateElement","contentElement","doctypeNode","prevNode","recipientAttrsMap","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","sourceCodeLocation","endLocation","RC4","keySigBytes","_S","keyByteIndex","keyByte","_i","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","getOwnPropertyNames","o","chunkId","promises","miniCssF","prop","inProgress","dataWebpackPrefix","needAttach","charset","nc","onScriptComplete","doneFns","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","TypeError","omit","defaultPrefixCls","defaultIconPrefixCls","Variants","ConfigContext","getPrefixCls","defaultGetPrefixCls","suffixCls","customizePrefixCls","iconPrefixCls","ConfigConsumer","EMPTY_OBJECT","useComponentConfig","direction","getPopupContainer","LayoutContext","siderHook","addSider","removeSider","REACT_ELEMENT_TYPE_18","REACT_ELEMENT_TYPE_19","isFragment","_typeof","option","ret","keepEmpty","toPrimitive","getOwnPropertySymbols","propertyIsEnumerable","splitColorStr","parseNum","numList","parseFloat","parseHSVorHSL","num","limitRange","mergedMax","FastColor","matchFormat","_defineProperty","trimStr","matchPrefix","startsWith","fromHexString","fromRgbString","fromHslString","fromHsvString","_h","_s","_l","_v","fromHsl","JSON","fromHsv","setR","_sc","setG","setB","setA","setHue","hsv","toHsv","_c","getLuminance","adjustGamma","val","getHue","delta","getMax","getMin","getSaturation","getLightness","getBrightness","_brightness","darken","amount","lighten","mix","calc","rgba","tint","shade","onBackground","background","bg","alpha","isDark","isLight","equals","toHexString","rHex","gHex","bHex","aHex","toHsl","toHslString","toRgb","toRgbString","rgb","_max","_min","withoutPrefix","connectNum","index1","index2","_ref","huePrime","chroma","secondComponent","lightnessModification","_ref2","vv","ff","cells","txt","darkColorMap","light","hue","saturation","generate","patterns","pColor","theme","backgroundColor","presetPrimaryColors","red","primary","volcano","orange","gold","yellow","lime","green","cyan","blue","geekblue","purple","magenta","grey","presetPalettes","redDark","volcanoDark","orangeDark","goldDark","yellowDark","limeDark","greenDark","cyanDark","blueDark","geekblueDark","purpleDark","magentaDark","greyDark","filter","getOwnPropertyDescriptors","defineProperties","canUseDom","APPEND_ORDER","APPEND_PRIORITY","containerCache","getMark","getContainer","attachTo","findStyles","injectCSS","css","csp","prepend","_option$priority","mergedOrder","getOrder","isPrependQueue","styleNode","existStyle","nodePriority","findExistNode","find","removeCSS","existNode","updateCSS","originOption","_objectSpread","cachedRealContainer","placeholderStyle","syncRealContainer","_option$csp","_option$csp2","_option$csp3","getRoot","ele","_ele$getRootNode","getShadowRoot","ShadowRoot","inShadow","warned","preWarningFns","warning","valid","note","warningOnce","preMessage","resetWarned","noteOnce","isIconDefinition","icon","normalizeAttrs","acc","className","class","rootProps","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","_excluded","twoToneColorPalette","secondaryColor","calculated","IconBase","restProps","_objectWithoutProperties","svgRef","colors","eleRef","_useContext","IconContext","prefixCls","layer","mergedStyleStr","shadowRoot","useInsertStyles","fill","getTwoToneColors","setTwoToneColors","setTwoToneColor","_normalizeTwoToneColo2","_slicedToArray","ReactIcon","Icon","spin","rotate","tabIndex","_React$useContext","_React$useContext$pre","rootClassName","classString","iconTabIndex","svgStyle","msTransform","transform","_extends","role","getTwoToneColor","BarsOutlined","AntdIcon","BarsOutlinedSvg","LeftOutlined","LeftOutlinedSvg","RightOutlined","RightOutlinedSvg","len","condition","shouldUpdate","cacheRef","obj1","obj2","shallow","refSet","deepEqual","level","circular","newLevel","every","pathKey","Entity","instanceId","_classCallCheck","_createClass","opGet","keyPathStr","valueFn","opUpdate","ATTR_TOKEN","ATTR_MARK","CSS_IN_JS_INSTANCE","cssinjsInstanceId","styleHash","_style$parentNode","CacheEntity","StyleContext","hashPriority","defaultCache","CALC_UNIT","ThemeCache","cacheCallTimes","derivativeOption","_cache2","_cache3","updateCallTimes","derivative","_cache","_this$internalGet","internalGet","_this","MAX_CACHE_SIZE","MAX_CACHE_OFFSET","_this$keys$reduce","callTimes","targetKey","cacheValue","currentCache","derivatives","_cache$value","deleteByPath","sameDerivativeOption","uuid","Theme","cacheThemes","createTheme","derivativeArr","resultCache","RESULT_VALUE","flattenTokenCache","flattenToken","token2key","isClientSide","unit","toStyleStr","tokenKey","styleId","_objectSpread2","attrStr","attr","token2CSSVar","serializeCSSVar","cssVars","hashId","transformToken","themeKey","_ref3","_config$preserve","_config$ignore","_ref4","preserve","ignore","_config$unitless","cssVar","unitless","useInternalLayoutEffect","firstMountRef","useLayoutUpdateEffect","firstMount","renderEffect","effect","effectCleanups","cleanupFlag","useGlobalCache","keyPath","cacheFn","onCacheRemove","onCacheEffect","globalCache","fullPathStr","_toConsumableArray","register","useEffectCleanupRegister","buildCache","useHMR","prevCache","_ref2$","cacheContent","useCompatibleInsertionEffect","polyfill","times","_ref6","_ref6$","EMPTY_OVERRIDE","tokenKeys","cleanTokenStyle","tokenKeyList","cleanableKeyList","removeStyleTags","TOKEN_PREFIX","useCacheToken","tokens","_option$salt","_option$override","override","formatToken","getComputedToken","mergedToken","dep","memoResult","tokenStr","overrideTokenStr","cssVarStr","cachedToken","_cssVar$key","mergedDerivativeToken","originToken","overrideToken","getDerivativeToken","actualToken","cssVarsStr","_transformToken2","_tokenKey","_themeKey","recordCleanToken","_hashId","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","cachePathMap","ATTR_CACHE_MAP","CSS_FILE_STYLE","fromCSSFile","existPath","path","div","visibility","getComputedStyle","_item$split2","_inlineMapStyle$paren","inlineMapStyle","prepare","MULTI_VALUE","normalizeStyle","styleStr","injectSelectorHash","hashClassName","hashSelector","_firstPath$match","fullPath","firstPath","htmlElement","parseStyle","interpolation","parentSelectors","injectHash","_config$transformers","transformers","linters","effectStyle","parseKeyframes","keyframes","getName","_parsedStr","flattenStyleList","flattenList","fullList","originStyle","_keyframe","mergedStyle","trans","_trans$visit","visit","isCompoundCSSProperty","_value","appendStyle","cssKey","cssValue","formatValue","actualValue","subInjectHash","mergedKey","nextRoot","_parseStyle4","_parsedStr2","childEffectStyle","uniqueHash","Empty","STYLE_PREFIX","useStyleRegister","styleFn","clientOnly","_info$order","autoClear","mock","ssrInline","enableLayer","isMergedClientSide","_useGlobalCache","cachePath","_getStyleAndHash","_style","getStyleAndHash","_getStyleAndHash2","inlineCacheStyleStr","styleObj","_parseStyle6","parsedStyle","fromHMR","_ref5","mergedCSSConfig","nonceStr","effectLayerKeys","effectRestKeys","effectKey","_useGlobalCache2","cachedStyleStr","cachedTokenKey","cachedStyleId","CSS_VAR_PREFIX","_config$scope","stylePath","_ExtractStyleFns","effectStyles","plain","keyStyleText","sharedAttrs","effectStyleHTML","realToken","cssVarKey","Keyframe","noSplit","notSplit","ReferenceError","setPrototypeOf","__proto__","AbstractCalculator","regexp","CSSCalculator","_AbstractCalculator","_inherits","_super","_createSuper","unitlessCssVar","_assertThisInitialized","numType","getResult","lowPriority","force","_this2","cssUnit","mergedUnit","NumCalculator","Calculator","useEvent","fnRef","memoFn","_fnRef$current","_len","args","useSafeState","destroyRef","_React$useState2","ignoreDestroy","hasValue","useMergedState","defaultStateValue","onChange","postState","_useState2","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","_useState4","setPrevValue","ReactMajorVersion","fillRef","composeRef","refList","useComposeRef","_len2","_key2","supportRef","nodeOrComponent","_type$prototype","_nodeOrComponent$prot","isReactElement","getNodeRef","entity","internalSet","paths","removeIfUndefined","_paths","_toArray","restPath","createEmpty","ownKeys","merge","sources","internalMerge","parentLoopSet","loopSet","isArr","originValue","defaultToken","customToken","deprecatedTokens","_customToken$newToken","oldTokenKey","newTokenKey","enableStatistic","CSSINJS_STATISTIC","recording","objs","statistic","proxy","flush","Proxy","_tokenKeys","componentName","componentToken","_statistic$componentN","getDefaultToken","_token$component","mergeToken","uniqueMap","ArrayKeyMap","clear","compositeKey","getCompositeKey","lastAccessBeat","accessBeat","getObjectID","objectIDMap","nextID","beat","cachedValue","_config$useCSP","useCSP","useDefaultCSP","useToken","usePrefix","getResetStyles","getCommonStyle","getCompUnitless","genComponentStyleHook","concatComponent","mergedLayer","rootCls","_useToken3","_usePrefix","rootPrefixCls","useUniqueMemo","getCompVarPrefix","genCalc","_genMaxMin","genMaxMin","sharedConfig","injectStyle","_statisticToken","statisticToken","proxyToken","defaultComponentToken","getDefaultComponentToken","componentCls","getComponentToken","iconCls","antCls","styleInterpolation","commonStyle","resetFont","resetStyle","genStyleHooks","prefixToken","originUnitless","compUnitless","mergedOptions","useStyle","useCSSVar","_options$injectStyle","CSSVarRegister","_ref$cssVar","useCSSVarRegister","genCSSVarRegister","_useCSSVar2","genSubStyleComponent","_ref2$rootCls","textEllipsis","textOverflow","resetComponent","needInheritFontFamily","boxSizing","margin","colorText","fontSize","listStyle","fontFamily","genLinkStyle","colorLink","textDecoration","linkDecoration","outline","motionDurationSlow","colorLinkHover","colorLinkActive","linkHoverDecoration","linkFocusDecoration","colorTextDisabled","genFocusOutline","lineWidthFocus","colorPrimaryBorder","outlineOffset","genFocusStyle","genIconStyle","alignItems","fontStyle","textAlign","textTransform","verticalAlign","textRendering","svg","operationUnit","border","defaultPresetColors","pink","colorPrimary","colorSuccess","colorWarning","colorError","colorInfo","colorTextBase","colorBgBase","fontFamilyCode","lineWidth","lineType","motionUnit","motionBase","motionEaseOutCirc","motionEaseInOutCirc","motionEaseOut","motionEaseInOut","motionEaseOutBack","motionEaseInBack","motionEaseInQuint","motionEaseOutQuint","borderRadius","sizeUnit","sizeStep","sizePopupArrow","controlHeight","zIndexBase","zIndexPopupBase","opacityImage","wireframe","motion","defaultConfig","defaultSeedToken","hashed","DesignTokenContext","radiusBase","radiusLG","radiusSM","radiusXS","radiusOuter","borderRadiusXS","borderRadiusSM","borderRadiusLG","borderRadiusOuter","controlHeightSM","controlHeightXS","controlHeightLG","getLineHeight","fontSizePairs","fontSizes","baseSize","E","intSize","genFontSizes","pair","lineHeights","fontSizeMD","fontSizeSM","fontSizeLG","lineHeightSM","lineHeightLG","fontSizeXL","fontSizeHeading1","fontSizeHeading2","fontSizeHeading3","fontSizeHeading4","fontSizeHeading5","fontHeight","fontHeightLG","fontHeightSM","lineHeightHeading1","lineHeightHeading2","lineHeightHeading3","lineHeightHeading4","lineHeightHeading5","getAlphaColor","baseColor","getSolidColor","brightness","generateColorPalettes","generateNeutralColorPalettes","bgBaseColor","textBaseColor","colorTextSecondary","colorTextTertiary","colorTextQuaternary","colorFill","colorFillSecondary","colorFillTertiary","colorFillQuaternary","colorBgSolid","colorBgSolidHover","colorBgSolidActive","colorBgLayout","colorBgContainer","colorBgElevated","colorBgSpotlight","colorBgBlur","colorBorder","colorBorderSecondary","colorPalettes","colorKey","cur","seed","colorSuccessBase","colorWarningBase","colorErrorBase","colorInfoBase","colorPrimaryBase","primaryColors","successColors","warningColors","errorColors","infoColors","neutralColors","linkColors","colorErrorBgFilledHover","colorPrimaryBg","colorPrimaryBgHover","colorPrimaryBorderHover","colorPrimaryHover","colorPrimaryActive","colorPrimaryTextHover","colorPrimaryText","colorPrimaryTextActive","colorSuccessBg","colorSuccessBgHover","colorSuccessBorder","colorSuccessBorderHover","colorSuccessHover","colorSuccessActive","colorSuccessTextHover","colorSuccessText","colorSuccessTextActive","colorErrorBg","colorErrorBgHover","colorErrorBgActive","colorErrorBorder","colorErrorBorderHover","colorErrorHover","colorErrorActive","colorErrorTextHover","colorErrorText","colorErrorTextActive","colorWarningBg","colorWarningBgHover","colorWarningBorder","colorWarningBorderHover","colorWarningHover","colorWarningActive","colorWarningTextHover","colorWarningText","colorWarningTextActive","colorInfoBg","colorInfoBgHover","colorInfoBorder","colorInfoBorderHover","colorInfoHover","colorInfoActive","colorInfoTextHover","colorInfoText","colorInfoTextActive","colorBgMask","colorWhite","genColorMapToken","genFontMapToken","sizeXXL","sizeXL","sizeLG","sizeMD","sizeMS","sizeSM","sizeXS","sizeXXS","genSizeMapToken","genControlHeight","motionDurationFast","toFixed","motionDurationMid","lineWidthBold","genRadius","genCommonMapToken","isStableColor","frontColor","fR","fG","fB","originAlpha","bR","bG","bB","fA","__rest","derivativeToken","restToken","overrideTokens","seedToken","screenXL","screenXXL","fastDuration","colorFillContent","colorFillContentHover","colorFillAlter","colorBgContainerDisabled","colorBorderBg","colorSplit","colorTextPlaceholder","colorTextHeading","colorTextLabel","colorTextDescription","colorTextLightSolid","colorHighlight","colorBgTextHover","colorBgTextActive","colorIcon","colorIconHover","colorErrorOutline","colorWarningOutline","fontSizeIcon","controlOutlineWidth","controlInteractiveSize","controlItemBgHover","controlItemBgActive","controlItemBgActiveHover","controlItemBgActiveDisabled","controlTmpOutline","controlOutline","fontWeightStrong","opacityLoading","controlPaddingHorizontal","controlPaddingHorizontalSM","paddingXXS","paddingXS","paddingSM","paddingMD","paddingLG","paddingXL","paddingContentHorizontalLG","paddingContentVerticalLG","paddingContentHorizontal","paddingContentVertical","paddingContentHorizontalSM","paddingContentVerticalSM","marginXXS","marginXS","marginSM","marginMD","marginLG","marginXL","marginXXL","boxShadow","boxShadowSecondary","boxShadowTertiary","screenXS","screenXSMin","screenXSMax","screenSM","screenSMMin","screenSMMax","screenMD","screenMDMin","screenMDMax","screenLG","screenLGMin","screenLGMax","screenXLMin","screenXLMax","screenXXLMin","boxShadowPopoverArrow","boxShadowCard","boxShadowDrawerRight","boxShadowDrawerLeft","boxShadowDrawerUp","boxShadowDrawerDown","boxShadowTabsOverflowLeft","boxShadowTabsOverflowRight","boxShadowTabsOverflowTop","boxShadowTabsOverflowBottom","components","componentTheme","componentTokens","mergedComponentToken","rootDesignToken","mergedTheme","defaultTheme","genStyleUtils","useLocalToken","_a","genCommonStyle","componentPrefixCls","prefixSelector","rootPrefixSelector","resetFontStyle","genLayoutStyle","footerBg","headerHeight","headerPadding","headerColor","footerPadding","bodyBg","headerBg","flexDirection","minHeight","prepareComponentToken","paddingInline","colorBgHeader","colorBgBody","colorBgTrigger","siderBg","triggerHeight","triggerBg","triggerColor","zeroTriggerWidth","zeroTriggerHeight","lightSiderBg","lightTriggerBg","lightTriggerColor","DEPRECATED_TOKENS","genSiderStyle","minWidth","paddingBottom","marginTop","paddingTop","bottom","insetInlineEnd","mul","equal","justifyContent","inset","insetInlineStart","borderInlineStart","dimensionMaxMap","xs","sm","md","lg","xl","xxl","SiderContext","generateId","trigger","defaultCollapsed","collapsible","reverseArrow","collapsedWidth","zeroWidthTriggerStyle","breakpoint","onCollapse","onBreakpoint","collapsed","setCollapsed","below","setBelow","handleSetCollapsed","wrapCSSVar","cssVarCls","responsiveHandlerRef","mql","responsiveHandler","addListener","removeListener","uniqueId","toggle","divProps","rawWidth","siderWidth","isFinite","zeroWidthTrigger","reverseIcon","defaultTrigger","expanded","triggerDom","divStyle","maxWidth","siderCls","contextValue","siderCollapsed","generator","BasicComponent","Basic","TagName","others","wrapSSR","prefixWithSuffixCls","BasicLayout","siders","setSiders","hasSider","Tag","passedProps","contextClassName","contextStyle","mergedHasSider","Sider","useHasSider","currentId","Layout","Header","Footer","Content","_InternalSiderContext","EditOutlined","EditOutlinedSvg","isDOM","HTMLElement","SVGElement","_ReactDOM$findDOMNode","domNode","nativeElement","getDOM","CollectionContext","MapShim","getIndex","class_1","__entries__","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","childList","characterData","subtree","disconnect","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","clientWidth","clientHeight","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","observation","ResizeObserver","elementListeners","resizeObserver","entities","_elementListeners$get","DomWrapper","_React$Component","SingleObserver","elementRef","wrapperRef","onCollectionResize","isRenderProps","mergedChildren","sizeRef","offsetWidth","offsetHeight","canRef","originRef","mergedRef","getDom","_elementRef$current","propsRef","onInternalResize","_propsRef$current","onResize","_target$getBoundingCl","getBoundingClientRect","fixedWidth","fixedHeight","mergedOffsetWidth","mergedOffsetHeight","sizeInfo","currentElement","RefResizeObserver","Collection","onBatchResize","resizeIdRef","resizeInfosRef","isStyleNameSupport","styleNameList","isStyleSupport","styleValue","origin","isStyleValueSupport","items_per_page","jump_to","jump_to_confirm","page","prev_page","next_page","prev_5","next_5","prev_3","next_3","page_size","yearFormat","dayFormat","cellMeridiemFormat","monthBeforeYear","today","backToToday","year","timeSelect","dateSelect","weekSelect","monthSelect","yearSelect","decadeSelect","dateFormat","dateTimeFormat","previousMonth","nextMonth","previousYear","nextYear","previousDecade","nextDecade","previousCentury","nextCentury","placeholder","rangePlaceholder","yearPlaceholder","quarterPlaceholder","monthPlaceholder","weekPlaceholder","rangeYearPlaceholder","rangeQuarterPlaceholder","rangeMonthPlaceholder","rangeWeekPlaceholder","CalendarLocale","timePickerLocale","TimePickerLocale","typeTemplate","Pagination","DatePicker","TimePicker","Calendar","Table","filterTitle","filterConfirm","filterReset","filterEmptyText","filterCheckAll","filterSearchPlaceholder","emptyText","selectAll","selectInvert","selectNone","selectionAll","sortTitle","expand","collapse","triggerDesc","triggerAsc","cancelSort","Tour","Next","Previous","Finish","Modal","okText","cancelText","justOkText","Popconfirm","Transfer","titles","searchPlaceholder","itemUnit","itemsUnit","selectCurrent","removeCurrent","deselectAll","removeAll","Upload","uploading","removeFile","uploadError","previewFile","downloadFile","description","Text","edit","copied","Form","optional","defaultValidateMessages","required","enum","invalid","types","boolean","integer","float","mismatch","Image","preview","QRCode","expired","scanned","ColorPicker","presetEmpty","transparent","singleColor","gradientColor","useLocale","defaultLocale","fullLocale","LocaleContext","defaultLocaleData","localeFromContext","localeCode","exist","Popup","innerStyle","overlayInnerStyle","bodyClassName","EMPTY_LIST","measureScrollbarSize","randomId","measureEle","fallbackWidth","fallbackHeight","measureStyle","targetStyle","scrollbarColor","scrollbarWidth","webkitScrollbarStyle","widthStyle","heightStyle","scrollWidth","scrollHeight","UNIQUE_ID","useScrollLocker","lock","mergedLock","scrollbarSize","isOverflow","innerHeight","innerWidth","inline","getPortalContainer","autoLock","_props$autoDestroy","autoDestroy","shouldRender","setShouldRender","mergedRender","_React$useState4","innerContainer","setInnerContainer","customizeContainer","_useDom","appendedRef","queueCreate","OrderContext","setQueue","mergedQueueCreate","appendFn","parentElement","cleanup","_ele$parentElement","useDom","_useDom2","defaultContainer","mergedContainer","childRef","nextInline","renderInline","reffedChildren","useOriginId","reactId","innerId","setInnerId","nextId","agent","vendor","opera","MotionProvider","STATUS_NONE","STATUS_APPEAR","STATUS_ENTER","STATUS_LEAVE","STEP_NONE","STEP_PREPARE","STEP_START","STEP_ACTIVE","STEP_ACTIVATED","STEP_PREPARED","domSupport","win","getVendorPrefixes","_document$createEleme","stylePropList","internalAnimationEndName","internalTransitionEndName","supportTransition","animationEndName","transitionEndName","getTransitionName","transitionName","transitionType","raf","caf","handle","cancelAnimationFrame","rafUUID","rafIds","wrapperRaf","callRef","leftTimes","realId","cancel","FULL_STEP_QUEUE","SIMPLE_STEP_QUEUE","SkipStep","prepareOnly","setStep","_useNextFrame","nextFrameRef","cancelNextFrame","nextFrame","nextFrameId","isCanceled","useNextFrame","_useNextFrame2","STEP_QUEUE","useIsomorphicLayoutEffect","nextStep","doNext","useStatus","supportMotion","visible","getElement","_ref$motionEnter","motionEnter","_ref$motionAppear","motionAppear","_ref$motionLeave","motionLeave","motionDeadline","motionLeaveImmediately","onAppearPrepare","onEnterPrepare","onLeavePrepare","onAppearStart","onEnterStart","onLeaveStart","onAppearActive","onEnterActive","onLeaveActive","onAppearEnd","onEnterEnd","onLeaveEnd","onVisibleChanged","asyncVisible","setAsyncVisible","_useSyncState","currentValueRef","useSyncState","_useSyncState2","getStatus","setStatus","setStyle","currentStatus","mountedRef","deadlineRef","getDomElement","activeRef","updateMotionEndStatus","onInternalMotionEnd","deadline","canEnd","currentActive","_useDomMotionEvents","cacheElementRef","removeMotionEvents","useDomMotionEvents","patchMotionEvents","getEventHandlers","targetStatus","eventHandlers","_useStepQueue2","useStepQueue","newStep","onPrepare","_eventHandlers$step","startStep","visibleRef","nextStatus","nextEventHandlers","firstMountChangeRef","transitionSupport","CSSMotion","_props$visible","_props$removeOnLeave","removeOnLeave","forceRender","motionName","leavedClassName","eventProps","contextMotion","isSupportTransition","nodeRef","wrapperNodeRef","_useStatus2","statusStep","statusStyle","mergedVisible","renderedRef","motionChildren","setNodeRef","mergedProps","statusSuffix","motionCls","STATUS_ADD","STATUS_KEEP","STATUS_REMOVE","STATUS_REMOVED","wrapKeyToObject","keyObj","parseKeys","_excluded2","MOTION_PROP_NAMES","OriginCSSMotion","CSSMotionList","keyEntities","removeKey","onAllRemoved","_this$props","_onVisibleChanged","motionProps","changedVisible","parsedKeyObjects","mixedKeyEntities","prevKeys","currentKeys","currentIndex","currentLen","prevKeyObjects","currentKeyObjects","hit","currentKeyObj","matchKey","diffKeys","prevEntity","Arrow","align","arrow","arrowPos","_arrowPos$x","_arrowPos$y","arrowRef","alignStyle","autoArrow","popupPoints","targetPoints","popupTB","popupLR","targetTB","targetLR","Mask","popup","keepDom","fresh","maskMotion","Portal","onMouseEnter","onMouseLeave","onPointerEnter","onPointerDownCapture","ready","offsetX","offsetY","offsetR","offsetB","onAlign","stretch","targetWidth","targetHeight","childNode","isNodeVisible","getPopupContainerNeedParams","show","setShow","AUTO","offsetStyle","_experimental","dynamicInset","alignRight","alignBottom","miscStyle","pointerEvents","resizeObserverRef","nextVisible","_motion$onVisibleChan","motionRef","motionClassName","motionStyle","cls","PopupContent","getTriggerDOMNode","canUseRef","setRef","offsetParent","_getBBox","_element$getBoundingC","_width","_height","isPointsEq","a1","a2","getMotion","getWin","collectScroller","scrollerList","scrollStyle","_getWin$getComputedSt","overflowX","overflowY","toNum","getPxValue","getVisibleArea","initArea","visibleArea","HTMLBodyElement","HTMLHtmlElement","_getWin$getComputedSt2","overflowClipMargin","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","eleRect","eleOutHeight","eleInnerHeight","eleOutWidth","eleInnerWidth","borderTopNum","borderBottomNum","borderLeftNum","borderRightNum","scaleX","scaleY","eleScrollWidth","eleScrollHeight","scaledBorderTopWidth","scaledBorderBottomWidth","scaledBorderLeftWidth","scaledBorderRightWidth","clipMarginWidth","clipMarginHeight","clipNum","eleLeft","eleTop","eleRight","eleBottom","getUnitOffset","offsetStr","getNumberOffset","splitPoints","getAlignPoint","topBottom","leftRight","reversePoints","PortalComponent","_props$prefixCls","_props$action","showAction","hideAction","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","_props$mouseLeaveDela","mouseLeaveDelay","focusDelay","blurDelay","_props$maskClosable","maskClosable","destroyPopupOnHide","popupClassName","popupStyle","popupPlacement","_props$builtinPlaceme","builtinPlacements","popupAlign","getPopupClassNameFromAlign","alignPoint","onPopupClick","onPopupAlign","popupMotion","popupTransitionName","popupAnimation","maskTransitionName","maskAnimation","mergedAutoDestroy","mobile","setMobile","isMobile","subPopupElements","parentContext","TriggerContext","registerSubPopup","subPopupEle","popupEle","setPopupEle","externalPopupRef","setPopupRef","_React$useState6","targetEle","setTargetEle","externalForwardRef","setTargetRef","originChildProps","cloneProps","inPopupOrChild","_getShadowRoot","_getShadowRoot2","childDOM","mergePopupMotion","mergeMaskMotion","_React$useState8","internalOpen","setInternalOpen","mergedOpen","setMergedOpen","nextOpen","openRef","lastTriggerRef","internalTriggerOpen","_lastTriggerRef$curre","delayRef","clearDelay","triggerOpen","_React$useState10","inMotion","setInMotion","_React$useState12","motionPrepareResolve","setMotionPrepareResolve","_React$useState14","mousePos","setMousePos","setMousePosByEvent","_useAlign","placement","arrowX","arrowY","offsetInfo","setOffsetInfo","alignCountRef","prevFlipRef","_popupElement$parentE","_popupRect$x","_popupRect$y","_popupElement$parentE2","targetRect","popupElement","_win$getComputedStyle","popupPosition","originLeft","originTop","originRight","originBottom","originOverflow","placementInfo","placeholderElement","offsetLeft","offsetTop","_rect$x","_rect$y","popupRect","_doc$documentElement","popupHeight","popupWidth","visibleRegion","scrollRegion","htmlRegion","VISIBLE","VISIBLE_FIRST","isVisibleFirst","scrollRegionArea","visibleRegionArea","adjustCheckVisibleArea","popupMirrorRect","_scaleX","_scaleY","isVisible","targetOffset","_getNumberOffset2","popupOffsetX","popupOffsetY","_getNumberOffset4","targetOffsetX","targetOffsetY","popupPoint","targetAlignPoint","popupAlignPoint","nextAlignInfo","nextOffsetX","nextOffsetY","getIntersectionVisibleArea","area","visibleL","visibleT","visibleR","visibleB","nextPopupY","nextPopupBottom","nextPopupX","nextPopupRight","originIntersectionVisibleArea","originIntersectionRecommendArea","targetAlignPointTL","popupAlignPointTL","targetAlignPointBR","popupAlignPointBR","adjustX","adjustY","shiftX","shiftY","supportAdjust","syncNextPopupPosition","needAdjustY","sameTB","bt","tmpNextOffsetY","newVisibleArea","newVisibleRecommendArea","tb","_tmpNextOffsetY","_newVisibleArea","_newVisibleRecommendArea","needAdjustX","sameLR","rl","tmpNextOffsetX","_newVisibleArea2","_newVisibleRecommendArea2","lr","_tmpNextOffsetX","_newVisibleArea3","_newVisibleRecommendArea3","numShiftX","numShiftY","popupLeft","popupRight","popupTop","popupBottom","targetLeft","targetRight","targetTop","targetBottom","nextArrowX","nextArrowY","offsetX4Right","offsetY4Bottom","resetReady","ori","useAlign","_useAlign2","alignInfo","_useAction","mergedShowAction","mergedHideAction","showActionSet","hideActionSet","useAction","_useAction2","showActions","hideActions","clickToShow","clickToHide","triggerAlign","targetScrollList","popupScrollList","mergedList","notifyScroll","scroller","useWatch","alignedClassName","baseClassName","isAlignPoint","placements","_builtinPlacements$pl","getAlignPopupClassName","forceAlign","_React$useState16","setTargetWidth","_React$useState18","setTargetHeight","syncTargetSize","wrapperAction","preEvent","_originChildProps$eve","_originChildProps$onC","onPopupMouseEnter","onPopupMouseLeave","onPopupPointerDown","popupPointerDownRef","onPointerDown","onTriggerClose","_e$composedPath","composedPath","targetShadowRoot","useWinClick","hoverToShow","hoverToHide","onMouseMove","_originChildProps$onM","onContextMenu","_originChildProps$onC2","_len3","_key3","mergedChildrenProps","_mergedChildrenProps$","_len4","_key4","triggerNode","innerArrow","TriggerWrapper","autoAdjustOverflowTopBottom","autoAdjustOverflowLeftRight","topLeft","leftTop","topRight","rightTop","bottomRight","rightBottom","bottomLeft","leftBottom","Tooltip","overlayClassName","_props$trigger","_props$mouseEnterDela","overlayStyle","onVisibleChange","afterVisibleChange","_props$placement","_props$align","_props$destroyTooltip","destroyTooltipOnHide","defaultVisible","getTooltipContainer","overlay","arrowContent","_props$showArrow","showArrow","tooltipClassNames","tooltipStyles","mergedId","triggerRef","extraProps","Trigger","childProps","getChildren","asyncIterator","define","wrap","Generator","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","awrap","reverse","stop","rval","complete","finish","delegateYield","_next","_throw","HOOK_MARK","warningFunc","getFieldValue","getFieldsValue","getFieldError","getFieldWarning","getFieldsError","isFieldsTouched","isFieldTouched","isFieldValidating","isFieldsValidating","resetFields","setFields","setFieldValue","setFieldsValue","validateFields","submit","getInternalHooks","initEntityValue","registerField","useSubscribe","setInitialValues","destroyForm","setCallbacks","registerWatch","getFields","setValidateMessages","setPreserve","getInitialValue","newMessages","cloned","messages","Wrapper","formatRegExp","convertFieldsError","template","isEmptyValue","isNativeStringType","asyncSerialArray","arrLength","original","AsyncValidationError","_Error","_wrapNativeSuper","asyncMap","objArr","_pending","flattenArr","flattenObjArr","firstFields","objArrKeys","objArrLength","total","results","asyncParallelArray","complementError","oe","fieldValue","fullFields","fullField","deepMerge","ENUM","urlReg","getTime","getMonth","getYear","includeBoundaries","v4","v6seg","v6List","v6","v46Exact","v4exact","v6exact","ip","exact","ipv4","ipv6","getUrlRegex","ruleType","dateObject","any","Schema","defaultMessages","_messages","source_","series","validator","getValidationMethod","getType","errorFields","doIt","defaultField","addFullField","schema","errorList","suppressWarning","filledErrors","fieldsSchema","paredFieldsSchema","fieldSchema","fieldSchemaList","validate","errs","finalErrors","asyncValidator","_console$error","_console","suppressValidatorError","_errors","validators","messageIndex","AsyncValidator","replaceMessage","kv","CODE_LOGIC_ERROR","validateRule","_x","_x2","_x3","_x4","_x5","_validateRule","_asyncToGenerator","_regeneratorRuntime","_callee2","messageVariables","cloneRule","originValidator","subRuleField","subResults","fillVariableResult","_context2","ruleIndex","validateMessages","mergedMessage","subValue","validateRules","namePath","validateFirst","summaryPromise","filledRules","currentRule","originValidatorFunc","hasPromise","sort","w1","warningOnly","w2","_callee","_x6","_x7","rulePromises","_x9","_finishOnFirstFailed","finishOnFirstFailed","_x8","_finishOnAllFailed","finishOnAllFailed","_callee3","_context3","errorsList","_callee4","_context4","ruleError","getNamePath","cloneByNamePathList","namePathList","newStore","containsNamePath","partialMatch","matchNamePath","subNamePath","nameUnit","defaultGetValueFromEvent","valuePropName","move","moveIndex","toIndex","EMPTY_ERRORS","requireUpdate","Field","resetCount","isListField","cancelRegisterFunc","_this$props2","_fieldContext$prefixN","fieldContext","prefixName","_this$props3","_this$props3$rules","mounted","onMetaChange","_meta","getMeta","isEqual","metaCache","prevStore","_this$props4","_this$props4$dependen","onReset","curValue","namePathMatch","touched","dirty","validatePromise","warnings","triggerMetaEvent","reRender","validating","relatedFields","triggerName","_ref2$validateOnly","validateOnly","rootPromise","_this$props5","_this$props5$validate","validateDebounce","filteredRules","getRules","validateTrigger","ruleErrors","_ruleErrors$forEach","nextErrors","nextWarnings","_ref4$errors","isList","prevValidating","validated","_meta2","getOnlyChild","getControlled","isFunction","toChildrenArray","_this$props6","getValueFromEvent","normalize","getValueProps","mergedValidateTrigger","mergedGetValueProps","originTriggerFunc","valueProps","originTrigger","_this$props7","cancelRegister","returnChildNode","_this$getOnlyChild","FieldContext","_restProps$isListFiel","listContext","ListContext","isMergedListField","wrapperListContext","keyManager","parentPrefixName","getKey","pathName","_ref3$value","getNewValue","operations","indexSet","keysIndex","valueIndex","to","_move","listValue","__","SPLIT","cell","NameMap","kvs","_cell$match2","json","FormStore","forceRootUpdate","formHooked","subscribable","initialValues","_this$prevWithoutPres","nextStore","prevWithoutPreserves","updateStore","clearOnDestroy","getFieldEntities","isMergedPreserve","isPreserve","initValue","watchList","allValues","fieldEntities","pure","nameList","getFieldsMap","INVALIDATE_NAME_PATH","filterFunc","mergedNameList","mergedFilterFunc","mergedStrict","warningUnhooked","strict","getFieldEntitiesForNamePathList","filteredNameList","_isListField","_isList","getErrors","getWarnings","arg0","arg1","isAllFieldsTouched","shortNamePath","fieldNamePath","isNamePathListTouched","namePathListEntities","testField","records","requiredFieldEntities","_requiredFieldEntitie","skipExist","resetWithFieldInitialValue","notifyObservers","notifyWatch","fieldData","fieldPreserve","mergedPreserve","_prevStore","triggerDependenciesUpdate","updateValue","_namePath","mergedInfo","onStoreChange","childrenFields","getDependencyChildrenFields","onValuesChange","triggerOnFieldsChange","rootNamePath","dependencies2fields","dependencyNamePath","fillChildren","isFieldDirty","filedErrors","onFieldsChange","changedFields","_ref7","fieldName","arg2","provideNameList","promiseList","TMP_SPLIT","validateNamePathList","_ref8","recursive","mergedErrors","mergedWarnings","_ref9","hasError","allPromiseFinish","lastValidatePromise","resultNamePathList","_ref10","returnPromise","outOfDate","triggerNamePathList","onFinish","onFinishFailed","formRef","formStore","getForm","FormContext","triggerFormChange","triggerFormFinish","registerForm","unregisterForm","_ref$component","_ref$validateTrigger","_onFieldsChange","_onFinish","nativeElementRef","formContext","formInstance","useForm","_getInternalHooks","rest","childrenNode","mountRef","childrenRenderProps","prevFieldsRef","sourceKeys","targetKeys","sourceValue","targetValue","isSimilar","formContextValue","wrapperNode","onSubmit","_restProps$onReset","useWatchWarning","_args$","_form","isFormInstance","valueStr","valueStrRef","isValidForm","namePathRef","getWatchValue","watchValue","nextValueStr","RefForm","FieldForm","FormProvider","onFormChange","onFormFinish","formsRef","forms","newForms","List","FormItemInputContext","NoFormStyle","formItemInputContext","newFormItemInputContext","newContext","isFormItemInput","hasFeedback","feedbackIcon","VariantContext","SizeContext","SizeContextProvider","originSize","customSize","genSpaceStyle","genSpaceGapStyle","rowGap","spaceGapSmallSize","spaceGapMiddleSize","spaceGapLargeSize","columnGap","spaceToken","genSpaceCompactStyle","SpaceCompactItemContext","useCompactItemContext","compactItemContext","compactItemClassnames","compactDirection","isFirstItem","isLastItem","separator","compactSize","NoCompactStyle","CompactItem","directionConfig","mergedSize","useSize","clx","space","CONTAINER_OFFSET","CONTAINER_MAX_OFFSET","containerBaseZIndexOffset","Drawer","Popover","FloatButton","consumerBaseZIndexOffset","SelectLike","Dropdown","ImagePreview","useZIndex","componentType","customZIndex","parentZIndex","zIndexContext","isContainer","getArrowToken","unitWidth","ay","bx","by","cx","cy","dx","dy","ex","ey","fx","fy","shadowWidth","polygonOffset","arrowShadowWidth","arrowPath","arrowPolygon","genRoundedArrow","bgColor","clipPath","_multi_value_","insetInline","_skip_check_","getArrowOffsetToken","contentRadius","limitVerticalRadius","arrowOffset","arrowOffsetHorizontal","arrowOffsetVertical","isInject","getArrowStyle","colorBg","arrowDistance","arrowPlacement","PlacementAlignMap","ArrowCenterPlacementAlignMap","DisableAutoArrowList","getPlacements","arrowWidth","autoAdjustOverflow","arrowPointAtCenter","visibleFirst","halfArrowWidth","placementMap","baseOverflow","mergedOverflow","getOverflowOptions","replaceElement","WarningContext","devUseWarning","noopWarning","deprecated","initMotionCommon","duration","animationDuration","animationFillMode","initMotionCommonLeave","initMotion","inKeyframes","outKeyframes","sameLevelPrefix","animationPlayState","zoomIn","Keyframes","zoomOut","zoomBigIn","zoomBigOut","zoomUpIn","transformOrigin","zoomUpOut","zoomMotion","initZoomMotion","animationTimingFunction","PresetColors","genPresetColor","genCss","lightColor","lightBorderColor","darkColor","textColor","genTooltipStyle","tooltipMaxWidth","tooltipColor","tooltipBg","tooltipBorderRadius","zIndexPopup","edgeAlignMinWidth","centerAlignMinWidth","wordWrap","TooltipToken","inverseColors","parseColor","isInternalColor","isPresetColor","arrowStyle","arrowContentStyle","formattedOverlayInnerStyle","openClassName","afterOpenChange","mergedShowArrow","getContextPopupContainer","contextClassNames","contextStyles","tooltipRef","forcePopupAlign","setOpen","defaultOpen","noTitle","tooltipPlacements","mergedArrowPointAtCenter","pointAtCenter","memoOverlay","memoOverlayWrapper","ContextIsolator","injectFromPopover","tempOpen","childCls","rootClassNames","bodyClassNames","contextZIndex","RcTooltip","vis","onOpenChange","_InternalPanelDoNotUseOrYouWillBeFired","PurePanel","EnterOutlined","EnterOutlinedSvg","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","J","O","Q","R","V","Y","Z","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","DASH","EQUALS","COMMA","PERIOD","SLASH","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","isCharacterKey","cloneEvent","cloneNode","newEvent","setSelectionRange","resolveOnChange","triggerFocus","_props","_props2","_props3","inputEl","inputElement","addonBefore","addonAfter","readOnly","focused","allowClear","handleReset","hidden","dataAttrs","onClear","AffixWrapperComponent","affixWrapper","GroupWrapperComponent","groupWrapper","WrapperComponent","wrapper","GroupAddonComponent","groupAddon","containerRef","hasAffix","hasPrefixSuffix","clsx","variant","groupRef","clearIcon","needClear","clearIconCls","iconNode","onMouseDown","affixWrapperPrefixCls","affixWrapperCls","suffixNode","_containerRef$current","hasAddon","wrapperCls","addonCls","groupWrapperCls","mergedWrapperClassName","mergedGroupClassName","useCount","showCount","mergedConfig","showFormatter","strategy","autoComplete","onFocus","onBlur","onPressEnter","onKeyDown","onKeyUp","htmlSize","maxLength","_props$type","_onCompositionStart","onCompositionStart","onCompositionEnd","setFocused","compositionRef","keyLockRef","inputRef","holderRef","_useMergedState2","setSelection","countConfig","valueLength","isOutOfRange","_holderRef$current","_inputRef$current","_inputRef$current2","select","_inputRef$current3","triggerChange","_inputRef$current4","_inputRef$current5","cutValue","exceedFormatter","_inputRef$current6","onInternalChange","onInternalCompositionEnd","handleKeyDown","handleKeyUp","handleFocus","handleBlur","outOfRangeCls","BaseInput","hasMaxLength","dataCount","getSuffix","getInputElement","hiddenTextarea","SIZING_STYLE","computedStyleCache","calculateAutoSizeStyle","uiTextNode","useCache","minRows","maxRows","_calculateNodeStyling","getPropertyValue","paddingSize","borderSize","nodeInfo","sizingStyle","calculateNodeStyling","maxHeight","singleRowHeight","resize","autoSize","onInternalAutoSize","setMergedValue","textareaRef","textArea","_React$useMemo2","needAutoSize","resizeState","setResizeState","autoSizeStyle","setAutoSizeStyle","startResize","textareaStyles","_textareaRef$current","fixFirefoxAutoScroll","resizeRafRef","cleanRaf","mergedAutoSizeStyle","_countConfig$max","customValue","_ref$prefixCls","textareaResized","setTextareaResized","resizableTextAreaRef","getTextArea","_resizableTextAreaRef","resizableTextArea","_getTextArea","isPureTextArea","ResizableTextArea","textarea","_getTextArea2","CloseCircleFilled","CloseCircleFilledSvg","mergedAllowClear","getStatusClassNames","getMergedStatus","contextStatus","customStatus","DisabledContext","DisabledContextProvider","originDisabled","legacyBordered","configVariant","componentConfig","ctxVariant","configComponentVariant","mergedVariant","compactItemBorder","parentCls","focusElCls","borderElCls","childCombinator","hoverEffects","marginInlineEnd","compactItemBorderRadius","borderStartEndRadius","borderEndEndRadius","borderStartStartRadius","borderEndStartRadius","genCompactItemStyle","compactCls","initInputToken","inputAffixPadding","initComponentToken","paddingBlock","paddingBlockSM","paddingBlockLG","paddingInlineSM","paddingInlineLG","addonBg","activeBorderColor","hoverBorderColor","activeShadow","errorActiveShadow","warningActiveShadow","hoverBg","activeBg","inputFontSize","inputFontSizeLG","inputFontSizeSM","genHoverStyle","borderColor","genDisabledStyle","genBaseOutlinedStyle","borderWidth","borderStyle","genOutlinedStatusStyle","affixColor","genOutlinedStyle","extraStyles","genOutlinedGroupStatusStyle","addonBorderColor","addonColor","genOutlinedGroupStyle","borderInlineEnd","genBorderlessStyle","genBaseFilledStyle","inputColor","genFilledStatusStyle","genFilledStyle","genFilledGroupStatusStyle","genFilledGroupStyle","borderTop","borderBottom","genBaseUnderlinedStyle","genUnderlinedStatusStyle","genUnderlinedStyle","genInputLargeStyle","genInputSmallStyle","genBasicInputStyle","genInputGroupStyle","borderCollapse","borderSpacing","paddingInlineEnd","marginBottom","borderInlineEndWidth","marginInlineStart","genInputStyle","colorSmallPadding","sub","genAllowClearStyle","genAffixStyle","affixCls","affixClsDisabled","genGroupStyle","genSearchInputStyle","searchPrefixCls","borderInlineStartColor","insetBlockStart","insetBlockEnd","genRangeStyle","useSharedStyle","inputToken","genTextAreaStyle","textareaPrefixCls","marginInline","bordered","customizeSize","customDisabled","customVariant","contextAllowClear","contextAutoComplete","mergedDisabled","mergedStatus","innerRef","useCSSVarCls","wrapSharedCSSVar","enableVariantCls","useVariant","getAllowClear","RcTextArea","getTitleStyles","headingLevel","getTitleStyle","titleMarginBottom","getLinkStyles","kbd","textDecorationSkipInk","marginBlock","li","ul","listStyleType","ol","pre","blockquote","getEditableStyles","inputShift","MozTransition","getCopyableStyles","genTypographyStyle","titleMarginTop","wordBreak","WebkitBoxOrient","ariaLabel","onSave","onCancel","onEnd","enterIcon","inComposition","lastKeyCode","setCurrent","confirmChange","textAreaClassName","TextArea","rows","__awaiter","thisArg","_arguments","fulfilled","rejected","copyConfig","setCopied","copyLoading","setCopyLoading","copyIdRef","cleanCopyId","copyOptions","candidate","toList","useMergedConfig","propConfig","templateConfig","support","useTooltipProps","tooltip","editConfigText","setContentRef","typographyDirection","contextDirection","componentClassName","CheckOutlined","CheckOutlinedSvg","CopyOutlined","CopyOutlinedSvg","LoadingOutlined","LoadingOutlinedSvg","getNode","dom","defaultNode","needDom","isValidText","iconOnly","tooltips","btnLoading","tooltipNodes","iconNodes","copiedText","copyText","systemStr","copyTitle","MeasureText","spanRef","isExceed","span","getHeight","sliceNodes","nodeList","currLen","currentNodeList","nextLen","restLen","STATUS_MEASURE_NONE","STATUS_MEASURE_NO_NEED_ELLIPSIS","lineClipStyle","EllipsisMeasure","enableMeasure","miscDeps","onEllipsis","nodeLen","totalLen","getNodesLen","fullContent","ellipsisCutIndex","setEllipsisCutIndex","cutMidRef","measureWhiteSpaceRef","needEllipsisRef","descRowsEllipsisRef","symbolRowEllipsisRef","canEllipsis","setCanEllipsis","needEllipsis","setNeedEllipsis","ellipsisHeight","setEllipsisHeight","parentWhiteSpace","setParentWhiteSpace","_d","nextWhiteSpace","baseRowsEllipsisHeight","descRowsEllipsisHeight","symbolRowEllipsisHeight","maxRowsHeight","cutMidIndex","minIndex","maxIndex","targetMidIndex","finalContent","enableEllipsis","isEllipsis","tooltipProps","ellipsis","editable","copyable","textLocale","typographyRef","editIconRef","textProps","enableEdit","editConfig","editing","setEditing","triggerType","triggerEdit","onStart","prevEditing","usePrevious","onEditClick","onEditChange","onEditCancel","enableCopy","onCopyClick","useCopyClick","isLineClampSupport","setIsLineClampSupport","isTextOverflowSupport","setIsTextOverflowSupport","isJsEllipsis","setIsJsEllipsis","isNativeEllipsis","setIsNativeEllipsis","isNativeVisible","setIsNativeVisible","ellipsisConfig","expandable","symbol","isExpanded","setExpanded","defaultExpanded","mergedEnableEllipsis","needMeasureEllipsis","cssEllipsis","setCssEllipsis","canUseCssEllipsis","isMergedEllipsis","cssTextOverflow","cssLineClamp","ellipsisWidth","setEllipsisWidth","onJsEllipsis","jsEllipsis","textEle","currentEllipsis","childDiv","childRect","isEleEllipsis","IntersectionObserver","topAriaLabel","Editable","renderExpand","onExpandClick","onExpand","renderEdit","editTitle","renderOperations","CopyBtn","resizeRef","EllipsisTooltip","Typography","Ellipsis","underline","del","keyboard","italic","currentContent","needed","wrapperDecorations","renderEllipsis","navigate","mergedEllipsis","TITLE_ELE_LIST","OriginTypography","Link","Title","Paragraph","inputPrefixCls","compact","formItemContext","groupFormItemContext","useRemovePasswordTimeout","triggerOnMount","removePasswordTimeoutRef","removePasswordTimeout","inputHasPrefixSuffix","RcInput","propList","pickAttrs","ariaOnly","aria","genOTPStyle","flexWrap","onActiveChange","internalValue","syncSelection","inputEle","Input","onInput","onMouseUp","strToArr","inputMode","domAttrs","proxyFormContext","internalFormatter","valueCells","setValueCells","triggerValueCellsChange","nextValueCells","patchValue","nextCells","formattedValue","onInputChange","nextIndex","onInputActiveChange","inputSharedProps","singleValue","OTPInput","renderSeparator","EyeInvisibleOutlined","EyeInvisibleOutlinedSvg","EyeOutlined","EyeOutlinedSvg","defaultIconRender","actionMap","click","hover","visibilityToggle","iconRender","visibilityControlled","setVisible","customizeInputPrefixCls","suffixIcon","iconTrigger","iconProps","getIcon","inputClassName","omittedProps","SearchOutlined","SearchOutlinedSvg","genWaveStyle","TARGET_CLS","fullClone","reactRender","unmountComponentAtNode","toggleWarning","skip","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","usingClientEntryPoint","MARK","modernRender","legacyRender","modernUnmount","_modernUnmount","_container$MARK","legacyUnmount","_unmount","unstableRender","defaultReactRender","getReactRender","isValidWaveColor","validateNum","WaveEffect","registerUnmount","divRef","unmountRef","setWaveColor","setBorderRadius","setLeft","setTop","setWidth","setHeight","enabled","setEnabled","waveStyle","radius","syncPos","nodeStyle","borderTopColor","getTargetWaveColor","isStatic","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","isSmallComponent","classList","holder","showWaveEffect","unmountCallback","useWave","wave","showWave","showEffect","rafId","GroupSizeContext","sizeCls","rxTwoCNChar","isTwoCNChar","convertLegacyProps","danger","isString","isUnBorderedButtonVariant","spaceChildren","needInserted","isPrevChildPure","isCurrentChildPure","splitCNCharsBySpace","iconWrapperCls","InnerLoadingIcon","iconClassName","mergedIconCls","IconWrapper","getCollapsedWidth","getRealWidth","existIcon","mount","genButtonBorderStyle","buttonTypeCls","borderInlineEndColor","groupBorderColor","getRoundNumber","Color","_FastColor","convertHsb2Hsv","hsb","toHsb","lightness","hsbString","hsbaString","_this$toHsv","AggregationColor","cleared","metaColor","percent","RcColor","toHsbString","toHexFormat","getHex","isGradient","isBright","bgColorToken","prepareToken","onlyIconSize","buttonPaddingHorizontal","buttonPaddingVertical","buttonIconOnlyFontSize","_e","_f","contentFontSize","contentFontSizeSM","contentFontSizeLG","contentLineHeight","contentLineHeightSM","contentLineHeightLG","solidTextColor","shadowColorTokens","defaultShadow","primaryShadow","dangerShadow","dangerColor","borderColorDisabled","defaultGhostColor","ghostBg","defaultGhostBorderColor","onlyIconSizeSM","onlyIconSizeLG","linkHoverBg","textTextColor","textTextHoverColor","textTextActiveColor","textHoverBg","defaultColor","defaultBg","defaultBorderColor","defaultBorderColorDisabled","defaultHoverBg","defaultHoverColor","defaultHoverBorderColor","defaultActiveBg","defaultActiveColor","defaultActiveBorderColor","genSharedButtonStyle","gap","backgroundImage","touchAction","letterSpacing","genHoverActiveButtonStyle","btnCls","hoverStyle","activeStyle","genCircleButtonStyle","paddingInlineStart","genRoundButtonStyle","genGhostButtonStyle","textColorDisabled","genSolidDisabledButtonStyle","genPureDisabledButtonStyle","genVariantButtonStyle","genDisabledButtonStyle","genSolidButtonStyle","genOutlinedDashedButtonStyle","genDashedButtonStyle","genFilledButtonStyle","genTextLinkButtonStyle","genDefaultButtonStyle","genPrimaryButtonStyle","genDangerousStyle","genColorButtonStyle","hoverColor","lightHoverColor","activeColor","genPresetColorStyle","genCompatibleButtonStyle","genButtonStyle","genSizeBaseButtonStyle","baseToken","genSizeSmallButtonStyle","smallToken","genSizeLargeButtonStyle","largeToken","genBlockButtonStyle","buttonToken","compactItemVerticalBorder","genCompactItemVerticalStyle","genButtonCompactStyle","insetOffset","getCompactBorderStyle","vertical","selector","ButtonTypeMap","dashed","Button","shape","iconPosition","ghost","htmlType","customClassNames","customStyle","autoInsertSpace","mergedType","mergedColor","colorVariantPair","mergedColorText","contextAutoInsertSpace","mergedInsertSpace","groupSize","loadingOrDelay","getLoadingConfig","innerLoading","setLoading","hasTwoCNChar","setHasTwoCNChar","buttonRef","isMountRef","delayTimer","buttonText","handleClick","sizeClassNameMap","large","small","middle","sizeFullName","ctxSize","iconType","linkButtonRestProps","fullStyle","iconClasses","iconStyle","DefaultLoadingIcon","kids","buttonNode","Compact","Wave","Group","__ANT_BUTTON","enterButton","onSearch","customOnSearch","customOnChange","composedRef","searchIcon","btnClassName","enterButtonAsElement","isAntdButton","InternalInput","Search","Password","OTP","api","converter","defaultAttributes","expires","toUTCString","stringifiedAttributes","cookie","cookies","jar","parts","found","read","withAttributes","withConverter","freeze","AppConfigContext","runtimeLocale","localeList","generateLocale","getConfirmLocale","_ANT_MARK__","clearLocale","newLocale","cloneLocale","changeConfirmLocale","getMemoizedContextValue","dynamicStyleMark","registerTheme","globalPrefixCls","variables","formatColor","fillColor","colorVal","primaryActiveColor","successColor","warningColor","errorColor","infoColor","getStyle","componentDisabled","componentSize","useEmptyId","MotionWrapper","needWrapMotionProviderRef","useResetIconStyle","PASSED_PROPS","globalIconPrefixCls","globalTheme","globalHolderRender","getGlobalPrefixCls","getGlobalIconPrefixCls","globalConfig","getIconPrefixCls","getRootPrefixCls","getTheme","holderRender","ProviderChildren","customCsp","autoInsertSpaceInButton","alert","anchor","splitter","virtual","dropdownMatchSelectWidth","popupMatchSelectWidth","popupOverflow","legacyLocale","customIconPrefixCls","segmented","calendar","carousel","cascader","typography","checkbox","descriptions","divider","drawer","skeleton","steps","layout","mentions","modal","progress","slider","breadcrumb","menu","pagination","empty","badge","radio","rate","switch","SWITCH","transfer","avatar","table","card","timeline","timePicker","upload","notification","colorPicker","datePicker","rangePicker","dropdown","warningConfig","tour","popconfirm","floatButtonGroup","inputNumber","treeSelect","mergedPrefixCls","parentTheme","themeConfig","parentThemeConfig","inherit","useThemeKey","mergedComponents","mergedCssVar","prevTheme","nextTheme","useTheme","baseConfig","memoedConfig","prevConfig","currentConfig","CssInJsStyleContext","memoIconContextValue","PropWarning","ValidateMessagesContext","LocaleProvider","memoTheme","themeObj","parsedComponents","parsedToken","ConfigProvider","antLocale","isLegacyTheme","useConfig","CheckCircleFilled","CheckCircleFilledSvg","ExclamationCircleFilled","ExclamationCircleFilledSvg","InfoCircleFilled","InfoCircleFilledSvg","_props$duration","showProgress","_props$pauseOnHover","pauseOnHover","eventKey","closable","_props$closeIcon","closeIcon","onNoticeClose","forcedHovering","hovering","setHovering","setPercent","spentTime","setSpentTime","mergedHovering","mergedShowProgress","onInternalClose","animationFrame","calculate","timestamp","closableObj","ariaProps","validPercent","noticePrefixCls","_divProps$onMouseEnte","_divProps$onMouseLeav","NotificationContext","_config$offset","_config$threshold","_config$gap","threshold","configList","onAllNoticeRemoved","stackConfig","ctxCls","dictRef","latestNotice","setLatestNotice","hoverKeys","setHoverKeys","_useStack2","useStack","_useStack2$","placementMotion","dataKey","_keys","_keys2","motionIndex","strKey","configClassName","configStyle","configClassNames","configStyles","restConfig","dataIndex","findIndex","stackStyle","transformX","_dictRef$current$strK","_dictRef$current$strK2","_dictRef$current$strK3","verticalOffset","_dictRef$current$keys","transformY","Notice","notice","maxCount","renderNotifications","setConfigList","_config$onClose","onClose","_list$index","innerConfig","setPlacements","nextPlacements","_config$placement","originPlacements","emptyRef","placementList","placementConfigList","NoticeList","defaultGetContainer","uniqueKey","useNotification","rootConfig","_rootConfig$getContai","shareConfig","setContainer","notificationsRef","contextHolder","Notifications","setTaskQueue","objList","mergeConfig","oriTaskQueue","tgtTaskQueue","oriQueue","genMessageStyle","contentPadding","contentBg","noticeCls","messageMoveIn","messageMoveOut","noticeStyle","combinedToken","TypeIcon","PureContent","staticPrefixCls","CloseOutlined","CloseOutlinedSvg","wrapPromiseFn","openFn","closeFn","closePromise","filled","DEFAULT_DURATION","NotificationProvider","Holder","staticGetContainer","rtl","mergedCloseIcon","useRcNotification","getClassName","getNotificationMotion","useInternalMessage","messageConfig","fakeResult","originOpen","typeOpen","jointContent","mergedDuration","mergedOnClose","defaultGlobalConfig","getGlobalContext","GlobalHolder","sync","appConfig","GlobalHolderWrapper","setMessageConfig","rootIconPrefixCls","flushNotice","holderFragment","newMessage","skipped","setCloseFn","_message$instance","staticMethods","useMessage","isThenable","thing","buttonProps","emitEvent","isSilent","quitOnNullishReturnValue","actionFn","clickedRef","timeoutId","preventScroll","returnValueOfOnOk","handlePromiseOnOk","ModalContext","ModalContextProvider","ConfirmCancelBtn","autoFocusButton","cancelButtonProps","cancelTextLocale","mergedOkCancel","onConfirm","ActionButton","ConfirmOkBtn","okButtonProps","okTextLocale","okType","onOk","RefContext","getMotionName","getScroll","w","sentinelStyle","entityStyle","ariaId","footer","bodyStyle","bodyProps","modalRender","modalClassNames","modalStyles","panelRef","panel","sentinelStartRef","sentinelEndRef","_sentinelStartRef$cur","changeActive","contentStyle","footerNode","headerNode","header","closeBtnIsDisabled","closerNode","MemoChildren","destroyOnClose","mousePosition","dialogRef","setTransformOrigin","elementOffset","Panel","maskProps","_props$keyboard","_props$focusTriggerAf","focusTriggerAfterClose","wrapStyle","wrapClassName","wrapProps","afterClose","_props$closable","_props$mask","maskStyle","lastOutSideActiveElementRef","contentRef","animatedVisible","setAnimatedVisible","contentClickRef","contentTimeoutRef","onWrapperClick","newVisible","_contentRef$current","focusDialogContent","DialogWrap","_props$destroyOnClose","_afterClose","refContext","Dialog","pickClosable","useClosableConfig","closableCollection","closableConfig","assignWithoutUndefined","EmptyFallbackCloseCollection","shapeCls","sizeStyle","skeletonClsLoading","backgroundPosition","genSkeletonElementCommonSize","genSkeletonElementAvatarSize","genSkeletonColor","skeletonLoadingBackground","backgroundSize","skeletonLoadingMotionDuration","genSkeletonElementInputSize","genSkeletonElementAvatar","skeletonAvatarCls","gradientFromColor","genSkeletonElementInput","skeletonInputCls","genSkeletonElementImageSize","genSkeletonElementImage","skeletonImageCls","imageSizeBase","genSkeletonElementButtonShape","buttonCls","skeletonButtonCls","genSkeletonElementButtonSize","genSkeletonElementButton","genBaseStyle","skeletonTitleCls","skeletonParagraphCls","titleHeight","blockRadius","paragraphLiHeight","paragraphMarginTop","marginBlockStart","skeletonToken","gradientToColor","colorGradientEnd","viewBox","getWidth","rowList","getComponentProps","Skeleton","hasAvatar","hasTitle","hasParagraph","avatarNode","contentNode","avatarProps","getAvatarBasicProps","$title","paragraphNode","titleProps","getTitleBasicProps","paragraphProps","basicProps","getParagraphBasicProps","Avatar","SkeletonAvatar","SkeletonInput","SkeletonImage","Node","SkeletonNode","voidFunc","WatermarkContext","NormalCancelBtn","NormalOkBtn","confirmLoading","renderCloseIcon","btnCtxValue","btnCtxValueMemo","OkBtn","CancelBtn","genGridColStyle","genGridStyle","genLoopGridColumnsStyle","gridColumns","gridColumnsStyle","useRowStyle","flexFlow","prepareRowComponentToken","getMediaSize","useColStyle","gridToken","gridMediaSizesMap","genGridMediaStyle","screenSize","prepareColComponentToken","fadeIn","fadeOut","initFadeMotion","sameLevel","box","genModalMaskStyle","WebkitOverflowScrolling","genModalStyle","titleColor","titleFontSize","titleLineHeight","backgroundClip","modalHeaderHeight","modalCloseBtnSize","modalCloseIconColor","modalCloseIconHoverColor","headerMarginBottom","headerBorderBottom","bodyPadding","footerMarginTop","footerBorderTop","footerBorderRadius","genRTLStyle","genResponsiveWidthStyle","responsiveStyles","headerPaddingVertical","headerFontSize","headerLineHeight","modalFooterBorderColorSplit","modalFooterBorderStyle","modalFooterBorderWidth","modalConfirmIconSize","modalTitleHeight","confirmBodyPadding","confirmIconMarginInlineEnd","confirmBtnsMarginTop","modalToken","getClickPosition","modalContext","handleCancel","centered","wrapClassNameExtended","dialogFooter","mergedClosable","propCloseCollection","contextCloseCollection","fallbackCloseCollection","propCloseConfig","contextCloseConfig","mergedFallbackCloseCollection","mergedClosableConfig","closeIconRender","useClosable","panelSelector","watermark","panelEleRef","innerContentEle","usePanelRef","numWidth","responsiveWidth","responsiveWidthVars","vars","breakpointWidth","genModalConfirmStyle","confirmComponentCls","ConfirmContent","confirmPrefixCls","okCancel","staticLocale","resetProps","mergedIcon","mergedLocale","footerOriginNode","bodyCls","Confirm","ConfirmDialog","mergedZIndex","triggerCancel","defaultRootPrefixCls","ConfirmDialogWrapper","mergedGetContainer","confirm","reactUnmount","_a2","param","destroyFns","configUpdate","withWarn","withInfo","withSuccess","withError","withConfirm","withPureRenderTheme","genPurePanel","alignPropName","postProps","getDropdownCls","setPopupHeight","setPopupWidth","interval","setInterval","dropdownCls","clearInterval","additionalProps","HookModal","hookAfterClose","setInnerConfig","newConfig","originConfig","contextLocale","ElementsHolder","patchElement","setElements","originElements","usePatchElement","setActionQueue","getConfirmFunc","withFunc","modalRef","resolvePromise","closeFunc","silent","confirmed","destroyAction","updateAction","modalWarn","OriginModal","useModal","destroyAll","isPresetSize","isValidGapNumber","SpaceContext","latestIndex","SpaceContextProvider","Space","contextSize","horizontalSize","verticalSize","isPresetVerticalSize","isPresetHorizontalSize","isValidVerticalSize","isValidHorizontalSize","mergedAlign","itemClassName","Item","spaceContext","gapStyle","flexWrapValues","justifyContentValues","alignItemsValues","genClsWrap","genClsAlign","alignCls","genClsJustify","justifyCls","justify","genFlexStyle","genFlexGapStyle","flexGapSM","flexGap","flexGapLG","genFlexWrapStyle","genAlignItemsStyle","genJustifyContentStyle","justifyStyle","flexToken","othersProps","ctxFlex","ctxDirection","mergedVertical","mergedCls","createFlexClassNames","AppstoreAddOutlined","AppstoreAddOutlinedSvg","ExportOutlined","ExportOutlinedSvg","UserAddOutlined","UserAddOutlinedSvg","SettingOutlined","SettingOutlinedSvg","LogoutOutlined","LogoutOutlinedSvg","PopStateEventType","createBrowserHistory","getUrlBasedHistory","window2","globalHistory","pathname","createLocation","usr","createPath","invariant","cond","getHistoryState","parsePath","parsedPath","hashIndex","searchIndex","getLocation","createHref2","validateLocation","v5Compat","history","handlePop","createURL","href2","URL","replaceState","listen","createHref","encodeLocation","historyState","pushState","DOMException","matchRoutes","routes","locationArg","matchRoutesImpl","basename","allowPartial","stripBasename","branches","flattenRoutes","score","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","route","relativePath","joinPaths","computeScore","exploded","explodeOptionalSegments","segments","isOptional","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","params","pathnameBase","normalizePathname","matcher","compiledParams","regexpSource","paramName","compilePath","captureGroups","memo2","splatValue","nextChar","getInvalidPathError","dest","getPathContributingMatches","getResolveToMatches","pathMatches","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","isRouteErrorResponse","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","ViewTransitionContext","isTransitioning","FetchersContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","React2","useLocation","navigateEffectWarning","static","useNavigate","router","useDataRouterContext","useCurrentRouteId","fromRouteId","useNavigateStable","dataRouterContext","navigator2","routePathnamesJson","relative","useNavigateUnstable","useResolvedPath","useRoutesImpl","dataRouterState","future","parentMatches","routeMatch","parentParams","parentPathname","parentPathnameBase","parentRoute","locationFromContext","parsedLocationArg","parentSegments","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","useRouteError","lightgrey","preStyles","codeStyles","devInfo","defaultErrorElement","RenderErrorBoundary","revalidation","routeContext","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","initialized","errorIndex","renderFallback","fallbackIndex","HydrateFallback","hydrateFallbackElement","loaderData","errors2","needsToRunLoader","loader","reduceRight","shouldRenderHydrateFallback","matches2","getDataRouterConsoleError","hookName","useDataRouterState","useRouteContext","thisRoute","routeId","alreadyWarned","React3","_ref12","Route","Router","_ref15","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref16","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","defaultMethod","defaultEncType","isHtmlElement","createSearchParams","URLSearchParams","_formDataSupportsSubmitter","supportedFormEncTypes","getFormEncType","getFormSubmissionInfo","isButtonElement","isInputElement","isFormDataSubmitterSupported","invariant2","loadRouteModule","routeModulesCache","routeModule","import","__reactRouterContext","isSpaMode","reload","isPageLinkDescriptor","isHtmlLinkDescriptor","getNewMatchesForLinks","nextMatches","currentMatches","manifest","isNew","matchPathChanged","manifestRoute","hasLoader","routeChoice","currentUrl","currentParams","nextUrl","nextParams","defaultShouldRevalidate","getModuleLinkHrefs","includeHydrateFallback","hrefs","clientActionModule","clientLoaderModule","hydrateFallbackModule","imports","flat","dedupeLinkDescriptors","descriptors","preloads","preloadsSet","deduped","sorted","sortKeys","createHtml","singleFetchUrl","reqUrl","React5","RemixRootDefaultErrorBoundary","_ref21","isOutsideRemixApp","errorInstance","heyDeveloper","BoundaryShell","errorString","_ref22","renderScripts","routeModules","useFrameworkContext","Scripts","isFogOfWarEnabled","ssr","useDataRouterContext2","React9","useDataRouterStateContext","FrameworkContext","composeEventHandlers","theirHandler","ourHandler","getActiveMatches","isHydrated","errorIdx","PrefetchPageLinks","_ref29","dataLinkProps","PrefetchPageLinksImpl","useKeyedPrefetchLinks","keyedPrefetchLinks","setKeyedPrefetchLinks","interrupted","mod","links","getKeyedPrefetchLinks","_ref30","linkProps","newMatchesForData","newMatchesForAssets","dataHrefs","routesParams","foundOptOutRoute","m2","hasClientLoader","searchParams","moduleHrefs","_ref31","serverHandoffString","renderMeta","routerMatches","enableFogOfWar","didRenderScripts","initialScripts","contextScript","routeModulesScript","hmr","routeIndex","routeVarName","manifestEntry","varName","routeIds","initialRoutes","getPartialManifest","mergeRefs","__reactRouterVersion","BrowserRouter","_ref32","historyRef","React10","setStateImpl","ABSOLUTE_URL_REGEX2","_ref35","forwardedRef","absoluteHref","discover","prefetch","reloadDocument","replace2","preventScrollReset","viewTransition","isAbsolute","isExternal","targetUrl","protocol","joinedPathname","useHref","shouldPrefetch","prefetchRef","prefetchHandlers","theirElementProps","frameworkContext","maybePrefetch","setMaybePrefetch","setShouldPrefetch","onTouchStart","isIntersecting","setIntent","cancelIntent","usePrefetchBehavior","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","_ref36","ariaCurrentProp","classNameProp","routerState","vtContext","useDataRouterContext3","currentPath","currentLocation","nextPath","nextLocation","useViewTransitionState","nextLocationPathname","navigation","endSlashPosition","isPending","renderProps","ariaCurrent","_ref37","fetcherKey","useSubmit","indexValues","getAll","qs","useFormAction","submitMethod","getDataRouterConsoleError2","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","locationSearch","defaultSearchParams","getSearchParamsForLocation","setSearchParams","nextInit","navigateOptions","newSearchParams","fetcherId","getUniqueFetcherId","currentRouteId","fetch","TextEncoder","UserMain","messageApi","keywords","setKeywords","groupList","setGroupList","newGroupData","setNewGroupData","isNewGroupModalOpen","setIsNewGroupModalOpen","newUserData","setNewUserData","isNewUserModalOpen","setIsNewUserModalOpen","settingData","setSettingData","isSettingModalOpen","setIsSettingModalOpen","fetchGroup","response","msg","logout","Cookies","_jsxs","_Fragment","_jsx","newGroup","headers","groupname","newUser","ipassword","username","setting","inew","new","old","Flex","getRenderPropValue","popoverColor","titleMinWidth","innerPadding","popoverBg","titleBorderBottom","innerContentPadding","titlePadding","genColorStyle","popoverToken","titlePaddingBlockDist","popoverTitlePaddingBlockTop","popoverTitlePaddingBlockBottom","popoverPaddingHorizontal","Overlay","RawPurePanel","titleNode","popoverClassNames","settingOpen","showCancel","descriptionNode","PopoverPurePanel","popconfirmClassNames","onInternalOpenChange","InternalPanel","panelClassName","hasSize","flexBasis","getCollapsible","mergedCollapsible","getPtg","isPtg","itemSize","DownOutlined","DownOutlinedSvg","UpOutlined","UpOutlinedSvg","getValidNumber","ariaNow","ariaMin","ariaMax","resizable","startCollapsible","endCollapsible","onOffsetStart","onOffsetUpdate","onOffsetEnd","containerSize","splitBarPrefixCls","startPos","setStartPos","constrainedOffset","setConstrainedOffset","constrainedOffsetX","constrainedOffsetY","handleLazyMove","constrainedOffsetValue","rawOffset","currentPos","newPos","minAllowed","maxAllowed","getConstrainedOffset","handleLazyEnd","handleTouchMove","touch","handleTouchEnd","transformStyle","StartIcon","EndIcon","genRtlStyle","centerStyle","genSplitterStyle","splitBarDraggableSize","splitBarSize","splitTriggerSize","splitBarCls","splitMaskCls","splitPanelCls","halfTriggerSize","splitterBarPreviewOffsetVar","splitterBarPreviewStyle","resizeSpinnerSize","Splitter","onResizeStart","onResizeEnd","isVertical","isRTL","useItems","setContainerSize","panelSizes","itemPxSizes","itemPtgSizes","itemPtgMinSizes","itemPtgMaxSizes","updateSizes","propSizes","itemsCount","mergedContainerSize","ptg2px","ptg","innerSizes","setInnerSizes","defaultSize","sizes","mergedSizes","postPercentSizes","ptgList","emptyCount","totalPtg","scale","avgRest","postPxSizes","postPercentMinSizes","postPercentMaxSizes","useSizes","resizableInfos","pxSizes","resizeInfos","prevItem","nextItem","prevSize","nextSize","prevResizable","prevMin","prevCollapsible","nextResizable","nextMin","nextCollapsible","mergedResizable","useResizable","movingIndex","percentSizes","limitSizes","getLimitSize","defaultLimit","cacheSizes","setCacheSizes","cacheCollapsedSize","setMovingIndex","getPxSizes","confirmedIndex","mergedIndex","numSizes","startMinSize","endMinSize","startMaxSize","endMaxSize","mergedOffset","currentSizes","adjustedType","targetIndex","currentSize","targetSize","totalSize","currentSizeMin","currentSizeMax","targetSizeMin","targetSizeMax","limitStart","halfOffset","targetCacheCollapsedSize","currentCacheCollapsedSize","useResize","onInternalResizeStart","onInternalResizeUpdate","nextSizes","onInternalResizeEnd","onInternalCollapse","containerClassName","maskCls","stackSizes","splitBar","resizableInfo","ariaMinStart","ariaMinEnd","ariaMaxStart","ariaMaxEnd","SplitBar","responsiveArray","useResponsiveObserver","responsiveMap","getResponsiveMap","indexableToken","revBreakpoints","breakpointUpper","screenMin","screen","screenMax","nextScreenMin","validateBreakpoints","subscribers","subUid","screens","matchHandlers","pointMap","unsubscribe","paramToken","unregister","matchMediaQuery","themeStyle","fillRule","rx","ry","Simple","shadowColor","contentColor","stroke","genSharedEmptyStyle","emptyImgHeight","img","emptyImgHeightMD","emptyImgHeightSM","emptyToken","emptyImgCls","defaultEmptyImg","DefaultEmptyImg","simpleEmptyImg","SimpleEmptyImg","imageStyle","emptyClassNames","des","imageNode","PRESENTED_IMAGE_DEFAULT","PRESENTED_IMAGE_SIMPLE","useMergedPropByScreen","oriProp","calcMergedAlignOrJustify","curVal","gutter","setScreens","curScreens","setCurScreens","mergedJustify","gutterRef","responsiveObserver","currentGutter","gutters","getGutter","rowStyle","horizontalGutter","marginLeft","marginRight","gutterH","gutterV","rowContext","RowContext","refreshOnChange","screensRef","useForceUpdate","supportScreens","DoubleLeftOutlined","DoubleLeftOutlinedSvg","DoubleRightOutlined","DoubleRightOutlinedSvg","defaultPageSizeOptions","_props$pageSizeOption","pageSizeOptions","changeSize","pageSize","goButton","quickGo","buildOptionText","showSizeChanger","sizeChangerRender","goInputText","setGoInputText","getValidValue","mergeBuildOptionText","KEYCODE","changeSelect","goInput","gotoButton","onSizeChange","opt","showTitle","onKeyPress","itemRender","pager","defaultItemRender","isInteger","calculatePage","_pageSize","_props$selectPrefixCl","selectPrefixCls","currentProp","_props$defaultCurrent","defaultCurrent","_props$total","pageSizeProp","_props$defaultPageSiz","defaultPageSize","_props$onChange","hideOnSinglePage","_props$showPrevNextJu","showPrevNextJumpers","showQuickJumper","showLessItems","_props$showTitle","_props$onShowSizeChan","onShowSizeChange","_props$locale","zhCN","_props$totalBoundaryS","totalBoundaryShowSizeChanger","simple","showTotal","_props$showSizeChange","_props$itemRender","jumpPrevIcon","jumpNextIcon","prevIcon","nextIcon","paginationRef","setPageSize","_useMergedState4","internalInputVal","setInternalInputVal","jumpPrevPage","jumpNextPage","getItemIcon","inputValue","allPages","shouldDisplayQuickJumper","handleChange","isValid","currentPage","newPage","hasPrev","hasNext","prevHandle","nextHandle","jumpPrevHandle","jumpNextHandle","runIfEnter","restParams","handleGoTO","jumpPrev","dataOrAriaAttributeProps","totalText","jumpNext","pagerList","pagerProps","prevPage","nextPage","isReadOnly","simplePager","pageBufferSize","Pager","prevItemTitle","nextItemTitle","jumpPrevContent","jumpNextContent","lastOne","prevButton","renderPrev","prevDisabled","nextDisabled","nextTabIndex","nextButton","renderNext","Options","newCurrent","nextCurrent","customizeIcon","customizeIconProps","_onMouseDown","WebkitUserSelect","unselectable","BaseSelectContext","useLock","lockRef","timeoutRef","locked","UNDEFINED","InternalItem","invalidate","renderItem","responsive","responsiveDisabled","registerSize","itemKey","_props$component","mergedHidden","internalRegisterSize","overflowStyle","overflowProps","itemNode","useBatcher","updateFuncRef","channelUpdate","useEffectState","notifyEffectUpdate","stateValue","setStateValue","OverflowContext","_excluded3","InternalRawItem","_restProps","restContext","RawItem","RESPONSIVE","INVALIDATE","defaultRenderRest","omittedItems","Overflow","_props$data","renderRawItem","_props$itemWidth","itemWidth","renderRest","renderRawRest","itemComponent","fullySSR","_useEffectState2","containerWidth","setContainerWidth","mergedContainerWidth","_useEffectState4","itemWidths","setItemWidths","_useEffectState6","prevRestWidth","setPrevRestWidth","_useEffectState8","restWidth","setRestWidth","_useEffectState10","suffixWidth","setSuffixWidth","suffixFixedStart","setSuffixFixedStart","displayCount","setDisplayCount","mergedDisplayCount","MAX_SAFE_INTEGER","_useState6","restReady","setRestReady","itemPrefixCls","mergedRestWidth","isResponsive","shouldResponsive","showRest","mergedData","mergedRenderItem","updateDisplayCount","suffixFixedStartVal","notReady","getItemWidth","totalWidth","currentItemWidth","displayRest","suffixStyle","itemSharedProps","internalRenderItemNode","restContextProps","mergedRenderRest","restNode","overflowNode","ForwardOverflow","_inputNode2","activeDescendantId","_onKeyDown","_onChange","onPaste","_onCompositionEnd","_onBlur","inputNode","_inputNode","originProps","onOriginKeyDown","onOriginChange","onOriginMouseDown","onOriginCompositionStart","onOriginCompositionEnd","onOriginBlur","isBrowserClient","isTitleType","getTitle","_value$key","onPreventMouseDown","searchValue","autoClearSearchValue","showSearch","removeIcon","maxTagCount","maxTagTextLength","_props$maxTagPlacehol","maxTagPlaceholder","omittedValues","tagRender","onToggleOpen","onRemove","onInputPaste","onInputKeyDown","onInputMouseDown","onInputCompositionStart","onInputCompositionEnd","onInputBlur","measureRef","inputWidth","setInputWidth","selectionPrefixCls","inputEditable","defaultRenderSelector","itemDisabled","TransBtn","customizeRenderSelector","isMaxTag","selectionNode","valueItem","displayLabel","strLabel","activeValue","inputChanged","setInputChanged","combobox","hasTextInput","selectionTitle","placeholderNode","Selector","compositionStatusRef","tokenWithEnter","onSearchSubmit","domRef","_useLock2","getInputMouseDown","setInputMouseDown","pastedTextRef","triggerOnSearch","sharedProps","currentKeyCode","isTextAreaElement","HTMLTextAreaElement","replacedText","selectNode","MultipleSelector","SingleSelector","msTouchAction","inputMouseDown","SelectTrigger","dropdownStyle","dropdownClassName","_props$direction","dropdownRender","dropdownAlign","dropdownPrefixCls","popupNode","mergedBuiltinPlacements","getBuiltInPlacements","mergedTransitionName","isNumberPopupWidth","triggerPopupRef","getPopupElement","_triggerPopupRef$curr","isValidCount","fillFieldNames","fieldNames","childrenAsData","mergedLabel","groupLabel","injectPropsWithOption","newOption","Polite","DEFAULT_OMIT_PROPS","isMultiple","_customizeRawInputEle","omitDomProps","displayValues","onDisplayValuesChange","_props$notFoundConten","notFoundContent","getRawInputElement","onDropdownVisibleChange","onActiveValueChange","onSearchSplit","tokenSeparators","OptionList","_props$showAction","mergedShowSearch","domProps","selectorDomRef","selectorRef","listRef","blurRef","_useDelayReset","bool","setBool","cancelLatest","useDelayReset","_useDelayReset2","mockFocused","setMockFocused","cancelSetMockFocused","_selectorRef$current","_selectorRef$current2","scrollTo","_listRef$current","mergedSearchValue","_displayValues$","customizeInputElement","customizeRawInputElement","customizeRawInputRef","rendered","setRendered","innerOpen","setInnerOpen","emptyListContent","newOpen","tokenSeparator","SelectContext","rawValues","onInternalSearch","searchText","fromTyping","isCompositing","newSearchText","separatedList","separate","restTokens","prevList","unitStr","getSeparatedContent","patchLabels","getClearLock","setClearLock","focusRef","activeTimeoutIds","onTriggerVisibleChange","customizedTrigger","onGlobalMouseDown","composed","useSelectTriggerControl","_triggerRef$current2","arrowNode","baseSelectContext","toggleOpen","showSuffixIcon","renderNode","_useAllowClear","onClearMouseDown","mergedClearIcon","useAllowClear","_selectorRef$current4","clearNode","optionList","mergedClassName","selectorNode","newValues","_triggerRef$current","_selectorRef$current3","restArgs","_listRef$current2","clearLock","isEnterKey","cloneDisplayValues","removedDisplayValue","_listRef$current3","OptGroup","isSelectOptGroup","Option","isSelectOption","Filler","onInnerResize","innerProps","extra","outerStyle","refFunc","useDiffItem","onDiff","prevData","setPrevData","diffItem","setDiffItem","originList","targetList","shortList","longList","originLen","targetLen","notExistKey","__EMPTY_ITEM__","getItemKey","diffIndex","shortKey","findListDiffIndex","isScrollAtTop","isScrollAtBottom","isScrollAtLeft","isScrollAtRight","lockTimeoutRef","scrollPingRef","isHorizontal","smoothOffset","originScroll","useFrameWheel","inVirtual","horizontalScroll","onWheelDelta","offsetRef","wheelValueRef","isMouseScrollRef","useOriginScroll","wheelDirectionRef","wheelDirectionCleanRef","mergedDeltaX","mergedDeltaY","absX","absY","_virtualHandled","isFF","patchMultiple","onWheelY","onWheelX","CacheMap","maps","parseNumber","SMOOTH_PTG","smoothScrollOffset","getPageXY","horizontal","scrollOffset","scrollRange","onStartMove","onStopMove","spinSize","propsThumbStyle","thumbStyle","showScrollBar","dragging","setDragging","pageXY","setPageXY","startTop","setStartTop","isLTR","scrollbarRef","thumbRef","visibleTimeoutRef","delayHidden","enableScrollRange","enableOffsetRange","stateRef","onThumbMouseDown","onScrollbarTouchStart","scrollbarEle","thumbEle","enableScrollRangeRef","enableOffsetRangeRef","moveRafId","_stateRef$current","stateDragging","statePageY","stateStartTop","newTop","tmpEnableScrollRange","tmpEnableOffsetRange","newScrollTop","scrollbarPrefixCls","containerStyle","getSpinSize","EMPTY_DATA","ScrollStyle","overflowAnchor","RawList","itemHeight","_props$fullHeight","fullHeight","onVirtualScroll","extraRender","_props$showScrollBar","_useHeights","onItemAdd","onItemRemove","updatedMark","setUpdatedMark","instanceRef","heightsRef","promiseIdRef","cancelRaf","collectHeight","doCollect","changed","_getComputedStyle","totalHeight","useHeights","_useHeights2","setInstanceRef","heights","heightUpdatedMark","useVirtual","containerHeight","curr","componentRef","fillerInnerRef","setOffsetTop","setOffsetLeft","scrollMoving","setScrollMoving","onScrollbarStartMove","onScrollbarStopMove","syncScrollTop","alignedTop","maxScrollHeightRef","keepInRange","rangeRef","diffItemRef","_React$useMemo","_fillerInnerRef$curre","itemTop","dataLen","_item","cacheHeight","currentItemBottom","fillerOffset","changedRecord","getRecord","recordKey","diffHeight","resetRecord","setSize","verticalScrollBarRef","horizontalScrollBarRef","horizontalScrollBarSpinSize","verticalScrollBarSpinSize","maxScrollHeight","getVirtualScrollInfo","lastVirtualScrollInfoRef","triggerScroll","nextInfo","onScrollBar","newScrollOffset","newOffset","keepInHorizontalRange","nextOffsetLeft","tmpOffsetLeft","offsetXY","fromHorizontal","_useFrameWheel2","onRawWheel","onFireFoxScroll","cleanUpEvents","touchedRef","touchXRef","touchYRef","intervalRef","onTouchMove","currentX","currentY","_isHorizontal","scrollHandled","onTouchEnd","useMobileTouchMove","onScrollOffset","_offset","mouseDownLock","stopScroll","continueScroll","draggable","mouseY","_ele$getBoundingClien","useScrollDrag","onMozMousePixelScroll","scrollingUpAtTop","scrollingDownAtBottom","componentEle","newOffsetLeft","delayHideScrollBar","_verticalScrollBarRef","_horizontalScrollBarR","_scrollTo","triggerFlash","scrollRef","syncState","setSyncState","targetAlign","originAlign","needCollectHeight","newTargetAlign","itemBottom","maxLen","leftHeight","_cacheHeight","lastTop","_arg$offset","useScrollTo","getScrollInfo","renderList","getSize","key2Index","bottomList","startKey","endKey","_heights$get","useGetSize","extraContent","listChildren","renderFunc","useChildren","componentStyle","containerProps","dir","ScrollBar","verticalScrollBar","verticalScrollBarThumb","horizontalScrollBar","horizontalScrollBarThumb","_useBaseProps","onPopupScroll","flattenOptions","onActiveValue","defaultActiveFirstOption","onSelect","menuItemSelectedIcon","listHeight","listItemHeight","optionRender","memoFlattenOptions","overMaxCount","onListMouseDown","scrollIntoView","isSelected","getEnabledActiveIndex","activeIndex","setActiveIndex","setActive","fromKeyboard","flattenItem","isAriaSelected","onSelectValue","appVersion","nextActiveIndex","_item$data","omitFieldNameList","getLabel","getItemAriaProps","itemData","a11yProps","itemIndex","groupOption","_data$title","groupTitle","optionPrefixCls","optionClassName","iconVisible","optionTitle","retId","getUUID","convertChildrenToData","optionOnly","_ref2$props","_ref$props","convertNodeToOption","optionFilterProp","optionLabelProp","valueOptions","labelOptions","setLabelOptions","labelOptionsMap","dig","isChildren","useRefFunc","funcRef","OMIT_DOM_PROPS","TypedSelect","backfill","_props$autoClearSearc","onDeselect","_props$dropdownMatchS","filterOption","filterSort","_props$listHeight","_props$listItemHeight","labelRender","labelInValue","mergedFilterOption","mergedFieldNames","setSearchValue","parsedOptions","useOptions","convert2LabelValues","draftValues","rawValue","rawLabel","rawKey","rawDisabled","rawTitle","_val$value","isRawValue","_option$key","setInternalValue","rawLabeledValues","_values$","isComboNoValue","_useCache","labeledValues","_cacheRef$current","prevValueCache","prevOptionCache","patchedValues","_prevValueCache$get","valueCache","optionCache","_useCache2","mergedValues","getMixedOption","firstValue","_mergedValues$","strValue","createTagOption","filteredOptions","fieldOptions","fieldLabel","customizeFilter","upperSearch","wrapOption","subOptions","subItem","useFilterOptions","cloneOptions","existOptions","filledSearchOptions","sorter","inputOptions","orderedFilteredOptions","displayOptions","_fillFieldNames","isGroupOption","grpLabel","newVal","_mergedValues$index","returnValues","returnOptions","setActiveValue","accessibilityIndex","setAccessibilityIndex","mergedDefaultActiveFirstOption","_ref3$source","triggerSelect","getSelectEnt","_option$key2","_getSelectEnt2","wrappedValue","_option","_getSelectEnt4","_wrappedValue","_option2","onInternalSelect","cloneValues","mergedSelect","selectContext","realVirtual","BaseSelect","nextValues","formatted","newRawValues","patchValues","newRawValue","buildInPlacements","slideUpIn","slideUpOut","slideDownIn","slideDownOut","slideLeftIn","slideLeftOut","slideRightIn","slideRightOut","slideMotion","initSlideMotion","moveDownIn","moveDownOut","moveLeftIn","moveLeftOut","moveRightIn","moveRightOut","moveMotion","initMoveMotion","genItemStyle","optionHeight","optionFontSize","optionLineHeight","optionPadding","selectItemCls","slideUpEnterActive","slideUpAppearActive","slideUpLeaveActive","dropdownPlacementCls","selectedItemCls","fontVariant","optionActiveBg","optionSelectedColor","optionSelectedFontWeight","optionSelectedBg","genOverflowStyle","multipleItemColorDisabled","multipleItemBorderColorDisabled","INTERNAL_FIXED_ITEM_MARGIN","selectOverflowPrefixCls","alignSelf","genSelectionStyle","selectItemHeight","multipleSelectItemHeight","selectItemDist","selectHeight","getSelectItemStyle","multipleSelectorUnit","basePadding","containerPadding","itemLineHeight","getMultipleSelectorUnit","multipleSelectorBgDisabled","inputPaddingHorizontalBase","genSizeStyle","rawStyle","multipleItemHeightSM","multipleItemHeightLG","selectHeightWithoutBorder","WebkitAppearance","showArrowPaddingInlineEnd","genSingleStyle","inputPaddingHorizontalSM","singleItemHeightLG","selectorBg","hoverBorderHover","activeOutlineColor","multipleItemBg","multipleItemBorderColor","genSelectorStyle","getSearchInputWithoutBorderStyle","appearance","selectAffixPadding","genSelectStyle","genMultipleStyle","genDropdownStyle","selectToken","multipleItemHeight","genVariantsStyle","dblPaddingXXS","dblLineWidth","clearBg","SECRET_COMBOBOX_MODE_DO_NOT_USE","InternalSelect","customListItemHeight","propDirection","customizeVariant","renderEmpty","contextPopupMatchSelectWidth","contextSelect","useVariants","useShowArrow","mergedPopupMatchSelectWidth","mergedNotFound","DefaultRenderEmpty","itemIcon","getSuffixIconNode","arrowIcon","mergedSuffixIcon","mergedItemIcon","mergedRemoveIcon","useIcons","selectProps","mergedPopupClassName","memoPlacement","RcSelect","Select","genPaginationDisabledStyle","itemActiveBgDisabled","itemActiveColorDisabled","genPaginationMiniStyle","itemSizeSM","paginationMiniOptionsMarginInlineStart","miniOptionsSizeChangerTop","paginationMiniQuickJumperInputWidth","genPaginationSimpleStyle","paginationItemPaddingInline","itemInputBg","inputOutlineOffset","genPaginationJumpStyle","paginationEllipsisLetterSpacing","textIndent","paginationEllipsisTextIndent","paginationSlashMarginInlineEnd","paginationSlashMarginInlineStart","genPaginationItemStyle","itemBg","itemActiveBg","genPaginationStyle","genPaginationFocusStyle","itemLinkBg","paginationToken","genBorderedStyle","useShowSizeChanger","customizeSelectPrefixCls","customLocale","selectComponentClass","useBreakpoint","contextShowSizeChangerConfig","isSmall","enUS","propShowSizeChanger","propSizeChangerSelectProps","contextShowSizeChanger","contextSizeChangerSelectProps","mergedShowSizeChanger","mergedShowSizeChangerSelectProps","SizeChanger","mergedPageSizeOptions","iconsProps","extendedClassName","BorderedStyle","RcPagination","sizeChangerClassName","propSizeChangerClassName","propSizeChangerOnChange","selectedValue","debounce","_ref$atBegin","atBegin","timeoutID","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","arguments_","elapsed","_ref2$upcomingOnly","upcomingOnly","circumference","PI","CustomCircle","dotClassName","hasCircleCls","viewSize","holderClassName","hideClassName","setRender","safePtg","circleStyle","Looper","Progress","Indicator","indicator","antSpinMove","antRotate","genSpinStyle","dotSize","contentHeight","textShadow","dotSizeSM","dotSizeLG","spinDotDefault","animationDirection","animationDelay","strokeLinecap","spinToken","STEP_BUCKETS","defaultIndicator","Spin","spinning","customSpinning","tip","wrapperClassName","fullscreen","contextIndicator","setSpinning","shouldDelay","mergedPercent","mockPercent","setMockPercent","mockIntervalRef","isAuto","restPTG","stepPtg","usePercent","showSpinning","isNestedPattern","spinClassName","mergedIndicator","spinElement","setDefaultIndicator","parseFlex","pull","sizeClassObj","sizeProps","propSize","paddingLeft","paddingRight","actions","customizeClassNames","colStyle","grid","itemLayout","moduleClass","moduleName","moduleStyle","actionsContent","itemChildren","isItemContainsTextNodeAndNotSingular","listBorderedCls","itemPaddingSM","itemPaddingLG","genResponsiveStyle","contentWidth","itemPadding","emptyTextPadding","metaMarginBottom","avatarMarginRight","descriptionFontSize","marginBlockEnd","borderBlockEnd","listToken","InternalList","loadMore","dataSource","rowKey","paginationObj","paginationCurrent","setPaginationCurrent","paginationSize","setPaginationSize","triggerPaginationEvent","onPaginationChange","onPaginationShowSizeChange","loadingProp","isLoading","paginationProps","extendsObject","largestPage","paginationContent","splitDataSource","needResponsive","currentBreakpoint","childrenContent","renderInnerItem","paginationPosition","HomeOutlined","HomeOutlinedSvg","DeleteOutlined","DeleteOutlinedSvg","SaveOutlined","SaveOutlinedSvg","FileZipOutlined","FileZipOutlinedSvg","mathFlow","metaAfter","beforeNonLazyContinuation","tokenizeClosingFence","afterSequenceClose","mathText","single","singleDollarTextMath","resolveMathText","patternCompile","_compiled","patternInScope","listInScope","inConstruct","notInConstruct","none","safe","infos","unsafe","expression","numerical","escapeBackslashes","encode","whole","lineShift","mathToMarkdown","inlineMath","handlers","math","safeOptions","expected","longestStreak","subexit","codePointAt","remarkMath","hName","hProperties","hChildren","mathFlowFenceMeta","mathFlowFence","mathFlowValue","exitMathData","mathTextData","mathFromMarkdown","en","blockText","inlineText","icons","getMathActions","cheatsheet","wrapText","editor","appendBlock","codemirror","Pos","flowchart","gantt","mermaid","mindmap","pie","uj","platform","gecko","ie_upto10","ie_11up","edge","ie","ie_version","webkit","qtwebkit","chrome","presto","safari","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mac","chromeOS","windows","presto_version","flipCtrlCmd","captureRightClick","classTest","rmClass","removeChildren","removeChildrenAndAdd","elt","cssText","eltP","activeElt","addClass","joinClasses","endNode","createTextRange","moveToElementText","moveEnd","moveStart","selectInput","copyObj","overwrite","countColumn","nextTab","Delayed","onTimeout","Pass","sel_dontScroll","scroll","sel_mouse","sel_move","findColumn","goal","spaceStrs","spaceStr","lst","out","nothing","createObj","nonASCIISingleCaseWordChar","isWordCharBasic","isWordChar","helper","isEmpty","extendingChars","isExtendingChar","skipExtendingChars","findFirst","pred","midF","bidiOther","getBidiPartAt","sticky","bidiOrdering","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","outerType","i$1","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","j$1","i$7","at","j$2","nstart","noHandlers","on","emitter","_handlers","getHandlers","off","signalDOMEvent","cm","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","e_preventDefault","e_stopPropagation","e_stop","e_target","e_button","zwspSupported","badBidiRects","dragAndDrop","zeroWidthElement","measure","hasBadBidiRects","r0","r1","splitLinesAuto","nl","rt","hasSelection","te","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","defineMode","resolveMode","spec","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","copyState","nstate","innerMode","startState","StringStream","lineOracle","lastColumnPos","lastColumnValue","getLine","lines","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","lineNo","no","lineAtHeight","outer","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","cmp","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","linelen","clipToLen","clipPosArray","eol","sol","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","indentation","caseInsensitive","cased","hideFirstChars","inner","lookAhead","oracle","SavedContext","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlays","i_end","opaque","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","callBlankLine","readToken","Token","takeToken","asArray","extractLineClasses","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","getMarkedSpanFor","spans","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","span$1","clearEmptySpans","newMarkers","gapMarkers","clearWhenEmpty","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","visualLineNo","lineN","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","buildLineContent","lineView","builder","trailingSpace","splitSpaces","getOption","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","defaultSpecialCharPlaceholder","startStyle","endStyle","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","txt$1","tabWidth","specialCharPlaceholder","part","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","buildViewArray","nextPos","operationGroup","orphanDelayedCallbacks","signalLater","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","getLineContent","ext","built","updateLineBackground","wrapClass","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","gutterSpecs","gutterWidth","alignable","isWidget","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","widgetHeight","parentStyle","eventInWidget","sizer","mover","lineSpace","paddingVert","paddingH","cachedPaddingH","currentStyle","scrollGap","nativeBarWidth","displayWidth","barWidth","displayHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","lineMeasure","updateExternalMeasurement","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","rects","getClientRects","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","pageScrollY","pageYOffset","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","invert","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","rangeEnd","wrappedLineExtent","wrappedLineExtentChar","boxIsAfter","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","closestDist","endX","dist","textHeight","clientLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","e$1","colDiff","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","updateSelection","showSelection","prepareSelection","curFragment","cursors","selFragment","customCursor","$customCursor","sel","primIndex","drawSelectionCursor","showCursorWhenSelecting","drawSelectionRange","cursorHeight","getWrapperElement","charPos","defaultCharWidth","otherCursor","cmpCoords","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","lineLen","wrapX","side","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","blinker","cursorDiv","cursorBlinkRate","hasFocus","ensureFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","receivedFocus","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","visibleLines","viewport","ensure","ensureFrom","ensureTo","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollbars","setScrollLeft","isScroller","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","checkedZeroWidth","needsH","needsV","sWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","bar","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","heightForcer","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","op","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","markArrays","ops","ownsGroup","endOperation","endCb","fireCallbacksForOps","finishOperation","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","endCoords","scrollPos","startLeft","scrollPosIntoView","doScroll","scrollNode","maybeScrollWindow","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","editorIsHidden","wrapperHeight","oldDisplayWidth","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","selectionSnapshot","updateNumbersFrom","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","selectionDiv","reportedViewFrom","reportedViewTo","updateGutterSpace","alignWidgets","comp","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","wheelDX","wheelDY","activeTouch","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelEventPixels","onScrollWheel","pixelsPerUnit","canScrollX","canScrollY","pixels","movedX","movedY","Selection","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","sharedHist","linked","attachDoc","setDirectionClass","History","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","addChangeToHistory","selAfter","opId","hist","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","instantiateSel","newChanges","extendRange","posBefore","extendSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","filterChange","canceled","makeChange","ignoreReadOnly","suppressEdits","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","changeLine","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","remaining","leaf","maybeSpill","me","myIndex","used","LineWidget","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","inThisOp","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","lineSeparator","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","FileReader","File","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","file","allowDropFileTypes","reader","readAsText","text$1","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","registerGlobalHandlers","keyNames","keyMap","normalizeKeyName","ctrl","cmd","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","addModifierNames","noShift","keyName","altGraphKey","deleteNearSelection","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","lastStoppedKey","getField","handled","up","showCrossHair","handleCharBinding","lastClick","lastDoubleClick","PastClick","supportsTouch","clickInGutter","clickRepeat","selectingText","handleMappedButton","contained","behavior","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","posCol","leftPos","oldRange","ranges$1","anchorLine","headIndex","usePart","bidiSimplify","editorSize","curCount","leftButtonSelect","leftButtonDown","findWordAt","gutterEvent","prevent","mX","mY","lineBox","contextMenuInGutter","themeChanged","Init","optionHandlers","dragDropChanged","funcs","dragFunctions","over","leave","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","radiusX","radiusY","farAway","frag","onDragOver","effectAllowed","setDragImage","_top","onDragStart","inp","registerEventHandlers","finishInit","initHooks","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","spellcheck","autocorrect","autocapitalize","findPosH","origDir","lineDir","moveOnce","boundToLine","astral","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","moveVisually","findNextLine","sawType","getHelper","hitSide","findPosV","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","topNode","curNode","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","screenReaderLabelChanged","showMultipleSelections","curAnchor","curFocus","rng","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","newText","closing","extraLinebreak","recognizeMarker","addText","walk","cmText","markerID","isBlock","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","prepareCopyCut","fastPoll","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","deflt","notOnInit","defineOption","newBreaks","getInputField","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","defaultTextHeight","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","rtlMoveVisually","goalColumn","goals","startChar","scrollToRange","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","addEditorMethods","dontDelegate","defineMIME","mime","defineExtension","defineDocExtension","fromTextArea","tabindex","realSubmit","leaveSubmitMethodAlone","wrappedSubmit","toTextArea","cmpPos","addLegacyProps","clearPlaceholder","setPlaceholder","placeHolder","placeholderCompose","onComposition","cmCfg","modeCfg","htmlMode","htmlModeMissing","highlightFormatting","maxBlockquoteDepth","taskLists","strikethrough","emoji","fencedCodeBlockHighlighting","fencedCodeBlockDefaultMode","xml","tokenTypeOverrides","tokenTypes","list1","list2","list3","imageAltText","imageMarker","formatting","linkInline","linkEmail","linkText","linkHref","em","tokenType","hrRE","listRE","taskListRE","atxHeaderRE","allowAtxHeaderWithoutSpace","setextHeaderRE","textRE","fencedCodeRE","linkDefRE","punctuation","switchInline","switchBlock","linkTitle","indentedCode","htmlBlock","htmlState","tagStart","isInText","inlineNormal","blockNormal","trailingSpaceNewLine","prevLine","thisLine","firstTokenOnLine","prevLineLineIsEmpty","prevLineIsIndentedCode","prevLineIsHr","prevLineIsList","maxNonCodeIndentation","lineIndentation","indentationDiff","allowsInlineContinuation","fencedCodeEnd","isHr","setext","listType","taskList","fencedEndRE","localMode","findModeByName","mimes","localState","local","footnoteLink","md_inside","returnType","currListInd","hasExitedList","maxFencedEndInd","taskOpen","taskClosed","listMod","handleText","matchCh","previousFormatting","formattingEscape","atts","leftFlanking","rightFlanking","setEm","setStrong","retType","endChar","linkRE","footnoteLinkInside","footnoteUrl","textAfter","blockCommentStart","blockCommentEnd","closeBrackets","fold","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","inText","chain","inBlock","inTag","closure","isInAttribute","inAttribute","stringStartCol","terminator","lower","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","convert","castFactory","typeFactory","tests","checks","anyFactory","propsFactory","CONTINUE","EXIT","visitParents","visitor","parents","subresult","grandparents","toResult","getWindow","isElement","isHTMLElement","isShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","visualViewport","addVisualOffsets","getWindowScroll","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","offsets","getNodeScroll","clientTop","getLayoutRect","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","auto","basePlacements","popper","variationPlacements","modifierPhases","modifiers","visited","modifier","requires","requiresIfExists","depModifier","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","mergeByName","_ref$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","_options","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","initialStyles","attribute","getOppositePlacement","matched","getOppositeVariationPlacement","rootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","within","mathMax","mathMin","getSideOffsets","preventedOffsets","isAnySideFullyClipped","createPopper","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","applyStyles","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","_loop","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","CONTENT_CLASS","BACKDROP_CLASS","ARROW_CLASS","SVG_ARROW_CLASS","TOUCH_OPTIONS","TIPPY_DEFAULT_APPEND_TO","getValueAtIndexOrReturn","isType","invokeWithArgsOrReturn","removeProperties","normalizeToArray","pushIfUnique","arrayFrom","removeUndefinedProps","isMouseEvent","isReferenceElement","_tippy","getArrayOfElements","isNodeList","setTransitionDuration","els","transitionDuration","setVisibilityState","getOwnerDocument","elementOrElements","updateTransitionEndListener","actualContains","_target$getRootNode","currentInput","isTouch","lastMouseMoveTime","onDocumentTouchStart","onDocumentMouseMove","onWindowBlur","isIE11","pluginProps","animateFill","followCursor","inlinePositioning","appendTo","getReferenceClientRect","hideOnClick","ignoreAttributes","interactive","interactiveBorder","interactiveDebounce","moveTransition","onAfterUpdate","onBeforeUpdate","onCreate","onDestroy","onHidden","onHide","onMount","onShow","onShown","onTrigger","onUntrigger","onClickOutside","plugins","popperOptions","showOnCreate","triggerTarget","allowHTML","inertia","defaultKeys","getExtendedPassedProps","plugin","_name","evaluateProps","valueAsString","getDataAttributeProps","createArrowElement","setContent","firstElementChild","boxChildren","backdrop","onUpdate","_getChildren","$$tippy","idCounter","mouseMoveListeners","mountedInstances","createTippy","showTimeout","hideTimeout","scheduleHideAnimationFrame","lastTriggerEvent","currentTransitionEndListener","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","debouncedOnMouseMove","popperInstance","isEnabled","isShown","clearDelayTimeouts","setProps","partialProps","invokeHook","removeListeners","addListeners","cleanupInteractiveMouseListeners","handleAriaExpandedAttribute","handleStyles","createPopperInstance","getNestedPopperTree","nestedPopper","isAlreadyVisible","isTouchAndTouchDisabled","getCurrentTarget","getIsDefaultRenderFn","addDocumentPress","_getDefaultTemplateCh2","getDefaultTemplateChildren","_instance$popperInsta2","_getDefaultTemplateCh3","_box","_content","handleAriaContentAttribute","onTransitionEnd","onTransitionedIn","hide","isAlreadyHidden","removeDocumentPress","_getDefaultTemplateCh4","onTransitionedOut","hideWithInteractivity","getDocument","enable","destroyPopperInstance","_props$render","pluginsHooks","hasAriaExpanded","scheduleShow","getNormalizedTouchSettings","getIsCustomTouchBehavior","_instance$props$rende","getDelay","isShow","fromHide","shouldInvokePropsHook","_instance$props","pluginHooks","onDocumentPress","actualTarget","onBlurOrFocusOut","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","popperTreeData","_instance$popperInsta","popperState","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","isCursorOutsideInteractiveBorder","_instance$props2","computedReference","tippyModifier","_getNormalizedTouchSe","touchValue","touchDelay","tippy","targets","optionalProps","instances","setDefaultProps","BUBBLING_EVENTS_MAP","mouseover","focusin","childTippyInstances","nativeProps","parentProps","closest","originalDestroy","originalEnable","originalDisable","shouldDestroyChildInstances","addEventListeners","defaultSchema","strip","clobberPrefix","clobber","ancestors","tbody","tfoot","thead","td","tr","protocols","cite","longDesc","tagNames","ins","pointStart","pointEnd","definitions","Info","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","mustUseProperty","powers","increment","DefinedInfo","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","autoCapitalize","autoPlay","blocking","cols","colSpan","controls","controlsList","dateTime","decoding","defer","dirName","download","enterKeyHint","formNoValidate","htmlFor","inert","isMap","itemId","itemRef","itemScope","itemType","language","minLength","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onCanPlay","onCanPlayThrough","onContextLost","onContextRestored","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDurationChange","onEmptied","onEnded","onFormData","onHashChange","onInvalid","onLanguageChange","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseOut","onMouseOver","onOffline","onOnline","onPageHide","onPageShow","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onSecurityPolicyViolation","onSeeked","onSeeking","onSlotChange","onStalled","onStorage","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","popoverTarget","popoverTargetAction","poster","reversed","rowSpan","sandbox","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","slot","spellCheck","srcDoc","srcLang","translate","typeMustMatch","useMap","writingSuggestions","aLink","archive","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","declare","face","frameBorder","hSpace","leftMargin","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","floodColor","fontSizeAdjust","fontStretch","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","calcMode","clipPathUnits","contentScriptType","contentStyleType","defaultAction","descent","diffuseConstant","dur","divisor","edgeMode","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","fr","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","operator","orient","orientation","pathLength","patternContentUnits","patternTransform","patternUnits","pitch","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","viewTarget","widths","x1","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","dash","cap","Type","camelcase","dashes","kebab","padRight","padLeft","buttonTypes","core","defaultTagName","createAdjustMap","subvalue","parseSelector","isProperties","addProperty","addChild","commas","parsePrimitive","finalResult","webNamespaces","mathml","proto","patch","quirksMode","indices","toPoint","toOffset","verbose","opening","zwitch","unknown","parentSchema","currentSchema","createProperty","htmlVoidElements","endTagToken","parseOptions","Parser","resetTokenizer","createParse5Location","locationTracker","stitches","passThrough","stitch","options_","fromParse5","toParse5","rehypeRaw","nodeSchema","allowDoctypes","handleDoctypeName","allowComments","handleCommentValue","handleTagName","reqs","allowed","toPropertyValueMap","handlePropertyValues","handlePropertyValue","colon","questionMark","numberSign","safeProtocol","rehypeSanitize","hastUtilSanitize","defaultSubsetRegex","surrogatePairsRegex","controlCharactersRegex","regexEscapeRegex","subsetToRegexCache","subset","cached","groups","charactersToExpression","charactersToExpressionCached","escapeOnly","hexadecimalRegex","decimalRegex","characterEntitiesLegacy","characterEntitiesHtml4","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","fnof","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","beta","gamma","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","bull","hellip","prime","Prime","oline","frasl","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","or","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","rang","loz","spades","clubs","hearts","diams","quot","amp","lt","gt","OElig","oelig","Scaron","scaron","Yuml","circ","tilde","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","permil","lsaquo","rsaquo","euro","dangerous","notAlphanumericRegex","formatSmart","named","toHexadecimal","omitOptionalSemicolons","useNamedReferences","useShortestReferences","toNamed","decimal","toDecimal","stringifyEntities","ccount","siblingAfter","siblingBefore","includeWhitespace","omission","headOrColgroupOrCaption","dt","dd","rubyElement","rp","optgroup","menuitem","colgroup","caption","constants","unquoted","double","serializeAttribute","allowParseErrors","allowDangerousCharacters","characterReferences","tightCommaSeparatedLists","collapseEmptyAttributes","preferUnquoted","quoteSmart","alternative","_1","_2","bogusComments","_3","upperDoctype","tightDoctype","omitOptionalTags","closeEmptyElements","voids","tightAttributes","serializeAttributes","closeSelfClosing","tightSelfClosing","allowDangerousHtml","rehypeStringify","processorSettings","Compiler","toHtml","remarkParse","normalizeUri","clean","footnoteReference","safeId","footnoteOrder","footnoteCounts","reuseCounter","dataFootnoteRef","applyData","revert","contents","listItemLoose","trimLines","trimLine","break","footnote","footnoteById","imageReference","inlineCode","linkReference","loose","listLoose","firstRow","tableContent","tableCell","tableRow","cellIndex","alignValue","toml","yaml","footnoteDefinition","createState","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","footnoteBackLabel","unknownHandler","augment","defaultUnknownHandler","toHast","foot","listItems","referenceIndex","backReferences","backReference","dataFootnoteBackref","tailTail","dataFootnotes","destination","run","bridge","mutate","bail","trough","fns","pipeline","middlewareIndex","middleware","wrapped","fnExpectsCallback","middelware","VFileMessage","fatal","ruleId","actual","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","lastIndexOf","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","urlToPath","hostname","third","getPathFromURLPosix","VFile","bufferLike","stored","assertNonEmpty","assertPart","stem","fail","unified","attachers","frozen","freezeIndex","processor","assertUnfrozen","attacher","transformer","addPlugin","addList","addPreset","isPlainObj","vfile","assertParser","newable","assertCompiler","assertNode","executor","runSync","assertDone","processSync","asyncName","looksLikeAVFile","nativeMax","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastInvokeTime","leading","maxing","trailing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","toNumber","blank_object","run_all","is_function","safe_not_equal","not_equal","destroy_each","detaching","set_data","text2","wholeText","toggle_class","element2","current_component","set_current_component","get_current_component","on_mount","on_destroy","createEventDispatcher","createEvent","initCustomEvent","custom_event","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","tick","add_render_callback","seen_callbacks","flushidx","saved_component","before_update","after_update","outroing","outros","transition_in","transition_out","detach2","create_component","mount_component","customElement","new_on_destroy","destroy_component","filtered","flush_render_callbacks","instance2","create_fragment2","not_equal2","append_styles","parent_component","on_disconnect","skip_bound","make_dirty","intro","SvelteComponent","$destroy","$on","$set","$$props","$$set","bold","boldText","closeHelp","closeToc","codeBlock","codeLang","exitFullscreen","exitPreviewOnly","exitWriteOnly","h1","h2","h3","h4","h5","h6","headingText","imageAlt","imageTitle","italicText","limited","olItem","previewOnly","quotedText","shortcuts","toc","ulItem","writeOnly","createCodeMirror","usePlaceholder","overlayMode","combine","basePos","baseCur","overlayPos","overlayCur","streamSeen","combineTokens","overlayToken","useXml","useMarkdown","urlRE","modeConfig","codeDepth","gfmOverlay","ateSpace","difference","gitHubSpice","markdownConfig","useGfm","keywordRegex","esc","escaped","literal","keyCol","pairStart","inlinePairs","inlineList","lineComment","useYaml","parserConfig","yamlMode","useYamlFrontmatter","emptyListRE","unorderedListRE","incrementRemainingMarkdownListNumbers","skipCount","startItem","startIndent","nextLineNumber","nextIndent","newNumber","nextNumber","itemNumber","newlineAndIndentContinueMarkdownList","replacements","eolState","inList","inQuote","cursorBeforeBullet","endOfQuote","endOfList","numbered","bullet","useContinuelist","createEditorUtils","fromBefore","toAfter","replaceLines","lines2","emptyLine","selectFiles","findStartIndex","nums","getShortcutWithPrefix","handleImageUpload","uploadImages","imgs","get_each_context$2","child_ctx","get_each_context_1$1","create_if_block_1$2","div0","div1","div2","code2","raw_value","t0_value","t1_value","ctx2","create_each_block_1$1","if_block_anchor","if_block","create_if_block$3","shortcut","create_each_block$2","create_fragment$5","h20","ul0","h21","ul1","each_value_1","each_blocks_1","each_value","each_blocks","_ref13","instance$5","$$self","$$invalidate","flatItems","actions2","items2","cheatsheet2","$$props2","Help","create_if_block_1$1","t_value","create_if_block$2","dispose","create_fragment$4","span0","strong0","span1","t4","strong1","t5","span2","t6","t3_value","t6_value","if_block0","if_block1","_ref14","instance$4","words2","showSync","syncEnabled","islimited","wordCount","change_handler","click_handler","Status","get_each_context$1","create_each_block$1","li_class_value","li_style_value","keydown_handler","new_ctx","create_fragment$3","h22","ul2","instance$3","hast","currentBlockIndex","minLevel","currentHeadingIndex","stringifyHeading","Toc","get_each_context","get_each_context_1","create_else_block","create_if_block_1","each_1_anchor","create_each_block_1","create_if_block_2","tippyClass","create_if_block$1","tippyClassRight","create_each_block","create_fragment$2","select_block_type","current_block_type","tippyPathKey","instance$2","tocActive","helpActive","writeActive","previewActive","rightActions","toolbar","delegateInstance","activeTab","fullscreen2","sidebar","rightAfferentActions","getPayloadFromElement","init2","_ref17","dropdownTitle","subAction","dropdownItem","outerHTML","actionHandler","mouseenter","mouseleave","click_handler_1","$$value","Toolbar","schemaStr","create_fragment$1","instance$1","markdownBody","sanitize","remarkRehype","remarkRehype2","cbs","dispatchPlugin","file2","viewerEffect","_ref18","remarkRehypeOptions","_ref19","remark","_ref20","rehype","getProcessor","Viewer","create_if_block","viewer","viewer_changes","create_fragment","div5","div4","div0_style_value","div1_style_value","div3","help2","toc2","toolbar_changes","leftActions","help_changes","toc_changes","status_changes","previewDebounce","editorConfig","overridePreview","editorEl","previewEl","debouncedValue","setDebouncedValue","value2","editPs","previewPs","editCalled","previewCalled","Enter","Tab","updateBlockPositions","scrollInfo","leftNodes","rightNodes","leftNode","rightNode","editorScrollHandler","leftRatio","rightRatio","previewScrollHandler","handleImages","itemList","getAsFile","fileList","_ref11","getBuiltinActions","preview2","editorEffect","top_handler","Editor","ed","onChangeRef","bytemd","wwwPrefix","wwwPrefixInside","wwwPrefixAfter","domain","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","trail","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","emailDomainDotTrail","wwwAutolink","previousWww","previousUnbalanced","wwwAfter","protocolAutolink","previousProtocol","fromCodePoint","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","emailAutolink","dot","gfmAtext","previousEmail","atext","emailDomain","emailDomainAfter","emailDomainDot","gfmAutolinkLiteral","_gfmAutolinkLiteralWalkedInto","tokenizePotentialGfmFootnoteCall","gfmFootnotes","resolveToPotentialGfmFootnoteCall","tokenizeGfmFootnoteCall","callStart","callData","callEscape","tokenizeDefinitionStart","labelAtMarker","whitespaceAfter","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","gfmStrikethrough","singleTilde","EditMap","editMap","addImpl","vecs","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","sizeB","bodyRowStart","headRowBefore","headRowBreak","headRowStart","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","_align","rowEnd","previousCell","groupName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","gfmTaskListItem","spaceThenNonSpace","findAndReplace","ignored","pairs","toExpression","toFunction","toPairs","pairIndex","grandparent","matchObject","gfmAutolinkLiteralFromMarkdown","findUrl","findEmail","literalAutolink","literalAutolinkEmail","enterLiteralAutolinkValue","literalAutolinkHttp","literalAutolinkWww","gfmAutolinkLiteralToMarkdown","isCorrectDomain","trailExec","closingParenIndex","openingParens","closingParens","splitUrl","association","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","indentLines","indexStack","createTracker","bulletLastUsed","containerFlow","blank","containerPhrasing","handleDelete","gfmStrikethroughFromMarkdown","gfmStrikethroughToMarkdown","defaultStringLength","toAlignment","gfmTableFromMarkdown","tableData","enterCell","tableHeader","gfmTableToMarkdown","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","serializeData","handleTableRowAsData","handleTableAsData","handleTableCell","matrix","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","columnIndex","delimiterStart","delimiterEnd","markdownTable","listItemIndent","checkListItemIndent","bulletCurrent","checkBullet","incrementListMarker","gfmTaskListItemFromMarkdown","taskListCheckValueChecked","exitCheck","taskListCheckValueUnchecked","firstParaghraph","gfmTaskListItemToMarkdown","checkable","remarkGfm","gfm","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","gfmToMarkdown","strike","strikeText","tableHeading","taskText","headerStyle","_locale","remarkGfmOptions","gfmLocale","hljs","highlightElement","katexOptions","katex","renderMath","displayMode","innerText","throwOnError","mathLocale","mermaidConfig","actionItems","replaceWith","svgCode","mermaidLocale","GroupMain","markdownList","setMarkdownList","newMarkdownData","setNewMarkdownData","isNewMarkdownModalOpen","setIsNewMarkdownModalOpen","cryptoPwd","setCryptoPwd","isCryptoModalOpen","setIsCryptoModalOpen","mdvalue","setMdValue","mdname","setMdName","showEditor","setShowEditor","fetchMarkdowns","query","openMarkdown","saveMarkdown","localStorage","getItem","mdvalues","setItem","newMarkdown","_enmd","_demd","removeItem","Ctrl-S","zhHans","image_names","xhr","XMLHttpRequest","lengthComputable","loaded","ri","send","LoginPage","user","setUser","handleLogin","App","getElementById"],"sourceRoot":""}