/* -*- buffer-read-only: t -*-
 *
 *    proto.h
 *
 *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
 *    2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others
 *
 *    You may distribute under the terms of either the GNU General Public
 *    License or the Artistic License, as specified in the README file.
 *
 * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
 * This file is built by regen/embed.pl from data in embed.fnc,
 * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h.
 * Any changes made here will be lost!
 *
 * Edit those files and run 'make regen_headers' to effect changes.
 */

START_EXTERN_C
#ifndef NO_MATHOMS
PERL_CALLCONV UV	ASCII_TO_NEED(const UV enc, const UV ch)
			__attribute__deprecated__
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_ASCII_TO_NEED
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE I32 *	Perl_CvDEPTH(const CV * const sv);
#define PERL_ARGS_ASSERT_CVDEPTH	\
	assert(sv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE GV *	Perl_CvGV(pTHX_ CV *sv);
#define PERL_ARGS_ASSERT_CVGV	\
	assert(sv)
#endif
PERL_CALLCONV int	Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing);
#define PERL_ARGS_ASSERT_GV_AMUPDATE	\
	assert(stash)
#ifndef NO_MATHOMS
PERL_CALLCONV UV	NATIVE_TO_NEED(const UV enc, const UV ch)
			__attribute__deprecated__
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_NATIVE_TO_NEED
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE I32	Perl_POPMARK(pTHX);
#define PERL_ARGS_ASSERT_POPMARK
#endif
PERL_CALLCONV const char *	Perl_PerlIO_context_layers(pTHX_ const char *mode);
#define PERL_ARGS_ASSERT_PERLIO_CONTEXT_LAYERS
PERL_CALLCONV int	Perl_PerlLIO_dup2_cloexec(pTHX_ int oldfd, int newfd);
#define PERL_ARGS_ASSERT_PERLLIO_DUP2_CLOEXEC
PERL_CALLCONV int	Perl_PerlLIO_dup_cloexec(pTHX_ int oldfd)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLLIO_DUP_CLOEXEC

PERL_CALLCONV int	Perl_PerlLIO_open3_cloexec(pTHX_ const char *file, int flag, int perm)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLLIO_OPEN3_CLOEXEC	\
	assert(file)

PERL_CALLCONV int	Perl_PerlLIO_open_cloexec(pTHX_ const char *file, int flag)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLLIO_OPEN_CLOEXEC	\
	assert(file)

/* PERL_CALLCONV const XOP *	Perl_custom_op_xop(pTHX_ const OP *o); */
#define PERL_ARGS_ASSERT_PERL_CUSTOM_OP_XOP
PERL_CALLCONV const char*	Perl_setlocale(const int category, const char* locale);
#define PERL_ARGS_ASSERT_PERL_SETLOCALE
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE struct regexp *	Perl_ReANY(const REGEXP * const re);
#define PERL_ARGS_ASSERT_REANY	\
	assert(re)
#endif
PERL_CALLCONV void*	Perl_Slab_Alloc(pTHX_ size_t sz)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SLAB_ALLOC

PERL_CALLCONV void	Perl_Slab_Free(pTHX_ void *op);
#define PERL_ARGS_ASSERT_SLAB_FREE	\
	assert(op)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_SvAMAGIC_off(SV *sv);
#define PERL_ARGS_ASSERT_SVAMAGIC_OFF	\
	assert(sv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_SvAMAGIC_on(SV *sv);
#define PERL_ARGS_ASSERT_SVAMAGIC_ON	\
	assert(sv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_SvREFCNT_dec(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SVREFCNT_DEC
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_SvREFCNT_dec_NN(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SVREFCNT_DEC_NN	\
	assert(sv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE SV *	Perl_SvREFCNT_inc(SV *sv);
#define PERL_ARGS_ASSERT_SVREFCNT_INC
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE SV *	Perl_SvREFCNT_inc_NN(SV *sv);
#define PERL_ARGS_ASSERT_SVREFCNT_INC_NN	\
	assert(sv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_SvREFCNT_inc_void(SV *sv);
#define PERL_ARGS_ASSERT_SVREFCNT_INC_VOID
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_SvTRUE(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SVTRUE
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_SvTRUE_NN(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SVTRUE_NN	\
	assert(sv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_SvTRUE_common(pTHX_ SV *sv, const bool sv_2bool_is_fallback);
#define PERL_ARGS_ASSERT_SVTRUE_COMMON	\
	assert(sv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_SvTRUE_nomg(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SVTRUE_NOMG
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE I32	Perl_TOPMARK(pTHX);
#define PERL_ARGS_ASSERT_TOPMARK
#endif
PERL_CALLCONV char *	Perl__byte_dump_string(pTHX_ const U8 * const start, const STRLEN len, const bool format);
#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING	\
	assert(start)
PERL_CALLCONV void	Perl__force_out_malformed_utf8_message(pTHX_ const U8 *const p, const U8 * const e, const U32 flags, const bool die_here);
#define PERL_ARGS_ASSERT__FORCE_OUT_MALFORMED_UTF8_MESSAGE	\
	assert(p); assert(e)
PERL_CALLCONV Size_t	Perl__inverse_folds(pTHX_ const UV cp, U32 * first_folds_to, const U32 ** remaining_folds_to)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__INVERSE_FOLDS	\
	assert(first_folds_to); assert(remaining_folds_to)

PERL_CALLCONV bool	Perl__is_in_locale_category(pTHX_ const bool compiling, const int category);
#define PERL_ARGS_ASSERT__IS_IN_LOCALE_CATEGORY
PERL_CALLCONV bool	Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_FOO

PERL_CALLCONV bool	Perl__is_uni_perl_idcont(pTHX_ UV c)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_PERL_IDCONT

PERL_CALLCONV bool	Perl__is_uni_perl_idstart(pTHX_ UV c)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_PERL_IDSTART

PERL_CALLCONV bool	Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p, const U8 * const e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UTF8_FOO	\
	assert(p); assert(e)

PERL_CALLCONV bool	Perl__is_utf8_perl_idcont(pTHX_ const U8 *p, const U8 * const e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT	\
	assert(p); assert(e)

PERL_CALLCONV bool	Perl__is_utf8_perl_idstart(pTHX_ const U8 *p, const U8 * const e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART	\
	assert(p); assert(e)

PERL_CALLCONV UV	Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags);
#define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS	\
	assert(p); assert(lenp)
PERL_CALLCONV UV	Perl__to_utf8_fold_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, U8 flags);
#define PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS	\
	assert(p); assert(ustrp)
PERL_CALLCONV UV	Perl__to_utf8_lower_flags(pTHX_ const U8 *p, const U8* e, U8* ustrp, STRLEN *lenp, bool flags);
#define PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS	\
	assert(p); assert(ustrp)
PERL_CALLCONV UV	Perl__to_utf8_title_flags(pTHX_ const U8 *p, const U8* e, U8* ustrp, STRLEN *lenp, bool flags);
#define PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS	\
	assert(p); assert(ustrp)
PERL_CALLCONV UV	Perl__to_utf8_upper_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, bool flags);
#define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS	\
	assert(p); assert(ustrp)
PERL_CALLCONV UV	Perl__utf8n_to_uvchr_msgs_helper(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors, AV ** msgs);
#define PERL_ARGS_ASSERT__UTF8N_TO_UVCHR_MSGS_HELPER	\
	assert(s)
PERL_CALLCONV void	Perl__warn_problematic_locale(void);
#define PERL_ARGS_ASSERT__WARN_PROBLEMATIC_LOCALE
PERL_CALLCONV_NO_RET void	Perl_abort_execution(pTHX_ const char * const msg, const char * const name)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_ABORT_EXECUTION	\
	assert(msg); assert(name)

PERL_CALLCONV LOGOP*	Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP *other);
#define PERL_ARGS_ASSERT_ALLOC_LOGOP
PERL_CALLCONV PADOFFSET	Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags);
#define PERL_ARGS_ASSERT_ALLOCMY	\
	assert(name)
PERL_CALLCONV SV*	Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir);
#define PERL_ARGS_ASSERT_AMAGIC_CALL	\
	assert(left); assert(right)
PERL_CALLCONV SV *	Perl_amagic_deref_call(pTHX_ SV *ref, int method);
#define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL	\
	assert(ref)
PERL_CALLCONV bool	Perl_amagic_is_enabled(pTHX_ int method);
#define PERL_ARGS_ASSERT_AMAGIC_IS_ENABLED
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_append_utf8_from_native_byte(const U8 byte, U8** dest);
#define PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE	\
	assert(dest)
#endif
PERL_CALLCONV I32	Perl_apply(pTHX_ I32 type, SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_APPLY	\
	assert(mark); assert(sp)
PERL_CALLCONV void	Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len);
#define PERL_ARGS_ASSERT_APPLY_ATTRS_STRING	\
	assert(stashpv); assert(cv); assert(attrstr)
PERL_CALLCONV void	Perl_atfork_lock(void);
#define PERL_ARGS_ASSERT_ATFORK_LOCK
PERL_CALLCONV void	Perl_atfork_unlock(void);
#define PERL_ARGS_ASSERT_ATFORK_UNLOCK
PERL_CALLCONV SV**	Perl_av_arylen_p(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_ARYLEN_P	\
	assert(av)
PERL_CALLCONV void	Perl_av_clear(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_CLEAR	\
	assert(av)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE Size_t	Perl_av_count(pTHX_ AV *av)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_COUNT	\
	assert(av)
#endif

PERL_CALLCONV void	Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val);
#define PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH	\
	assert(avp); assert(val)
PERL_CALLCONV SV**	Perl_av_create_and_unshift_one(pTHX_ AV **const avp, SV *const val);
#define PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE	\
	assert(avp); assert(val)
PERL_CALLCONV SV*	Perl_av_delete(pTHX_ AV *av, SSize_t key, I32 flags);
#define PERL_ARGS_ASSERT_AV_DELETE	\
	assert(av)
PERL_CALLCONV bool	Perl_av_exists(pTHX_ AV *av, SSize_t key)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_EXISTS	\
	assert(av)

PERL_CALLCONV void	Perl_av_extend(pTHX_ AV *av, SSize_t key);
#define PERL_ARGS_ASSERT_AV_EXTEND	\
	assert(av)
PERL_CALLCONV void	Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, SV ***arrayp);
#define PERL_ARGS_ASSERT_AV_EXTEND_GUTS	\
	assert(maxp); assert(allocp); assert(arrayp)
PERL_CALLCONV SV**	Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_FETCH	\
	assert(av)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE SV**	Perl_av_fetch_simple(pTHX_ AV *av, SSize_t key, I32 lval)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_FETCH_SIMPLE	\
	assert(av)
#endif

PERL_CALLCONV void	Perl_av_fill(pTHX_ AV *av, SSize_t fill);
#define PERL_ARGS_ASSERT_AV_FILL	\
	assert(av)
PERL_CALLCONV IV*	Perl_av_iter_p(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_ITER_P	\
	assert(av)
PERL_CALLCONV SSize_t	Perl_av_len(pTHX_ AV *av)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_LEN	\
	assert(av)

PERL_CALLCONV AV*	Perl_av_make(pTHX_ SSize_t size, SV **strp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_MAKE	\
	assert(strp)

PERL_CALLCONV AV*	Perl_av_new_alloc(pTHX_ SSize_t size, bool zeroflag)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_NEW_ALLOC

PERL_CALLCONV SV*	Perl_av_nonelem(pTHX_ AV *av, SSize_t ix);
#define PERL_ARGS_ASSERT_AV_NONELEM	\
	assert(av)
PERL_CALLCONV SV*	Perl_av_pop(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_POP	\
	assert(av)
PERL_CALLCONV void	Perl_av_push(pTHX_ AV *av, SV *val);
#define PERL_ARGS_ASSERT_AV_PUSH	\
	assert(av); assert(val)
PERL_CALLCONV void	Perl_av_reify(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_REIFY	\
	assert(av)
PERL_CALLCONV SV*	Perl_av_shift(pTHX_ AV *av)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_AV_SHIFT	\
	assert(av)

PERL_CALLCONV SV**	Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val);
#define PERL_ARGS_ASSERT_AV_STORE	\
	assert(av)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE SV**	Perl_av_store_simple(pTHX_ AV *av, SSize_t key, SV *val);
#define PERL_ARGS_ASSERT_AV_STORE_SIMPLE	\
	assert(av)
#endif
/* PERL_CALLCONV SSize_t	av_tindex(pTHX_ AV *av)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_AV_TINDEX

/* PERL_CALLCONV SSize_t	av_top_index(pTHX_ AV *av)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_AV_TOP_INDEX

PERL_CALLCONV void	Perl_av_undef(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_AV_UNDEF	\
	assert(av)
PERL_CALLCONV void	Perl_av_unshift(pTHX_ AV *av, SSize_t num);
#define PERL_ARGS_ASSERT_AV_UNSHIFT	\
	assert(av)
PERL_CALLCONV OP*	Perl_bind_match(pTHX_ I32 type, OP *left, OP *right)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BIND_MATCH	\
	assert(left); assert(right)

PERL_CALLCONV OP*	Perl_block_end(pTHX_ I32 floor, OP* seq)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_END

PERL_CALLCONV U8	Perl_block_gimme(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_GIMME

PERL_CALLCONV int	Perl_block_start(pTHX_ int full)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_START

PERL_CALLCONV void	Perl_blockhook_register(pTHX_ BHK *hk);
#define PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER	\
	assert(hk)
PERL_CALLCONV void	Perl_boot_core_PerlIO(pTHX);
#define PERL_ARGS_ASSERT_BOOT_CORE_PERLIO
PERL_CALLCONV void	Perl_boot_core_UNIVERSAL(pTHX);
#define PERL_ARGS_ASSERT_BOOT_CORE_UNIVERSAL
PERL_CALLCONV void	Perl_boot_core_builtin(pTHX);
#define PERL_ARGS_ASSERT_BOOT_CORE_BUILTIN
PERL_CALLCONV void	Perl_boot_core_mro(pTHX);
#define PERL_ARGS_ASSERT_BOOT_CORE_MRO
PERL_CALLCONV int	Perl_bytes_cmp_utf8(pTHX_ const U8 *b, STRLEN blen, const U8 *u, STRLEN ulen);
#define PERL_ARGS_ASSERT_BYTES_CMP_UTF8	\
	assert(b); assert(u)
PERL_CALLCONV U8*	Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *lenp, bool *is_utf8p);
#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8	\
	assert(s); assert(lenp); assert(is_utf8p)
PERL_CALLCONV U8*	Perl_bytes_from_utf8_loc(const U8 *s, STRLEN *lenp, bool *is_utf8p, const U8 ** first_unconverted);
#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8_LOC	\
	assert(s); assert(lenp); assert(is_utf8p)
PERL_CALLCONV U8*	Perl_bytes_to_utf8(pTHX_ const U8 *s, STRLEN *lenp);
#define PERL_ARGS_ASSERT_BYTES_TO_UTF8	\
	assert(s); assert(lenp)
PERL_CALLCONV I32	Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv);
#define PERL_ARGS_ASSERT_CALL_ARGV	\
	assert(sub_name); assert(argv)
PERL_CALLCONV void	Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
#define PERL_ARGS_ASSERT_CALL_ATEXIT
PERL_CALLCONV void	Perl_call_list(pTHX_ I32 oldscope, AV *paramList);
#define PERL_ARGS_ASSERT_CALL_LIST	\
	assert(paramList)
PERL_CALLCONV I32	Perl_call_method(pTHX_ const char* methname, I32 flags);
#define PERL_ARGS_ASSERT_CALL_METHOD	\
	assert(methname)
PERL_CALLCONV I32	Perl_call_pv(pTHX_ const char* sub_name, I32 flags);
#define PERL_ARGS_ASSERT_CALL_PV	\
	assert(sub_name)
PERL_CALLCONV I32	Perl_call_sv(pTHX_ SV* sv, volatile I32 flags);
#define PERL_ARGS_ASSERT_CALL_SV	\
	assert(sv)
PERL_CALLCONV const PERL_CONTEXT *	Perl_caller_cx(pTHX_ I32 level, const PERL_CONTEXT **dbcxp);
#define PERL_ARGS_ASSERT_CALLER_CX
PERL_CALLCONV Malloc_t	Perl_calloc(MEM_SIZE elements, MEM_SIZE size)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CALLOC

PERL_CALLCONV bool	Perl_cando(pTHX_ Mode_t mode, bool effective, const Stat_t* statbufp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CANDO	\
	assert(statbufp)

PERL_CALLCONV I32	Perl_cast_i32(NV f)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_I32

PERL_CALLCONV IV	Perl_cast_iv(NV f)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_IV

PERL_CALLCONV U32	Perl_cast_ulong(NV f)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_ULONG

PERL_CALLCONV UV	Perl_cast_uv(NV f)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_UV

PERL_CALLCONV bool	Perl_check_utf8_print(pTHX_ const U8 *s, const STRLEN len);
#define PERL_ARGS_ASSERT_CHECK_UTF8_PRINT	\
	assert(s)
PERL_CALLCONV OP *	Perl_ck_anoncode(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_ANONCODE	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_backtick(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_BACKTICK	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_bitop(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_BITOP	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_cmp(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_CMP	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_concat(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_CONCAT	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_defined(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_DEFINED	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_delete(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_DELETE	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_each(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_EACH	\
	assert(o)

PERL_CALLCONV OP*	Perl_ck_entersub_args_core(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE	\
	assert(entersubop); assert(namegv); assert(protosv)
PERL_CALLCONV OP*	Perl_ck_entersub_args_list(pTHX_ OP *entersubop);
#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST	\
	assert(entersubop)
PERL_CALLCONV OP*	Perl_ck_entersub_args_proto(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO	\
	assert(entersubop); assert(namegv); assert(protosv)
PERL_CALLCONV OP*	Perl_ck_entersub_args_proto_or_list(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST	\
	assert(entersubop); assert(namegv); assert(protosv)
PERL_CALLCONV OP *	Perl_ck_eof(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_EOF	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_eval(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_EVAL	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_exec(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_EXEC	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_exists(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_EXISTS	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_ftst(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_FTST	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_fun(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_FUN	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_glob(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_GLOB	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_grep(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_GREP	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_index(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_INDEX	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_isa(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_ISA	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_join(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_JOIN	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_length(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_LENGTH	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_lfun(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_LFUN	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_listiob(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_LISTIOB	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_match(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_MATCH	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_method(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_METHOD	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_null(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_NULL	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_open(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_OPEN	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_prototype(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_PROTOTYPE	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_readline(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_READLINE	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_refassign(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_REFASSIGN	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_repeat(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_REPEAT	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_require(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_REQUIRE	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_return(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_RETURN	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_rfun(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_RFUN	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_rvconst(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_RVCONST	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_sassign(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SASSIGN	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_select(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SELECT	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_shift(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SHIFT	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_smartmatch(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SMARTMATCH	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_sort(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SORT	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_spair(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SPAIR	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_split(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SPLIT	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_stringify(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_STRINGIFY	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_subr(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SUBR	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_substr(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SUBSTR	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_svconst(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_SVCONST	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_tell(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_TELL	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_trunc(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_TRUNC	\
	assert(o)

PERL_CALLCONV OP *	Perl_ck_trycatch(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CK_TRYCATCH	\
	assert(o)

PERL_CALLCONV void	Perl_ck_warner(pTHX_ U32 err, const char* pat, ...)
			__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_CK_WARNER	\
	assert(pat)

PERL_CALLCONV void	Perl_ck_warner_d(pTHX_ U32 err, const char* pat, ...)
			__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_CK_WARNER_D	\
	assert(pat)

PERL_CALLCONV bool	Perl_ckwarn(pTHX_ U32 w)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_CKWARN

PERL_CALLCONV bool	Perl_ckwarn_d(pTHX_ U32 w)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_CKWARN_D

PERL_CALLCONV void	Perl_clear_defarray(pTHX_ AV* av, bool abandon);
#define PERL_ARGS_ASSERT_CLEAR_DEFARRAY	\
	assert(av)
PERL_CALLCONV const COP*	Perl_closest_cop(pTHX_ const COP *cop, const OP *o, const OP *curop, bool opnext);
#define PERL_ARGS_ASSERT_CLOSEST_COP	\
	assert(cop)
PERL_CALLCONV OP*	Perl_cmpchain_extend(pTHX_ I32 type, OP* ch, OP* right)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CMPCHAIN_EXTEND	\
	assert(ch)

PERL_CALLCONV OP*	Perl_cmpchain_finish(pTHX_ OP* ch)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CMPCHAIN_FINISH	\
	assert(ch)

PERL_CALLCONV OP*	Perl_cmpchain_start(pTHX_ I32 type, OP* left, OP* right)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CMPCHAIN_START

PERL_CALLCONV const char *	Perl_cntrl_to_mnemonic(const U8 c)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CNTRL_TO_MNEMONIC

PERL_CALLCONV const char *	Perl_cop_fetch_label(pTHX_ COP *const cop, STRLEN *len, U32 *flags);
#define PERL_ARGS_ASSERT_COP_FETCH_LABEL	\
	assert(cop)
PERL_CALLCONV void	Perl_cop_store_label(pTHX_ COP *const cop, const char *label, STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_COP_STORE_LABEL	\
	assert(cop); assert(label)
PERL_CALLCONV SV *	Perl_core_prototype(pTHX_ SV *sv, const char *name, const int code, int * const opnum);
#define PERL_ARGS_ASSERT_CORE_PROTOTYPE	\
	assert(name)
PERL_CALLCONV OP *	Perl_coresub_op(pTHX_ SV *const coreargssv, const int code, const int opnum);
#define PERL_ARGS_ASSERT_CORESUB_OP	\
	assert(coreargssv)
PERL_CALLCONV void	Perl_create_eval_scope(pTHX_ OP *retop, U32 flags);
#define PERL_ARGS_ASSERT_CREATE_EVAL_SCOPE
PERL_CALLCONV_NO_RET void	Perl_croak(pTHX_ const char* pat, ...)
			__attribute__noreturn__
			__attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_CROAK

PERL_CALLCONV_NO_RET void	Perl_croak_caller(const char* pat, ...)
			__attribute__noreturn__
			__attribute__format__null_ok__(__printf__,1,2);
#define PERL_ARGS_ASSERT_CROAK_CALLER

PERL_CALLCONV_NO_RET void	Perl_croak_memory_wrap(void)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_MEMORY_WRAP

PERL_CALLCONV_NO_RET void	Perl_croak_no_mem(void)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_NO_MEM

PERL_CALLCONV_NO_RET void	Perl_croak_no_modify(void)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_NO_MODIFY

PERL_CALLCONV_NO_RET void	Perl_croak_popstack(void)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_POPSTACK

PERL_CALLCONV_NO_RET void	Perl_croak_sv(pTHX_ SV *baseex)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_SV	\
	assert(baseex)

PERL_CALLCONV_NO_RET void	Perl_croak_xs_usage(const CV *const cv, const char *const params)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE	\
	assert(cv); assert(params)

PERL_CALLCONV Signal_t	Perl_csighandler1(int sig);
#define PERL_ARGS_ASSERT_CSIGHANDLER1
PERL_CALLCONV Signal_t	Perl_csighandler3(int sig, Siginfo_t *info, void *uap);
#define PERL_ARGS_ASSERT_CSIGHANDLER3
PERL_CALLCONV regexp_engine const *	Perl_current_re_engine(pTHX);
#define PERL_ARGS_ASSERT_CURRENT_RE_ENGINE
#ifndef NO_MATHOMS
PERL_CALLCONV const char *	Perl_custom_op_desc(pTHX_ const OP *o)
			__attribute__deprecated__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CUSTOM_OP_DESC	\
	assert(o)
#endif

PERL_CALLCONV XOPRETANY	Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CUSTOM_OP_GET_FIELD	\
	assert(o)

#ifndef NO_MATHOMS
PERL_CALLCONV const char *	Perl_custom_op_name(pTHX_ const OP *o)
			__attribute__deprecated__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CUSTOM_OP_NAME	\
	assert(o)
#endif

PERL_CALLCONV void	Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop);
#define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER	\
	assert(ppaddr); assert(xop)
PERL_CALLCONV void	Perl_cv_ckproto_len_flags(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len, const U32 flags);
#define PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS	\
	assert(cv)
PERL_CALLCONV CV*	Perl_cv_clone(pTHX_ CV* proto);
#define PERL_ARGS_ASSERT_CV_CLONE	\
	assert(proto)
PERL_CALLCONV CV*	Perl_cv_clone_into(pTHX_ CV* proto, CV *target);
#define PERL_ARGS_ASSERT_CV_CLONE_INTO	\
	assert(proto); assert(target)
PERL_CALLCONV SV*	Perl_cv_const_sv(const CV *const cv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CV_CONST_SV

PERL_CALLCONV SV*	Perl_cv_const_sv_or_av(const CV *const cv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CV_CONST_SV_OR_AV

PERL_CALLCONV void	Perl_cv_forget_slab(pTHX_ CV *cv);
#define PERL_ARGS_ASSERT_CV_FORGET_SLAB
PERL_CALLCONV void	Perl_cv_get_call_checker(pTHX_ CV *cv, Perl_call_checker *ckfun_p, SV **ckobj_p);
#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER	\
	assert(cv); assert(ckfun_p); assert(ckobj_p)
PERL_CALLCONV void	Perl_cv_get_call_checker_flags(pTHX_ CV *cv, U32 gflags, Perl_call_checker *ckfun_p, SV **ckobj_p, U32 *ckflags_p);
#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER_FLAGS	\
	assert(cv); assert(ckfun_p); assert(ckobj_p); assert(ckflags_p)
PERL_CALLCONV SV *	Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags);
#define PERL_ARGS_ASSERT_CV_NAME	\
	assert(cv)
PERL_CALLCONV void	Perl_cv_set_call_checker(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj);
#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER	\
	assert(cv); assert(ckfun); assert(ckobj)
PERL_CALLCONV void	Perl_cv_set_call_checker_flags(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj, U32 ckflags);
#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER_FLAGS	\
	assert(cv); assert(ckfun); assert(ckobj)
PERL_CALLCONV void	Perl_cv_undef(pTHX_ CV* cv);
#define PERL_ARGS_ASSERT_CV_UNDEF	\
	assert(cv)
PERL_CALLCONV void	Perl_cv_undef_flags(pTHX_ CV* cv, U32 flags);
#define PERL_ARGS_ASSERT_CV_UNDEF_FLAGS	\
	assert(cv)
PERL_CALLCONV GV *	Perl_cvgv_from_hek(pTHX_ CV* cv);
#define PERL_ARGS_ASSERT_CVGV_FROM_HEK	\
	assert(cv)
PERL_CALLCONV void	Perl_cvgv_set(pTHX_ CV* cv, GV* gv);
#define PERL_ARGS_ASSERT_CVGV_SET	\
	assert(cv)
PERL_CALLCONV void	Perl_cvstash_set(pTHX_ CV* cv, HV* stash);
#define PERL_ARGS_ASSERT_CVSTASH_SET	\
	assert(cv)
PERL_CALLCONV void	Perl_cx_dump(pTHX_ PERL_CONTEXT* cx);
#define PERL_ARGS_ASSERT_CX_DUMP	\
	assert(cx)
PERL_CALLCONV I32	Perl_cxinc(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CXINC

PERL_CALLCONV void	Perl_deb(pTHX_ const char* pat, ...)
			__attribute__format__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_DEB	\
	assert(pat)

PERL_CALLCONV void	Perl_deb_stack_all(pTHX);
#define PERL_ARGS_ASSERT_DEB_STACK_ALL
PERL_CALLCONV I32	Perl_debop(pTHX_ const OP* o);
#define PERL_ARGS_ASSERT_DEBOP	\
	assert(o)
PERL_CALLCONV void	Perl_debprofdump(pTHX);
#define PERL_ARGS_ASSERT_DEBPROFDUMP
PERL_CALLCONV I32	Perl_debstack(pTHX);
#define PERL_ARGS_ASSERT_DEBSTACK
PERL_CALLCONV I32	Perl_debstackptrs(pTHX);
#define PERL_ARGS_ASSERT_DEBSTACKPTRS
PERL_CALLCONV void	Perl_debug_hash_seed(pTHX_ bool via_debug_h);
#define PERL_ARGS_ASSERT_DEBUG_HASH_SEED
PERL_CALLCONV SV *	Perl_defelem_target(pTHX_ SV *sv, MAGIC *mg)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DEFELEM_TARGET	\
	assert(sv)

PERL_CALLCONV void	Perl_delete_eval_scope(pTHX);
#define PERL_ARGS_ASSERT_DELETE_EVAL_SCOPE
PERL_CALLCONV char*	Perl_delimcpy(char* to, const char* to_end, const char* from, const char* from_end, const int delim, I32* retlen);
#define PERL_ARGS_ASSERT_DELIMCPY	\
	assert(to); assert(to_end); assert(from); assert(from_end); assert(retlen)
PERL_CALLCONV char*	Perl_delimcpy_no_escape(char* to, const char* to_end, const char* from, const char* from_end, const int delim, I32* retlen);
#define PERL_ARGS_ASSERT_DELIMCPY_NO_ESCAPE	\
	assert(to); assert(to_end); assert(from); assert(from_end); assert(retlen)
PERL_CALLCONV void	Perl_despatch_signals(pTHX);
#define PERL_ARGS_ASSERT_DESPATCH_SIGNALS
PERL_CALLCONV_NO_RET OP*	Perl_die(pTHX_ const char* pat, ...)
			__attribute__noreturn__
			__attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_DIE

PERL_CALLCONV_NO_RET OP*	Perl_die_sv(pTHX_ SV *baseex)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_DIE_SV	\
	assert(baseex)

PERL_CALLCONV_NO_RET void	Perl_die_unwind(pTHX_ SV* msv)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_DIE_UNWIND	\
	assert(msv)

#ifndef NO_MATHOMS
PERL_CALLCONV bool	Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_AEXEC	\
	assert(mark); assert(sp)
#endif
PERL_CALLCONV bool	Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd, int do_report);
#define PERL_ARGS_ASSERT_DO_AEXEC5	\
	assert(mark); assert(sp)
#ifndef NO_MATHOMS
PERL_CALLCONV int	Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_DO_BINMODE	\
	assert(fp)
#endif

PERL_CALLCONV bool	Perl_do_close(pTHX_ GV* gv, bool not_implicit);
#define PERL_ARGS_ASSERT_DO_CLOSE
PERL_CALLCONV void	Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full);
#define PERL_ARGS_ASSERT_DO_DUMP_PAD	\
	assert(file)
PERL_CALLCONV bool	Perl_do_eof(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_DO_EOF	\
	assert(gv)
PERL_CALLCONV void	Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
#define PERL_ARGS_ASSERT_DO_GV_DUMP	\
	assert(file); assert(name)
PERL_CALLCONV void	Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
#define PERL_ARGS_ASSERT_DO_GVGV_DUMP	\
	assert(file); assert(name)
PERL_CALLCONV void	Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv);
#define PERL_ARGS_ASSERT_DO_HV_DUMP	\
	assert(file); assert(name)
PERL_CALLCONV void	Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp);
#define PERL_ARGS_ASSERT_DO_JOIN	\
	assert(sv); assert(delim); assert(mark); assert(sp)
PERL_CALLCONV void	Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
#define PERL_ARGS_ASSERT_DO_MAGIC_DUMP	\
	assert(file)
PERL_CALLCONV I32	Perl_do_ncmp(pTHX_ SV *const left, SV *const right)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_NCMP	\
	assert(left); assert(right)

PERL_CALLCONV void	Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o);
#define PERL_ARGS_ASSERT_DO_OP_DUMP	\
	assert(file)
#ifndef NO_MATHOMS
PERL_CALLCONV bool	Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp);
#define PERL_ARGS_ASSERT_DO_OPEN	\
	assert(gv); assert(name)
#endif
PERL_CALLCONV bool	Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, PerlIO *supplied_fp, SV **svp, U32 num);
#define PERL_ARGS_ASSERT_DO_OPEN6	\
	assert(gv); assert(oname)
#ifndef NO_MATHOMS
PERL_CALLCONV bool	Perl_do_open9(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_DO_OPEN9	\
	assert(gv); assert(name); assert(svs)
#endif

PERL_CALLCONV bool	Perl_do_open_raw(pTHX_ GV *gv, const char *oname, STRLEN len, int rawmode, int rawperm, Stat_t *statbufp);
#define PERL_ARGS_ASSERT_DO_OPEN_RAW	\
	assert(gv); assert(oname)
PERL_CALLCONV bool	Perl_do_openn(pTHX_ GV *gv, const char *oname, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, I32 num);
#define PERL_ARGS_ASSERT_DO_OPENN	\
	assert(gv); assert(oname)
PERL_CALLCONV void	Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm);
#define PERL_ARGS_ASSERT_DO_PMOP_DUMP	\
	assert(file)
PERL_CALLCONV bool	Perl_do_print(pTHX_ SV* sv, PerlIO* fp);
#define PERL_ARGS_ASSERT_DO_PRINT	\
	assert(fp)
PERL_CALLCONV OP*	Perl_do_readline(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_READLINE

PERL_CALLCONV bool	Perl_do_seek(pTHX_ GV* gv, Off_t pos, int whence);
#define PERL_ARGS_ASSERT_DO_SEEK
PERL_CALLCONV void	Perl_do_sprintf(pTHX_ SV* sv, SSize_t len, SV** sarg);
#define PERL_ARGS_ASSERT_DO_SPRINTF	\
	assert(sv); assert(sarg)
PERL_CALLCONV void	Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
#define PERL_ARGS_ASSERT_DO_SV_DUMP	\
	assert(file)
PERL_CALLCONV Off_t	Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence);
#define PERL_ARGS_ASSERT_DO_SYSSEEK	\
	assert(gv)
PERL_CALLCONV Off_t	Perl_do_tell(pTHX_ GV* gv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_TELL	\
	assert(gv)

PERL_CALLCONV Size_t	Perl_do_trans(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_DO_TRANS	\
	assert(sv)
PERL_CALLCONV I16	Perl_do_uniprop_match(const char * const key, const U16 key_len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_UNIPROP_MATCH	\
	assert(key)

PERL_CALLCONV UV	Perl_do_vecget(pTHX_ SV* sv, STRLEN offset, int size);
#define PERL_ARGS_ASSERT_DO_VECGET	\
	assert(sv)
PERL_CALLCONV void	Perl_do_vecset(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_DO_VECSET	\
	assert(sv)
PERL_CALLCONV void	Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right);
#define PERL_ARGS_ASSERT_DO_VOP	\
	assert(sv); assert(left); assert(right)
PERL_CALLCONV OP*	Perl_dofile(pTHX_ OP* term, I32 force_builtin);
#define PERL_ARGS_ASSERT_DOFILE	\
	assert(term)
PERL_CALLCONV bool	Perl_doing_taint(int argc, char** argv, char** env)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOING_TAINT

PERL_CALLCONV OP *	Perl_doref(pTHX_ OP *o, I32 type, bool set_op_ref);
#define PERL_ARGS_ASSERT_DOREF	\
	assert(o)
PERL_CALLCONV void	Perl_dounwind(pTHX_ I32 cxix);
#define PERL_ARGS_ASSERT_DOUNWIND
PERL_CALLCONV U8	Perl_dowantarray(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOWANTARRAY

PERL_CALLCONV void	Perl_drand48_init_r(perl_drand48_t *random_state, U32 seed);
#define PERL_ARGS_ASSERT_DRAND48_INIT_R	\
	assert(random_state)
PERL_CALLCONV double	Perl_drand48_r(perl_drand48_t *random_state);
#define PERL_ARGS_ASSERT_DRAND48_R	\
	assert(random_state)
PERL_CALLCONV void	Perl_dump_all(pTHX);
#define PERL_ARGS_ASSERT_DUMP_ALL
PERL_CALLCONV void	Perl_dump_all_perl(pTHX_ bool justperl);
#define PERL_ARGS_ASSERT_DUMP_ALL_PERL
PERL_CALLCONV void	Perl_dump_eval(pTHX);
#define PERL_ARGS_ASSERT_DUMP_EVAL
PERL_CALLCONV void	Perl_dump_form(pTHX_ const GV* gv);
#define PERL_ARGS_ASSERT_DUMP_FORM	\
	assert(gv)
PERL_CALLCONV void	Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...)
			__attribute__format__(__printf__,pTHX_3,pTHX_4);
#define PERL_ARGS_ASSERT_DUMP_INDENT	\
	assert(file); assert(pat)

PERL_CALLCONV void	Perl_dump_packsubs(pTHX_ const HV* stash);
#define PERL_ARGS_ASSERT_DUMP_PACKSUBS	\
	assert(stash)
PERL_CALLCONV void	Perl_dump_packsubs_perl(pTHX_ const HV* stash, bool justperl);
#define PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL	\
	assert(stash)
PERL_CALLCONV void	Perl_dump_sub(pTHX_ const GV* gv);
#define PERL_ARGS_ASSERT_DUMP_SUB	\
	assert(gv)
PERL_CALLCONV void	Perl_dump_sub_perl(pTHX_ const GV* gv, bool justperl);
#define PERL_ARGS_ASSERT_DUMP_SUB_PERL	\
	assert(gv)
PERL_CALLCONV void	Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args);
#define PERL_ARGS_ASSERT_DUMP_VINDENT	\
	assert(file); assert(pat)
PERL_CALLCONV STRLEN*	Perl_dup_warnings(pTHX_ STRLEN* warnings);
#define PERL_ARGS_ASSERT_DUP_WARNINGS
PERL_CALLCONV void	Perl_emulate_cop_io(pTHX_ const COP *const c, SV *const sv);
#define PERL_ARGS_ASSERT_EMULATE_COP_IO	\
	assert(c); assert(sv)
PERL_CALLCONV SV*	Perl_eval_pv(pTHX_ const char* p, I32 croak_on_error);
#define PERL_ARGS_ASSERT_EVAL_PV	\
	assert(p)
PERL_CALLCONV I32	Perl_eval_sv(pTHX_ SV* sv, I32 flags);
#define PERL_ARGS_ASSERT_EVAL_SV	\
	assert(sv)
PERL_CALLCONV void	Perl_fbm_compile(pTHX_ SV* sv, U32 flags);
#define PERL_ARGS_ASSERT_FBM_COMPILE	\
	assert(sv)
PERL_CALLCONV char*	Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bigend, SV* littlestr, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FBM_INSTR	\
	assert(big); assert(bigend); assert(littlestr)

PERL_CALLCONV SV*	Perl_filter_add(pTHX_ filter_t funcp, SV* datasv);
#define PERL_ARGS_ASSERT_FILTER_ADD
PERL_CALLCONV void	Perl_filter_del(pTHX_ filter_t funcp);
#define PERL_ARGS_ASSERT_FILTER_DEL	\
	assert(funcp)
PERL_CALLCONV I32	Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FILTER_READ	\
	assert(buf_sv)

PERL_CALLCONV void	Perl_finalize_optree(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_FINALIZE_OPTREE	\
	assert(o)
PERL_CALLCONV CV *	Perl_find_lexical_cv(pTHX_ PADOFFSET off);
#define PERL_ARGS_ASSERT_FIND_LEXICAL_CV
PERL_CALLCONV CV*	Perl_find_runcv(pTHX_ U32 *db_seqp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FIND_RUNCV

PERL_CALLCONV CV*	Perl_find_runcv_where(pTHX_ U8 cond, IV arg, U32 *db_seqp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FIND_RUNCV_WHERE

PERL_CALLCONV SV*	Perl_find_rundefsv(pTHX);
#define PERL_ARGS_ASSERT_FIND_RUNDEFSV
PERL_CALLCONV PADOFFSET	Perl_find_rundefsvoffset(pTHX)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_FIND_RUNDEFSVOFFSET

PERL_CALLCONV char*	Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char *const *const search_ext, I32 flags);
#define PERL_ARGS_ASSERT_FIND_SCRIPT	\
	assert(scriptname)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE I32	Perl_foldEQ(const char* a, const char* b, I32 len);
#define PERL_ARGS_ASSERT_FOLDEQ	\
	assert(a); assert(b)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE I32	Perl_foldEQ_latin1(const char* a, const char* b, I32 len);
#define PERL_ARGS_ASSERT_FOLDEQ_LATIN1	\
	assert(a); assert(b)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE I32	Perl_foldEQ_locale(const char* a, const char* b, I32 len);
#define PERL_ARGS_ASSERT_FOLDEQ_LOCALE	\
	assert(a); assert(b)
#endif
/* PERL_CALLCONV I32	foldEQ_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
#define PERL_ARGS_ASSERT_FOLDEQ_UTF8
PERL_CALLCONV I32	Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2, U32 flags);
#define PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS	\
	assert(s1); assert(s2)
PERL_CALLCONV char*	Perl_form(pTHX_ const char* pat, ...)
			__attribute__format__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_FORM	\
	assert(pat)

PERL_CALLCONV void	Perl_free_tied_hv_pool(pTHX);
#define PERL_ARGS_ASSERT_FREE_TIED_HV_POOL
PERL_CALLCONV void	Perl_free_tmps(pTHX);
#define PERL_ARGS_ASSERT_FREE_TMPS
PERL_CALLCONV SV*	Perl_get_and_check_backslash_N_name(pTHX_ const char* s, const char* e, const bool is_utf8, const char** error_msg)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME	\
	assert(s); assert(e); assert(error_msg)

PERL_CALLCONV AV*	Perl_get_av(pTHX_ const char *name, I32 flags);
#define PERL_ARGS_ASSERT_GET_AV	\
	assert(name)
PERL_CALLCONV void*	Perl_get_context(void)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_CONTEXT

PERL_CALLCONV CV*	Perl_get_cv(pTHX_ const char* name, I32 flags);
#define PERL_ARGS_ASSERT_GET_CV	\
	assert(name)
PERL_CALLCONV CV*	Perl_get_cvn_flags(pTHX_ const char* name, STRLEN len, I32 flags);
#define PERL_ARGS_ASSERT_GET_CVN_FLAGS	\
	assert(name)
PERL_CALLCONV void	Perl_get_db_sub(pTHX_ SV **svp, CV *cv);
#define PERL_ARGS_ASSERT_GET_DB_SUB	\
	assert(cv)
PERL_CALLCONV const char *	Perl_get_deprecated_property_msg(const Size_t warning_offset)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_DEPRECATED_PROPERTY_MSG

PERL_CALLCONV void	Perl_get_hash_seed(pTHX_ unsigned char * const seed_buffer);
#define PERL_ARGS_ASSERT_GET_HASH_SEED	\
	assert(seed_buffer)
PERL_CALLCONV HV*	Perl_get_hv(pTHX_ const char *name, I32 flags);
#define PERL_ARGS_ASSERT_GET_HV	\
	assert(name)
PERL_CALLCONV const char*	Perl_get_no_modify(pTHX)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_GET_NO_MODIFY

PERL_CALLCONV char**	Perl_get_op_descs(pTHX)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_GET_OP_DESCS

PERL_CALLCONV char**	Perl_get_op_names(pTHX)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_GET_OP_NAMES

PERL_CALLCONV U32*	Perl_get_opargs(pTHX)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_GET_OPARGS

PERL_CALLCONV PPADDR_t*	Perl_get_ppaddr(pTHX)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_GET_PPADDR

PERL_CALLCONV SV *	Perl_get_prop_definition(pTHX_ const int table_index)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_PROP_DEFINITION

PERL_CALLCONV const char * const *	Perl_get_prop_values(const int table_index)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_PROP_VALUES

PERL_CALLCONV REGEXP *	Perl_get_re_arg(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_GET_RE_ARG
PERL_CALLCONV SV*	Perl_get_sv(pTHX_ const char *name, I32 flags);
#define PERL_ARGS_ASSERT_GET_SV	\
	assert(name)
PERL_CALLCONV MGVTBL*	Perl_get_vtbl(pTHX_ int vtbl_id)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_VTBL

PERL_CALLCONV int	Perl_getcwd_sv(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_GETCWD_SV	\
	assert(sv)
PERL_CALLCONV void	Perl_gp_free(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_GP_FREE
PERL_CALLCONV GP*	Perl_gp_ref(pTHX_ GP* gp);
#define PERL_ARGS_ASSERT_GP_REF
PERL_CALLCONV bool	Perl_grok_atoUV(const char* pv, UV* valptr, const char** endptr);
#define PERL_ARGS_ASSERT_GROK_ATOUV	\
	assert(pv); assert(valptr)
PERL_CALLCONV UV	Perl_grok_bin(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result);
#define PERL_ARGS_ASSERT_GROK_BIN	\
	assert(start); assert(len_p); assert(flags)
PERL_CALLCONV UV	Perl_grok_bin_oct_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result, const unsigned shift, const U8 lookup_bit, const char prefix);
#define PERL_ARGS_ASSERT_GROK_BIN_OCT_HEX	\
	assert(start); assert(len_p); assert(flags)
PERL_CALLCONV UV	Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result);
#define PERL_ARGS_ASSERT_GROK_HEX	\
	assert(start); assert(len_p); assert(flags)
PERL_CALLCONV int	Perl_grok_infnan(pTHX_ const char** sp, const char *send);
#define PERL_ARGS_ASSERT_GROK_INFNAN	\
	assert(sp); assert(send)
PERL_CALLCONV int	Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep);
#define PERL_ARGS_ASSERT_GROK_NUMBER	\
	assert(pv)
PERL_CALLCONV int	Perl_grok_number_flags(pTHX_ const char *pv, STRLEN len, UV *valuep, U32 flags);
#define PERL_ARGS_ASSERT_GROK_NUMBER_FLAGS	\
	assert(pv)
PERL_CALLCONV bool	Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX	\
	assert(sp); assert(send)

PERL_CALLCONV UV	Perl_grok_oct(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result);
#define PERL_ARGS_ASSERT_GROK_OCT	\
	assert(start); assert(len_p); assert(flags)
#ifndef NO_MATHOMS
PERL_CALLCONV GV*	Perl_gv_AVadd(pTHX_ GV *gv);
#define PERL_ARGS_ASSERT_GV_AVADD
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV GV*	Perl_gv_HVadd(pTHX_ GV *gv);
#define PERL_ARGS_ASSERT_GV_HVADD
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV GV*	Perl_gv_IOadd(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_GV_IOADD
#endif
PERL_CALLCONV GV*	Perl_gv_add_by_type(pTHX_ GV *gv, svtype type);
#define PERL_ARGS_ASSERT_GV_ADD_BY_TYPE
/* PERL_CALLCONV GV*	gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_GV_AUTOLOAD4

PERL_CALLCONV GV*	Perl_gv_autoload_pv(pTHX_ HV* stash, const char* namepv, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GV_AUTOLOAD_PV	\
	assert(namepv)

PERL_CALLCONV GV*	Perl_gv_autoload_pvn(pTHX_ HV* stash, const char* name, STRLEN len, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN	\
	assert(name)

PERL_CALLCONV GV*	Perl_gv_autoload_sv(pTHX_ HV* stash, SV* namesv, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GV_AUTOLOAD_SV	\
	assert(namesv)

PERL_CALLCONV void	Perl_gv_check(pTHX_ HV* stash);
#define PERL_ARGS_ASSERT_GV_CHECK	\
	assert(stash)
PERL_CALLCONV SV*	Perl_gv_const_sv(pTHX_ GV* gv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GV_CONST_SV	\
	assert(gv)

PERL_CALLCONV void	Perl_gv_dump(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_GV_DUMP
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_gv_efullname(pTHX_ SV* sv, const GV* gv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_GV_EFULLNAME	\
	assert(sv); assert(gv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
#define PERL_ARGS_ASSERT_GV_EFULLNAME3	\
	assert(sv); assert(gv)
#endif
PERL_CALLCONV void	Perl_gv_efullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain);
#define PERL_ARGS_ASSERT_GV_EFULLNAME4	\
	assert(sv); assert(gv)
PERL_CALLCONV GV*	Perl_gv_fetchfile(pTHX_ const char* name);
#define PERL_ARGS_ASSERT_GV_FETCHFILE	\
	assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN len, const U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS	\
	assert(name)
/* PERL_CALLCONV GV*	gv_fetchmeth(pTHX_ HV* stash, const char* name, STRLEN len, I32 level); */
#define PERL_ARGS_ASSERT_GV_FETCHMETH
/* PERL_CALLCONV GV*	gv_fetchmeth_autoload(pTHX_ HV* stash, const char* name, STRLEN len, I32 level); */
#define PERL_ARGS_ASSERT_GV_FETCHMETH_AUTOLOAD
PERL_CALLCONV GV*	Perl_gv_fetchmeth_pv(pTHX_ HV* stash, const char* name, I32 level, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETH_PV	\
	assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchmeth_pv_autoload(pTHX_ HV* stash, const char* name, I32 level, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD	\
	assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchmeth_pvn(pTHX_ HV* stash, const char* name, STRLEN len, I32 level, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETH_PVN	\
	assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchmeth_pvn_autoload(pTHX_ HV* stash, const char* name, STRLEN len, I32 level, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD	\
	assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchmeth_sv(pTHX_ HV* stash, SV* namesv, I32 level, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETH_SV	\
	assert(namesv)
PERL_CALLCONV GV*	Perl_gv_fetchmeth_sv_autoload(pTHX_ HV* stash, SV* namesv, I32 level, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD	\
	assert(namesv)
#ifndef NO_MATHOMS
PERL_CALLCONV GV*	Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name);
#define PERL_ARGS_ASSERT_GV_FETCHMETHOD	\
	assert(stash); assert(name)
#endif
PERL_CALLCONV GV*	Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload);
#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD	\
	assert(stash); assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchmethod_pv_flags(pTHX_ HV* stash, const char* name, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS	\
	assert(stash); assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchmethod_pvn_flags(pTHX_ HV* stash, const char* name, const STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS	\
	assert(stash); assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchmethod_sv_flags(pTHX_ HV* stash, SV* namesv, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS	\
	assert(stash); assert(namesv)
PERL_CALLCONV GV*	Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 flags, const svtype sv_type);
#define PERL_ARGS_ASSERT_GV_FETCHPV	\
	assert(nambeg)
PERL_CALLCONV GV*	Perl_gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, I32 flags, const svtype sv_type);
#define PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS	\
	assert(name)
PERL_CALLCONV GV*	Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type);
#define PERL_ARGS_ASSERT_GV_FETCHSV	\
	assert(name)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_gv_fullname(pTHX_ SV* sv, const GV* gv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_GV_FULLNAME	\
	assert(sv); assert(gv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
#define PERL_ARGS_ASSERT_GV_FULLNAME3	\
	assert(sv); assert(gv)
#endif
PERL_CALLCONV void	Perl_gv_fullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain);
#define PERL_ARGS_ASSERT_GV_FULLNAME4	\
	assert(sv); assert(gv)
PERL_CALLCONV CV*	Perl_gv_handler(pTHX_ HV* stash, I32 id)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GV_HANDLER

/* PERL_CALLCONV void	gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi); */
#define PERL_ARGS_ASSERT_GV_INIT
PERL_CALLCONV void	Perl_gv_init_pv(pTHX_ GV* gv, HV* stash, const char* name, U32 flags);
#define PERL_ARGS_ASSERT_GV_INIT_PV	\
	assert(gv); assert(name)
PERL_CALLCONV void	Perl_gv_init_pvn(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_GV_INIT_PVN	\
	assert(gv); assert(name)
PERL_CALLCONV void	Perl_gv_init_sv(pTHX_ GV* gv, HV* stash, SV* namesv, U32 flags);
#define PERL_ARGS_ASSERT_GV_INIT_SV	\
	assert(gv); assert(namesv)
PERL_CALLCONV void	Perl_gv_name_set(pTHX_ GV* gv, const char *name, U32 len, U32 flags);
#define PERL_ARGS_ASSERT_GV_NAME_SET	\
	assert(gv); assert(name)
PERL_CALLCONV GV *	Perl_gv_override(pTHX_ const char * const name, const STRLEN len);
#define PERL_ARGS_ASSERT_GV_OVERRIDE	\
	assert(name)
PERL_CALLCONV void	Perl_gv_setref(pTHX_ SV *const dsv, SV *const ssv);
#define PERL_ARGS_ASSERT_GV_SETREF	\
	assert(dsv); assert(ssv)
PERL_CALLCONV HV*	Perl_gv_stashpv(pTHX_ const char* name, I32 flags);
#define PERL_ARGS_ASSERT_GV_STASHPV	\
	assert(name)
PERL_CALLCONV HV*	Perl_gv_stashpvn(pTHX_ const char* name, U32 namelen, I32 flags);
#define PERL_ARGS_ASSERT_GV_STASHPVN	\
	assert(name)
PERL_CALLCONV HV*	Perl_gv_stashsv(pTHX_ SV* sv, I32 flags);
#define PERL_ARGS_ASSERT_GV_STASHSV	\
	assert(sv)
PERL_CALLCONV void	Perl_gv_try_downgrade(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE	\
	assert(gv)
PERL_CALLCONV struct xpvhv_aux*	Perl_hv_auxalloc(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_AUXALLOC	\
	assert(hv)
PERL_CALLCONV AV**	Perl_hv_backreferences_p(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P	\
	assert(hv)
PERL_CALLCONV SV*	Perl_hv_bucket_ratio(pTHX_ HV *hv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_BUCKET_RATIO	\
	assert(hv)

PERL_CALLCONV void	Perl_hv_clear(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_CLEAR
PERL_CALLCONV void	Perl_hv_clear_placeholders(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS	\
	assert(hv)
PERL_CALLCONV void*	Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char* key, STRLEN klen, int flags, int action, SV *val, U32 hash);
#define PERL_ARGS_ASSERT_HV_COMMON
PERL_CALLCONV void*	Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 klen_i32, const int action, SV *val, const U32 hash);
#define PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN	\
	assert(key)
PERL_CALLCONV HV *	Perl_hv_copy_hints_hv(pTHX_ HV *const ohv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_COPY_HINTS_HV

PERL_CALLCONV void	Perl_hv_delayfree_ent(pTHX_ HV *notused, HE *entry);
#define PERL_ARGS_ASSERT_HV_DELAYFREE_ENT
#ifndef NO_MATHOMS
PERL_CALLCONV SV*	Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags);
#define PERL_ARGS_ASSERT_HV_DELETE	\
	assert(key)
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV SV*	Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash);
#define PERL_ARGS_ASSERT_HV_DELETE_ENT	\
	assert(keysv)
#endif
PERL_CALLCONV HE**	Perl_hv_eiter_p(pTHX_ HV *hv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_EITER_P	\
	assert(hv)

PERL_CALLCONV void	Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter);
#define PERL_ARGS_ASSERT_HV_EITER_SET	\
	assert(hv)
PERL_CALLCONV void	Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
#define PERL_ARGS_ASSERT_HV_ENAME_ADD	\
	assert(hv); assert(name)
PERL_CALLCONV void	Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
#define PERL_ARGS_ASSERT_HV_ENAME_DELETE	\
	assert(hv); assert(name)
#ifndef NO_MATHOMS
PERL_CALLCONV bool	Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_EXISTS	\
	assert(key)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV bool	Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_EXISTS_ENT	\
	assert(keysv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV SV**	Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval);
#define PERL_ARGS_ASSERT_HV_FETCH	\
	assert(key)
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV HE*	Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash);
#define PERL_ARGS_ASSERT_HV_FETCH_ENT	\
	assert(keysv)
#endif
PERL_CALLCONV STRLEN	Perl_hv_fill(pTHX_ HV *const hv);
#define PERL_ARGS_ASSERT_HV_FILL	\
	assert(hv)
PERL_CALLCONV void	Perl_hv_free_ent(pTHX_ HV *notused, HE *entry);
#define PERL_ARGS_ASSERT_HV_FREE_ENT
PERL_CALLCONV I32	Perl_hv_iterinit(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_ITERINIT	\
	assert(hv)
PERL_CALLCONV char*	Perl_hv_iterkey(pTHX_ HE* entry, I32* retlen)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_ITERKEY	\
	assert(entry); assert(retlen)

PERL_CALLCONV SV*	Perl_hv_iterkeysv(pTHX_ HE* entry)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_ITERKEYSV	\
	assert(entry)

#ifndef NO_MATHOMS
PERL_CALLCONV HE*	Perl_hv_iternext(pTHX_ HV *hv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_ITERNEXT	\
	assert(hv)
#endif

PERL_CALLCONV HE*	Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS	\
	assert(hv)

PERL_CALLCONV SV*	Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_ITERNEXTSV	\
	assert(hv); assert(key); assert(retlen)

PERL_CALLCONV SV*	Perl_hv_iterval(pTHX_ HV *hv, HE *entry)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_ITERVAL	\
	assert(hv); assert(entry)

PERL_CALLCONV void	Perl_hv_ksplit(pTHX_ HV *hv, IV newmax);
#define PERL_ARGS_ASSERT_HV_KSPLIT	\
	assert(hv)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how);
#define PERL_ARGS_ASSERT_HV_MAGIC	\
	assert(hv)
#endif
PERL_CALLCONV void	Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
#define PERL_ARGS_ASSERT_HV_NAME_SET	\
	assert(hv)
PERL_CALLCONV I32	Perl_hv_placeholders_get(pTHX_ const HV *hv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET	\
	assert(hv)

PERL_CALLCONV SSize_t*	Perl_hv_placeholders_p(pTHX_ HV *hv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P	\
	assert(hv)

PERL_CALLCONV void	Perl_hv_placeholders_set(pTHX_ HV *hv, I32 ph);
#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET	\
	assert(hv)
PERL_CALLCONV void	Perl_hv_pushkv(pTHX_ HV *hv, U32 flags);
#define PERL_ARGS_ASSERT_HV_PUSHKV	\
	assert(hv)
PERL_CALLCONV void	Perl_hv_rand_set(pTHX_ HV *hv, U32 new_xhv_rand);
#define PERL_ARGS_ASSERT_HV_RAND_SET	\
	assert(hv)
PERL_CALLCONV I32*	Perl_hv_riter_p(pTHX_ HV *hv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_RITER_P	\
	assert(hv)

PERL_CALLCONV void	Perl_hv_riter_set(pTHX_ HV *hv, I32 riter);
#define PERL_ARGS_ASSERT_HV_RITER_SET	\
	assert(hv)
PERL_CALLCONV SV*	Perl_hv_scalar(pTHX_ HV *hv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HV_SCALAR	\
	assert(hv)

#ifndef NO_MATHOMS
PERL_CALLCONV SV**	Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash);
#define PERL_ARGS_ASSERT_HV_STORE
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV HE*	Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash);
#define PERL_ARGS_ASSERT_HV_STORE_ENT
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV SV**	Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags);
#define PERL_ARGS_ASSERT_HV_STORE_FLAGS
#endif
/* PERL_CALLCONV void	hv_undef(pTHX_ HV *hv); */
#define PERL_ARGS_ASSERT_HV_UNDEF
PERL_CALLCONV void	Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags);
#define PERL_ARGS_ASSERT_HV_UNDEF_FLAGS
/* PERL_CALLCONV I32	ibcmp(pTHX_ const char* a, const char* b, I32 len)
			__attribute__warn_unused_result__
			__attribute__pure__; */
#define PERL_ARGS_ASSERT_IBCMP

/* PERL_CALLCONV I32	ibcmp_locale(pTHX_ const char* a, const char* b, I32 len)
			__attribute__warn_unused_result__
			__attribute__pure__; */
#define PERL_ARGS_ASSERT_IBCMP_LOCALE

/* PERL_CALLCONV I32	ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
#define PERL_ARGS_ASSERT_IBCMP_UTF8
PERL_CALLCONV void	Perl_init_argv_symbols(pTHX_ int argc, char **argv);
#define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS	\
	assert(argv)
PERL_CALLCONV void	Perl_init_constants(pTHX);
#define PERL_ARGS_ASSERT_INIT_CONSTANTS
PERL_CALLCONV void	Perl_init_dbargs(pTHX);
#define PERL_ARGS_ASSERT_INIT_DBARGS
PERL_CALLCONV void	Perl_init_debugger(pTHX);
#define PERL_ARGS_ASSERT_INIT_DEBUGGER
PERL_CALLCONV int	Perl_init_i18nl10n(pTHX_ int printwarn);
#define PERL_ARGS_ASSERT_INIT_I18NL10N
#ifndef NO_MATHOMS
PERL_CALLCONV int	Perl_init_i18nl14n(pTHX_ int printwarn)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_INIT_I18NL14N
#endif

PERL_CALLCONV void	Perl_init_named_cv(pTHX_ CV *cv, OP *nameop);
#define PERL_ARGS_ASSERT_INIT_NAMED_CV	\
	assert(cv); assert(nameop)
PERL_CALLCONV void	Perl_init_stacks(pTHX);
#define PERL_ARGS_ASSERT_INIT_STACKS
PERL_CALLCONV void	Perl_init_tm(pTHX_ struct tm *ptm);
#define PERL_ARGS_ASSERT_INIT_TM	\
	assert(ptm)
PERL_CALLCONV void	Perl_init_uniprops(pTHX);
#define PERL_ARGS_ASSERT_INIT_UNIPROPS
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_instr(const char* big, const char* little)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_INSTR	\
	assert(big); assert(little)
#endif

PERL_CALLCONV U32	Perl_intro_my(pTHX);
#define PERL_ARGS_ASSERT_INTRO_MY
PERL_CALLCONV OP*	Perl_invert(pTHX_ OP* cmd)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVERT

PERL_CALLCONV void	Perl_invmap_dump(pTHX_ SV* invlist, UV * map);
#define PERL_ARGS_ASSERT_INVMAP_DUMP	\
	assert(invlist); assert(map)
PERL_CALLCONV bool	Perl_io_close(pTHX_ IO* io, GV *gv, bool not_implicit, bool warn_on_fail);
#define PERL_ARGS_ASSERT_IO_CLOSE	\
	assert(io)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE Size_t	Perl_isC9_STRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISC9_STRICT_UTF8_CHAR	\
	assert(s0); assert(e)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE Size_t	Perl_isSTRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISSTRICT_UTF8_CHAR	\
	assert(s0); assert(e)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE Size_t	Perl_isUTF8_CHAR(const U8 * const s0, const U8 * const e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISUTF8_CHAR	\
	assert(s0); assert(e)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE Size_t	Perl_isUTF8_CHAR_flags(const U8 * const s0, const U8 * const e, const U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISUTF8_CHAR_FLAGS	\
	assert(s0); assert(e)
#endif

/* PERL_CALLCONV bool	is_ascii_string(const U8* const s, STRLEN len)
			__attribute__warn_unused_result__
			__attribute__pure__; */
#define PERL_ARGS_ASSERT_IS_ASCII_STRING

/* PERL_CALLCONV bool	is_c9strict_utf8_string(const U8 *s, STRLEN len)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING

/* PERL_CALLCONV bool	is_c9strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOC
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_c9strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN	\
	assert(s)
#endif
/* PERL_CALLCONV bool	is_invariant_string(const U8* const s, STRLEN len)
			__attribute__warn_unused_result__
			__attribute__pure__; */
#define PERL_ARGS_ASSERT_IS_INVARIANT_STRING

PERL_CALLCONV I32	Perl_is_lvalue_sub(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_LVALUE_SUB

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_SAFE_SYSCALL	\
	assert(pv); assert(what); assert(op_name)
#endif

/* PERL_CALLCONV bool	is_strict_utf8_string(const U8 *s, STRLEN len)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING

/* PERL_CALLCONV bool	is_strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOC
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN	\
	assert(s)
#endif
PERL_CALLCONV Size_t	Perl_is_utf8_FF_helper_(const U8 * const s0, const U8 * const e, const bool require_partial)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_IS_UTF8_FF_HELPER_	\
	assert(s0); assert(e)

#ifndef NO_MATHOMS
PERL_CALLCONV STRLEN	Perl_is_utf8_char(const U8 *s)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_IS_UTF8_CHAR	\
	assert(s)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV STRLEN	Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end);
#define PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF	\
	assert(buf); assert(buf_end)
#endif
PERL_CALLCONV STRLEN	Perl_is_utf8_char_helper_(const U8 * const s, const U8 * e, const U32 flags)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_IS_UTF8_CHAR_HELPER_	\
	assert(s); assert(e)

/* PERL_CALLCONV bool	is_utf8_fixed_width_buf_flags(const U8 * const s, STRLEN len, const U32 flags); */
#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_FLAGS
/* PERL_CALLCONV bool	is_utf8_fixed_width_buf_loc_flags(const U8 * const s, STRLEN len, const U8 **ep, const U32 flags); */
#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOC_FLAGS
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS	\
	assert(s)
#endif
/* PERL_CALLCONV bool	is_utf8_invariant_string(const U8* const s, STRLEN len)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_utf8_invariant_string_loc(const U8* const s, STRLEN len, const U8 ** ep)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING_LOC	\
	assert(s)
#endif

/* PERL_CALLCONV bool	is_utf8_string(const U8 *s, STRLEN len)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_IS_UTF8_STRING

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_utf8_string_flags(const U8 *s, STRLEN len, const U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS	\
	assert(s)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV bool	Perl_is_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep);
#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC	\
	assert(s); assert(ep)
#endif
/* PERL_CALLCONV bool	is_utf8_string_loc_flags(const U8 *s, STRLEN len, const U8 **ep, const U32 flags); */
#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC_FLAGS
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN	\
	assert(s)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_utf8_string_loclen_flags(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS	\
	assert(s)
#endif
/* PERL_CALLCONV bool	is_utf8_valid_partial_char(const U8 * const s0, const U8 * const e)
			__attribute__warn_unused_result__
			__attribute__pure__; */
#define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_utf8_valid_partial_char_flags(const U8 * const s0, const U8 * const e, const U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS	\
	assert(s0); assert(e)
#endif

PERL_CALLCONV bool	Perl_isinfnan(NV nv)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_ISINFNAN

PERL_CALLCONV bool	Perl_isinfnansv(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_ISINFNANSV	\
	assert(sv)
PERL_CALLCONV OP*	Perl_jmaybe(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_JMAYBE	\
	assert(o)
PERL_CALLCONV I32	Perl_keyword(pTHX_ const char *name, I32 len, bool all_keywords)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_KEYWORD	\
	assert(name)

PERL_CALLCONV int	Perl_keyword_plugin_standard(pTHX_ char* keyword_ptr, STRLEN keyword_len, OP** op_ptr);
#define PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD	\
	assert(keyword_ptr); assert(op_ptr)
PERL_CALLCONV void	Perl_leave_adjust_stacks(pTHX_ SV **from_sp, SV **to_sp, U8 gimme, int filter);
#define PERL_ARGS_ASSERT_LEAVE_ADJUST_STACKS	\
	assert(from_sp); assert(to_sp)
PERL_CALLCONV void	Perl_leave_scope(pTHX_ I32 base);
#define PERL_ARGS_ASSERT_LEAVE_SCOPE
PERL_CALLCONV bool	Perl_lex_bufutf8(pTHX);
#define PERL_ARGS_ASSERT_LEX_BUFUTF8
PERL_CALLCONV void	Perl_lex_discard_to(pTHX_ char* ptr);
#define PERL_ARGS_ASSERT_LEX_DISCARD_TO	\
	assert(ptr)
PERL_CALLCONV char*	Perl_lex_grow_linestr(pTHX_ STRLEN len);
#define PERL_ARGS_ASSERT_LEX_GROW_LINESTR
PERL_CALLCONV bool	Perl_lex_next_chunk(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_LEX_NEXT_CHUNK
PERL_CALLCONV I32	Perl_lex_peek_unichar(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_LEX_PEEK_UNICHAR
PERL_CALLCONV void	Perl_lex_read_space(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_LEX_READ_SPACE
PERL_CALLCONV void	Perl_lex_read_to(pTHX_ char* ptr);
#define PERL_ARGS_ASSERT_LEX_READ_TO	\
	assert(ptr)
PERL_CALLCONV I32	Perl_lex_read_unichar(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_LEX_READ_UNICHAR
PERL_CALLCONV void	Perl_lex_start(pTHX_ SV* line, PerlIO *rsfp, U32 flags);
#define PERL_ARGS_ASSERT_LEX_START
PERL_CALLCONV void	Perl_lex_stuff_pv(pTHX_ const char* pv, U32 flags);
#define PERL_ARGS_ASSERT_LEX_STUFF_PV	\
	assert(pv)
PERL_CALLCONV void	Perl_lex_stuff_pvn(pTHX_ const char* pv, STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_LEX_STUFF_PVN	\
	assert(pv)
PERL_CALLCONV void	Perl_lex_stuff_sv(pTHX_ SV* sv, U32 flags);
#define PERL_ARGS_ASSERT_LEX_STUFF_SV	\
	assert(sv)
PERL_CALLCONV void	Perl_lex_unstuff(pTHX_ char* ptr);
#define PERL_ARGS_ASSERT_LEX_UNSTUFF	\
	assert(ptr)
PERL_CALLCONV OP*	Perl_list(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_LIST
PERL_CALLCONV HV*	Perl_load_charnames(pTHX_ SV * char_name, const char * context, const STRLEN context_len, const char ** error_msg)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_LOAD_CHARNAMES	\
	assert(char_name); assert(context); assert(error_msg)

PERL_CALLCONV void	Perl_load_module(pTHX_ U32 flags, SV* name, SV* ver, ...);
#define PERL_ARGS_ASSERT_LOAD_MODULE	\
	assert(name)
PERL_CALLCONV OP*	Perl_localize(pTHX_ OP *o, I32 lex);
#define PERL_ARGS_ASSERT_LOCALIZE	\
	assert(o)
PERL_CALLCONV I32	Perl_looks_like_number(pTHX_ SV *const sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER	\
	assert(sv)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE unsigned	Perl_lsbit_pos32(U32 word)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_LSBIT_POS32
#endif

PERL_CALLCONV int	Perl_magic_clear_all_env(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_cleararylen_p(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_CLEARARYLEN_P	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_clearenv(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_CLEARENV	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_clearhint(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_CLEARHINT	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_clearhints(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_CLEARHINTS	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_clearisa(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_CLEARISA	\
	assert(mg)
PERL_CALLCONV int	Perl_magic_clearpack(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_CLEARPACK	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_clearsig(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_CLEARSIG	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_copycallchecker(pTHX_ SV* sv, MAGIC *mg, SV *nsv, const char *name, I32 namlen);
#define PERL_ARGS_ASSERT_MAGIC_COPYCALLCHECKER	\
	assert(sv); assert(mg); assert(nsv)
PERL_CALLCONV void	Perl_magic_dump(pTHX_ const MAGIC *mg);
#define PERL_ARGS_ASSERT_MAGIC_DUMP
PERL_CALLCONV int	Perl_magic_existspack(pTHX_ SV* sv, const MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_EXISTSPACK	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_freearylen_p(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_freemglob(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_FREEMGLOB	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_freeovrld(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_FREEOVRLD	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_freeutf8(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_FREEUTF8	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_get(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GET	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getarylen(pTHX_ SV* sv, const MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETARYLEN	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getdebugvar(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETDEBUGVAR	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getdefelem(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETDEFELEM	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getnkeys(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETNKEYS	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getpack(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETPACK	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getpos(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETPOS	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getsig(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETSIG	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getsubstr(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETSUBSTR	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_gettaint(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETTAINT	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getuvar(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETUVAR	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_getvec(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_GETVEC	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
#define PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS	\
	assert(sv); assert(mg)
PERL_CALLCONV SV*	Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, U32 argc, ...);
#define PERL_ARGS_ASSERT_MAGIC_METHCALL	\
	assert(sv); assert(mg); assert(meth)
PERL_CALLCONV int	Perl_magic_nextpack(pTHX_ SV *sv, MAGIC *mg, SV *key);
#define PERL_ARGS_ASSERT_MAGIC_NEXTPACK	\
	assert(sv); assert(mg); assert(key)
PERL_CALLCONV U32	Perl_magic_regdata_cnt(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_REGDATA_CNT	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_regdatum_get(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_REGDATUM_GET	\
	assert(sv); assert(mg)
PERL_CALLCONV SV*	Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg);
#define PERL_ARGS_ASSERT_MAGIC_SCALARPACK	\
	assert(hv); assert(mg)
PERL_CALLCONV int	Perl_magic_set(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SET	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_set_all_env(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setarylen(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETARYLEN	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setdbline(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETDBLINE	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setdebugvar(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETDEBUGVAR	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setdefelem(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETDEFELEM	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setenv(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETENV	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_sethint(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETHINT	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setisa(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETISA	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setlvref(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETLVREF	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setmglob(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETMGLOB	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setnkeys(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETNKEYS	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setnonelem(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETNONELEM	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setpack(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETPACK	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setpos(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETPOS	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setregexp(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETREGEXP	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setsig(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETSIG	\
	assert(mg)
PERL_CALLCONV int	Perl_magic_setsigall(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETSIGALL	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setsubstr(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETSUBSTR	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_settaint(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETTAINT	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setutf8(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETUTF8	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setuvar(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETUVAR	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setvec(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETVEC	\
	assert(sv); assert(mg)
PERL_CALLCONV U32	Perl_magic_sizepack(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SIZEPACK	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_WIPEPACK	\
	assert(sv); assert(mg)
PERL_CALLCONV Malloc_t	Perl_malloc(MEM_SIZE nbytes)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MALLOC

PERL_CALLCONV I32 *	Perl_markstack_grow(pTHX);
#define PERL_ARGS_ASSERT_MARKSTACK_GROW
PERL_CALLCONV SV*	Perl_mess(pTHX_ const char* pat, ...)
			__attribute__format__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_MESS	\
	assert(pat)

PERL_CALLCONV SV*	Perl_mess_sv(pTHX_ SV* basemsg, bool consume);
#define PERL_ARGS_ASSERT_MESS_SV	\
	assert(basemsg)
PERL_CALLCONV Free_t	Perl_mfree(Malloc_t where);
#define PERL_ARGS_ASSERT_MFREE
PERL_CALLCONV int	Perl_mg_clear(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_MG_CLEAR	\
	assert(sv)
PERL_CALLCONV int	Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen);
#define PERL_ARGS_ASSERT_MG_COPY	\
	assert(sv); assert(nsv)
PERL_CALLCONV MAGIC*	Perl_mg_find(const SV* sv, int type)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MG_FIND

PERL_CALLCONV MAGIC*	Perl_mg_find_mglob(pTHX_ SV* sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MG_FIND_MGLOB	\
	assert(sv)

PERL_CALLCONV MAGIC*	Perl_mg_findext(const SV* sv, int type, const MGVTBL *vtbl)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MG_FINDEXT

PERL_CALLCONV int	Perl_mg_free(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_MG_FREE	\
	assert(sv)
PERL_CALLCONV void	Perl_mg_free_type(pTHX_ SV* sv, int how);
#define PERL_ARGS_ASSERT_MG_FREE_TYPE	\
	assert(sv)
PERL_CALLCONV void	Perl_mg_freeext(pTHX_ SV* sv, int how, const MGVTBL *vtbl);
#define PERL_ARGS_ASSERT_MG_FREEEXT	\
	assert(sv)
PERL_CALLCONV int	Perl_mg_get(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_MG_GET	\
	assert(sv)
PERL_CALLCONV U32	Perl_mg_length(pTHX_ SV* sv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_MG_LENGTH	\
	assert(sv)

PERL_CALLCONV void	Perl_mg_localize(pTHX_ SV* sv, SV* nsv, bool setmagic);
#define PERL_ARGS_ASSERT_MG_LOCALIZE	\
	assert(sv); assert(nsv)
PERL_CALLCONV void	Perl_mg_magical(SV* sv);
#define PERL_ARGS_ASSERT_MG_MAGICAL	\
	assert(sv)
PERL_CALLCONV int	Perl_mg_set(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_MG_SET	\
	assert(sv)
PERL_CALLCONV I32	Perl_mg_size(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_MG_SIZE	\
	assert(sv)
PERL_CALLCONV void	Perl_mini_mktime(struct tm *ptm);
#define PERL_ARGS_ASSERT_MINI_MKTIME	\
	assert(ptm)
PERL_CALLCONV int	Perl_mode_from_discipline(pTHX_ const char* s, STRLEN len);
#define PERL_ARGS_ASSERT_MODE_FROM_DISCIPLINE
PERL_CALLCONV void *	Perl_more_bodies(pTHX_ const svtype sv_type, const size_t body_size, const size_t arena_size);
#define PERL_ARGS_ASSERT_MORE_BODIES
PERL_CALLCONV const char*	Perl_moreswitches(pTHX_ const char* s);
#define PERL_ARGS_ASSERT_MORESWITCHES	\
	assert(s)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE char *	Perl_mortal_getenv(const char * str)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MORTAL_GETENV	\
	assert(str)
#endif

PERL_CALLCONV const struct mro_alg *	Perl_mro_get_from_name(pTHX_ SV *name);
#define PERL_ARGS_ASSERT_MRO_GET_FROM_NAME	\
	assert(name)
PERL_CALLCONV AV*	Perl_mro_get_linear_isa(pTHX_ HV* stash);
#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA	\
	assert(stash)
PERL_CALLCONV SV*	Perl_mro_get_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which);
#define PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA	\
	assert(smeta); assert(which)
PERL_CALLCONV void	Perl_mro_isa_changed_in(pTHX_ HV* stash);
#define PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN	\
	assert(stash)
PERL_CALLCONV struct mro_meta*	Perl_mro_meta_init(pTHX_ HV* stash);
#define PERL_ARGS_ASSERT_MRO_META_INIT	\
	assert(stash)
PERL_CALLCONV void	Perl_mro_method_changed_in(pTHX_ HV* stash);
#define PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN	\
	assert(stash)
PERL_CALLCONV void	Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash, const GV * const gv, U32 flags);
#define PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED	\
	assert(gv)
PERL_CALLCONV void	Perl_mro_register(pTHX_ const struct mro_alg *mro);
#define PERL_ARGS_ASSERT_MRO_REGISTER	\
	assert(mro)
PERL_CALLCONV void	Perl_mro_set_mro(pTHX_ struct mro_meta *const meta, SV *const name);
#define PERL_ARGS_ASSERT_MRO_SET_MRO	\
	assert(meta); assert(name)
PERL_CALLCONV SV*	Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which, SV *const data);
#define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA	\
	assert(smeta); assert(which); assert(data)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE unsigned	Perl_msbit_pos32(U32 word)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MSBIT_POS32
#endif

PERL_CALLCONV SV*	Perl_multiconcat_stringify(pTHX_ const OP* o);
#define PERL_ARGS_ASSERT_MULTICONCAT_STRINGIFY	\
	assert(o)
PERL_CALLCONV SV*	Perl_multideref_stringify(pTHX_ const OP* o, CV *cv);
#define PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY	\
	assert(o)
PERL_CALLCONV NV	Perl_my_atof(pTHX_ const char *s);
#define PERL_ARGS_ASSERT_MY_ATOF	\
	assert(s)
PERL_CALLCONV char*	Perl_my_atof2(pTHX_ const char *orig, NV* value);
#define PERL_ARGS_ASSERT_MY_ATOF2	\
	assert(orig); assert(value)
PERL_CALLCONV char*	Perl_my_atof3(pTHX_ const char *orig, NV* value, const STRLEN len);
#define PERL_ARGS_ASSERT_MY_ATOF3	\
	assert(orig); assert(value)
PERL_CALLCONV OP *	Perl_my_attrs(pTHX_ OP *o, OP *attrs);
#define PERL_ARGS_ASSERT_MY_ATTRS	\
	assert(o)
PERL_CALLCONV void	Perl_my_clearenv(pTHX);
#define PERL_ARGS_ASSERT_MY_CLEARENV
PERL_CALLCONV int	Perl_my_dirfd(DIR* dir);
#define PERL_ARGS_ASSERT_MY_DIRFD
PERL_CALLCONV_NO_RET void	Perl_my_exit(pTHX_ U32 status)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_MY_EXIT

PERL_CALLCONV_NO_RET void	Perl_my_failure_exit(pTHX)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_MY_FAILURE_EXIT

PERL_CALLCONV I32	Perl_my_fflush_all(pTHX);
#define PERL_ARGS_ASSERT_MY_FFLUSH_ALL
PERL_CALLCONV Pid_t	Perl_my_fork(void);
#define PERL_ARGS_ASSERT_MY_FORK
/* PERL_CALLCONV I32	my_lstat(pTHX); */
#define PERL_ARGS_ASSERT_MY_LSTAT
PERL_CALLCONV I32	Perl_my_lstat_flags(pTHX_ const U32 flags);
#define PERL_ARGS_ASSERT_MY_LSTAT_FLAGS
PERL_CALLCONV int	Perl_my_mkostemp_cloexec(char *templte, int flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MY_MKOSTEMP_CLOEXEC	\
	assert(templte)

PERL_CALLCONV int	Perl_my_mkstemp_cloexec(char *templte)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MY_MKSTEMP_CLOEXEC	\
	assert(templte)

PERL_CALLCONV PerlIO*	Perl_my_popen_list(pTHX_ const char* mode, int n, SV ** args);
#define PERL_ARGS_ASSERT_MY_POPEN_LIST	\
	assert(mode); assert(args)
PERL_CALLCONV void	Perl_my_setenv(pTHX_ const char* nam, const char* val);
#define PERL_ARGS_ASSERT_MY_SETENV
PERL_CALLCONV int	Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...)
			__attribute__format__(__printf__,3,4);
#define PERL_ARGS_ASSERT_MY_SNPRINTF	\
	assert(buffer); assert(format)

PERL_CALLCONV int	Perl_my_socketpair(int family, int type, int protocol, int fd[2]);
#define PERL_ARGS_ASSERT_MY_SOCKETPAIR
/* PERL_CALLCONV I32	my_stat(pTHX); */
#define PERL_ARGS_ASSERT_MY_STAT
PERL_CALLCONV I32	Perl_my_stat_flags(pTHX_ const U32 flags);
#define PERL_ARGS_ASSERT_MY_STAT_FLAGS
PERL_CALLCONV char*	Perl_my_strerror(pTHX_ const int errnum);
#define PERL_ARGS_ASSERT_MY_STRERROR
PERL_CALLCONV char *	Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst)
			__attribute__format__(__strftime__,pTHX_1,0);
#define PERL_ARGS_ASSERT_MY_STRFTIME	\
	assert(fmt)

PERL_CALLCONV NV	Perl_my_strtod(const char * const s, char ** e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MY_STRTOD	\
	assert(s)

PERL_CALLCONV void	Perl_my_unexec(pTHX);
#define PERL_ARGS_ASSERT_MY_UNEXEC
PERL_CALLCONV int	Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap);
#define PERL_ARGS_ASSERT_MY_VSNPRINTF	\
	assert(buffer); assert(format)
PERL_CALLCONV OP*	Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
#define PERL_ARGS_ASSERT_NEWANONATTRSUB
PERL_CALLCONV OP*	Perl_newANONHASH(pTHX_ OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWANONHASH

PERL_CALLCONV OP*	Perl_newANONLIST(pTHX_ OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWANONLIST

PERL_CALLCONV OP*	Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block);
#define PERL_ARGS_ASSERT_NEWANONSUB
PERL_CALLCONV OP*	Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWASSIGNOP

/* PERL_CALLCONV CV*	newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); */
#define PERL_ARGS_ASSERT_NEWATTRSUB
PERL_CALLCONV CV*	Perl_newATTRSUB_x(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block, bool o_is_gv);
#define PERL_ARGS_ASSERT_NEWATTRSUB_X
#ifndef NO_MATHOMS
PERL_CALLCONV AV*	Perl_newAV(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWAV
#endif

PERL_CALLCONV OP*	Perl_newAVREF(pTHX_ OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWAVREF	\
	assert(o)

/* PERL_CALLCONV AV*	newAV_alloc_x(pTHX_ SSize_t size)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_NEWAV_ALLOC_X

/* PERL_CALLCONV AV*	newAV_alloc_xz(pTHX_ SSize_t size)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_NEWAV_ALLOC_XZ

PERL_CALLCONV OP*	Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWBINOP

PERL_CALLCONV OP*	Perl_newCONDOP(pTHX_ I32 flags, OP* first, OP* trueop, OP* falseop)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWCONDOP	\
	assert(first)

PERL_CALLCONV CV*	Perl_newCONSTSUB(pTHX_ HV* stash, const char* name, SV* sv);
#define PERL_ARGS_ASSERT_NEWCONSTSUB
PERL_CALLCONV CV*	Perl_newCONSTSUB_flags(pTHX_ HV* stash, const char* name, STRLEN len, U32 flags, SV* sv);
#define PERL_ARGS_ASSERT_NEWCONSTSUB_FLAGS
PERL_CALLCONV OP*	Perl_newCVREF(pTHX_ I32 flags, OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWCVREF

PERL_CALLCONV OP*	Perl_newDEFEROP(pTHX_ I32 flags, OP *block)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWDEFEROP	\
	assert(block)

PERL_CALLCONV OP*	Perl_newDEFSVOP(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWDEFSVOP

PERL_CALLCONV void	Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block);
#define PERL_ARGS_ASSERT_NEWFORM
PERL_CALLCONV OP*	Perl_newFOROP(pTHX_ I32 flags, OP* sv, OP* expr, OP* block, OP* cont)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWFOROP	\
	assert(expr)

PERL_CALLCONV OP*	Perl_newGIVENOP(pTHX_ OP* cond, OP* block, PADOFFSET defsv_off)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWGIVENOP	\
	assert(cond); assert(block)

PERL_CALLCONV GP *	Perl_newGP(pTHX_ GV *const gv);
#define PERL_ARGS_ASSERT_NEWGP	\
	assert(gv)
PERL_CALLCONV OP*	Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWGVOP	\
	assert(gv)

PERL_CALLCONV OP*	Perl_newGVREF(pTHX_ I32 type, OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWGVREF

/* PERL_CALLCONV GV*	newGVgen(pTHX_ const char* pack); */
#define PERL_ARGS_ASSERT_NEWGVGEN
PERL_CALLCONV GV*	Perl_newGVgen_flags(pTHX_ const char* pack, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWGVGEN_FLAGS	\
	assert(pack)

#ifndef NO_MATHOMS
PERL_CALLCONV HV*	Perl_newHV(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWHV
#endif

PERL_CALLCONV OP*	Perl_newHVREF(pTHX_ OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWHVREF	\
	assert(o)

PERL_CALLCONV HV*	Perl_newHVhv(pTHX_ HV *hv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWHVHV

#ifndef NO_MATHOMS
PERL_CALLCONV IO*	Perl_newIO(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWIO
#endif

PERL_CALLCONV OP*	Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWLISTOP

PERL_CALLCONV OP*	Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWLOGOP	\
	assert(first); assert(other)

PERL_CALLCONV OP*	Perl_newLOOPEX(pTHX_ I32 type, OP* label)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWLOOPEX	\
	assert(label)

PERL_CALLCONV OP*	Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWLOOPOP

PERL_CALLCONV OP*	Perl_newMETHOP(pTHX_ I32 type, I32 flags, OP* dynamic_meth)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWMETHOP	\
	assert(dynamic_meth)

PERL_CALLCONV OP*	Perl_newMETHOP_named(pTHX_ I32 type, I32 flags, SV* const_meth)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWMETHOP_NAMED	\
	assert(const_meth)

PERL_CALLCONV CV *	Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
#define PERL_ARGS_ASSERT_NEWMYSUB	\
	assert(o)
PERL_CALLCONV OP*	Perl_newNULLLIST(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWNULLLIST

PERL_CALLCONV OP*	Perl_newOP(pTHX_ I32 optype, I32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWOP

PERL_CALLCONV PADNAMELIST *	Perl_newPADNAMELIST(size_t max)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWPADNAMELIST

PERL_CALLCONV PADNAME *	Perl_newPADNAMEouter(PADNAME *outer)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWPADNAMEOUTER	\
	assert(outer)

PERL_CALLCONV PADNAME *	Perl_newPADNAMEpvn(const char *s, STRLEN len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWPADNAMEPVN	\
	assert(s)

PERL_CALLCONV OP*	Perl_newPMOP(pTHX_ I32 type, I32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWPMOP

PERL_CALLCONV void	Perl_newPROG(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_NEWPROG	\
	assert(o)
PERL_CALLCONV OP*	Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWPVOP

PERL_CALLCONV OP*	Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWRANGE	\
	assert(left); assert(right)

PERL_CALLCONV SV*	Perl_newRV(pTHX_ SV *const sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWRV	\
	assert(sv)

PERL_CALLCONV SV*	Perl_newRV_noinc(pTHX_ SV *const tmpRef)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWRV_NOINC	\
	assert(tmpRef)

PERL_CALLCONV OP*	Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSLICEOP

PERL_CALLCONV OP*	Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSTATEOP

PERL_CALLCONV CV*	Perl_newSTUB(pTHX_ GV *gv, bool fake);
#define PERL_ARGS_ASSERT_NEWSTUB	\
	assert(gv)
#ifndef NO_MATHOMS
PERL_CALLCONV CV*	Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block);
#define PERL_ARGS_ASSERT_NEWSUB
#endif
PERL_CALLCONV SV*	Perl_newSV(pTHX_ const STRLEN len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSV

PERL_CALLCONV OP*	Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVOP	\
	assert(sv)

PERL_CALLCONV OP*	Perl_newSVREF(pTHX_ OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVREF	\
	assert(o)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE SV*	Perl_newSV_type(pTHX_ const svtype type)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSV_TYPE
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE SV*	Perl_newSV_type_mortal(pTHX_ const svtype type)
			__attribute__warn_unused_result__
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_NEWSV_TYPE_MORTAL
#endif

PERL_CALLCONV SV*	Perl_newSVavdefelem(pTHX_ AV *av, SSize_t ix, bool extendible)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVAVDEFELEM	\
	assert(av)

PERL_CALLCONV SV*	Perl_newSVhek(pTHX_ const HEK *const hek)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVHEK

PERL_CALLCONV SV*	Perl_newSViv(pTHX_ const IV i)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVIV

PERL_CALLCONV SV*	Perl_newSVnv(pTHX_ const NV n)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVNV

PERL_CALLCONV SV*	Perl_newSVpv(pTHX_ const char *const s, const STRLEN len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPV

PERL_CALLCONV SV*	Perl_newSVpv_share(pTHX_ const char* s, U32 hash)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPV_SHARE

PERL_CALLCONV SV*	Perl_newSVpvf(pTHX_ const char *const pat, ...)
			__attribute__warn_unused_result__
			__attribute__format__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_NEWSVPVF	\
	assert(pat)

PERL_CALLCONV SV*	Perl_newSVpvn(pTHX_ const char *const buffer, const STRLEN len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPVN

PERL_CALLCONV SV*	Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPVN_FLAGS

PERL_CALLCONV SV*	Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPVN_SHARE

PERL_CALLCONV SV*	Perl_newSVrv(pTHX_ SV *const rv, const char *const classname);
#define PERL_ARGS_ASSERT_NEWSVRV	\
	assert(rv)
#ifndef NO_MATHOMS
PERL_CALLCONV SV*	Perl_newSVsv(pTHX_ SV *const old)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVSV
#endif

PERL_CALLCONV SV*	Perl_newSVsv_flags(pTHX_ SV *const old, I32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVSV_FLAGS

/* PERL_CALLCONV SV*	newSVsv_nomg(pTHX_ SV *const old)
			__attribute__warn_unused_result__; */
#define PERL_ARGS_ASSERT_NEWSVSV_NOMG

PERL_CALLCONV SV*	Perl_newSVuv(pTHX_ const UV u)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVUV

PERL_CALLCONV OP*	Perl_newTRYCATCHOP(pTHX_ I32 flags, OP* tryblock, OP *catchvar, OP* catchblock)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWTRYCATCHOP	\
	assert(tryblock); assert(catchvar); assert(catchblock)

PERL_CALLCONV OP*	Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWUNOP

PERL_CALLCONV OP*	Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP* first, UNOP_AUX_item *aux)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWUNOP_AUX

PERL_CALLCONV OP*	Perl_newWHENOP(pTHX_ OP* cond, OP* block)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWWHENOP	\
	assert(block)

PERL_CALLCONV OP*	Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, OP* expr, OP* block, OP* cont, I32 has_my)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWWHILEOP

PERL_CALLCONV CV*	Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename);
#define PERL_ARGS_ASSERT_NEWXS	\
	assert(subaddr); assert(filename)
PERL_CALLCONV CV *	Perl_newXS_deffile(pTHX_ const char *name, XSUBADDR_t subaddr);
#define PERL_ARGS_ASSERT_NEWXS_DEFFILE	\
	assert(name); assert(subaddr)
PERL_CALLCONV CV *	Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags);
#define PERL_ARGS_ASSERT_NEWXS_FLAGS	\
	assert(subaddr); assert(filename)
PERL_CALLCONV CV *	Perl_newXS_len_flags(pTHX_ const char *name, STRLEN len, XSUBADDR_t subaddr, const char *const filename, const char *const proto, SV **const_svp, U32 flags);
#define PERL_ARGS_ASSERT_NEWXS_LEN_FLAGS	\
	assert(subaddr)
PERL_CALLCONV PERL_SI*	Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEW_STACKINFO

PERL_CALLCONV SV*	Perl_new_version(pTHX_ SV *ver);
#define PERL_ARGS_ASSERT_NEW_VERSION	\
	assert(ver)
PERL_CALLCONV STRLEN *	Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, STRLEN size)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD	\
	assert(bits)

PERL_CALLCONV PerlIO*	Perl_nextargv(pTHX_ GV* gv, bool nomagicopen);
#define PERL_ARGS_ASSERT_NEXTARGV	\
	assert(gv)
PERL_CALLCONV char*	Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_NINSTR	\
	assert(big); assert(bigend); assert(little); assert(lend)

PERL_CALLCONV void	Perl_no_bareword_filehandle(pTHX_ const char *fhname);
#define PERL_ARGS_ASSERT_NO_BAREWORD_FILEHANDLE	\
	assert(fhname)
PERL_CALLCONV_NO_RET void	Perl_noperl_die(const char* pat, ...)
			__attribute__noreturn__
			__attribute__format__(__printf__,1,2);
#define PERL_ARGS_ASSERT_NOPERL_DIE	\
	assert(pat)

PERL_CALLCONV int	Perl_nothreadhook(pTHX);
#define PERL_ARGS_ASSERT_NOTHREADHOOK
PERL_CALLCONV void	Perl_notify_parser_that_changed_to_utf8(pTHX);
#define PERL_ARGS_ASSERT_NOTIFY_PARSER_THAT_CHANGED_TO_UTF8
PERL_CALLCONV OP*	Perl_oopsAV(pTHX_ OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_OOPSAV	\
	assert(o)

PERL_CALLCONV OP*	Perl_oopsHV(pTHX_ OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_OOPSHV	\
	assert(o)

PERL_CALLCONV OP*	Perl_op_append_elem(pTHX_ I32 optype, OP* first, OP* last);
#define PERL_ARGS_ASSERT_OP_APPEND_ELEM
PERL_CALLCONV OP*	Perl_op_append_list(pTHX_ I32 optype, OP* first, OP* last);
#define PERL_ARGS_ASSERT_OP_APPEND_LIST
PERL_CALLCONV OPclass	Perl_op_class(pTHX_ const OP *o);
#define PERL_ARGS_ASSERT_OP_CLASS
PERL_CALLCONV void	Perl_op_clear(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_OP_CLEAR	\
	assert(o)
PERL_CALLCONV OP*	Perl_op_contextualize(pTHX_ OP* o, I32 context);
#define PERL_ARGS_ASSERT_OP_CONTEXTUALIZE	\
	assert(o)
PERL_CALLCONV OP*	Perl_op_convert_list(pTHX_ I32 optype, I32 flags, OP* o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_OP_CONVERT_LIST

PERL_CALLCONV void	Perl_op_dump(pTHX_ const OP *o);
#define PERL_ARGS_ASSERT_OP_DUMP	\
	assert(o)
PERL_CALLCONV void	Perl_op_free(pTHX_ OP* arg);
#define PERL_ARGS_ASSERT_OP_FREE
PERL_CALLCONV OP*	Perl_op_linklist(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_OP_LINKLIST	\
	assert(o)
/* PERL_CALLCONV OP*	op_lvalue(pTHX_ OP* o, I32 type); */
#define PERL_ARGS_ASSERT_OP_LVALUE
PERL_CALLCONV OP*	Perl_op_lvalue_flags(pTHX_ OP* o, I32 type, U32 flags);
#define PERL_ARGS_ASSERT_OP_LVALUE_FLAGS
PERL_CALLCONV void	Perl_op_null(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_OP_NULL	\
	assert(o)
PERL_CALLCONV OP*	Perl_op_parent(OP *o);
#define PERL_ARGS_ASSERT_OP_PARENT	\
	assert(o)
PERL_CALLCONV OP*	Perl_op_prepend_elem(pTHX_ I32 optype, OP* first, OP* last);
#define PERL_ARGS_ASSERT_OP_PREPEND_ELEM
PERL_CALLCONV void	Perl_op_refcnt_lock(pTHX);
#define PERL_ARGS_ASSERT_OP_REFCNT_LOCK
PERL_CALLCONV void	Perl_op_refcnt_unlock(pTHX);
#define PERL_ARGS_ASSERT_OP_REFCNT_UNLOCK
PERL_CALLCONV OP*	Perl_op_scope(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_OP_SCOPE
PERL_CALLCONV OP*	Perl_op_sibling_splice(OP *parent, OP *start, int del_count, OP* insert);
#define PERL_ARGS_ASSERT_OP_SIBLING_SPLICE
PERL_CALLCONV OP*	Perl_op_unscope(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_OP_UNSCOPE
PERL_CALLCONV OP*	Perl_op_wrap_finally(pTHX_ OP *block, OP *finally)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_OP_WRAP_FINALLY	\
	assert(block); assert(finally)

PERL_CALLCONV void	Perl_optimize_optree(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_OPTIMIZE_OPTREE	\
	assert(o)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_PACK_CAT	\
	assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist); assert(next_in_list)
#endif

PERL_CALLCONV void	Perl_package(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_PACKAGE	\
	assert(o)
PERL_CALLCONV void	Perl_package_version(pTHX_ OP* v);
#define PERL_ARGS_ASSERT_PACKAGE_VERSION	\
	assert(v)
PERL_CALLCONV void	Perl_packlist(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist);
#define PERL_ARGS_ASSERT_PACKLIST	\
	assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist)
PERL_CALLCONV PADOFFSET	Perl_pad_add_anon(pTHX_ CV* func, I32 optype);
#define PERL_ARGS_ASSERT_PAD_ADD_ANON	\
	assert(func)
PERL_CALLCONV PADOFFSET	Perl_pad_add_name_pv(pTHX_ const char *name, const U32 flags, HV *typestash, HV *ourstash);
#define PERL_ARGS_ASSERT_PAD_ADD_NAME_PV	\
	assert(name)
PERL_CALLCONV PADOFFSET	Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags, HV *typestash, HV *ourstash);
#define PERL_ARGS_ASSERT_PAD_ADD_NAME_PVN	\
	assert(namepv)
PERL_CALLCONV PADOFFSET	Perl_pad_add_name_sv(pTHX_ SV *name, U32 flags, HV *typestash, HV *ourstash);
#define PERL_ARGS_ASSERT_PAD_ADD_NAME_SV	\
	assert(name)
PERL_CALLCONV void	Perl_pad_add_weakref(pTHX_ CV* func);
#define PERL_ARGS_ASSERT_PAD_ADD_WEAKREF	\
	assert(func)
PERL_CALLCONV PADOFFSET	Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
#define PERL_ARGS_ASSERT_PAD_ALLOC
PERL_CALLCONV void	Perl_pad_block_start(pTHX_ int full);
#define PERL_ARGS_ASSERT_PAD_BLOCK_START
#ifndef NO_MATHOMS
PERL_CALLCONV HV*	Perl_pad_compname_type(pTHX_ const PADOFFSET po)
			__attribute__deprecated__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PAD_COMPNAME_TYPE
#endif

PERL_CALLCONV PADOFFSET	Perl_pad_findmy_pv(pTHX_ const char* name, U32 flags);
#define PERL_ARGS_ASSERT_PAD_FINDMY_PV	\
	assert(name)
PERL_CALLCONV PADOFFSET	Perl_pad_findmy_pvn(pTHX_ const char* namepv, STRLEN namelen, U32 flags);
#define PERL_ARGS_ASSERT_PAD_FINDMY_PVN	\
	assert(namepv)
PERL_CALLCONV PADOFFSET	Perl_pad_findmy_sv(pTHX_ SV* name, U32 flags);
#define PERL_ARGS_ASSERT_PAD_FINDMY_SV	\
	assert(name)
PERL_CALLCONV void	Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv);
#define PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS	\
	assert(padlist); assert(old_cv); assert(new_cv)
PERL_CALLCONV void	Perl_pad_free(pTHX_ PADOFFSET po);
#define PERL_ARGS_ASSERT_PAD_FREE
PERL_CALLCONV OP *	Perl_pad_leavemy(pTHX);
#define PERL_ARGS_ASSERT_PAD_LEAVEMY
PERL_CALLCONV PADLIST*	Perl_pad_new(pTHX_ int flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PAD_NEW

PERL_CALLCONV void	Perl_pad_push(pTHX_ PADLIST *padlist, int depth);
#define PERL_ARGS_ASSERT_PAD_PUSH	\
	assert(padlist)
PERL_CALLCONV void	Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust);
#define PERL_ARGS_ASSERT_PAD_SWIPE
PERL_CALLCONV void	Perl_pad_tidy(pTHX_ padtidy_type type);
#define PERL_ARGS_ASSERT_PAD_TIDY
PERL_CALLCONV PAD **	Perl_padlist_store(pTHX_ PADLIST *padlist, I32 key, PAD *val);
#define PERL_ARGS_ASSERT_PADLIST_STORE	\
	assert(padlist)
PERL_CALLCONV void	Perl_padname_free(pTHX_ PADNAME *pn);
#define PERL_ARGS_ASSERT_PADNAME_FREE	\
	assert(pn)
PERL_CALLCONV PADNAME *	Perl_padnamelist_fetch(PADNAMELIST *pnl, SSize_t key)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PADNAMELIST_FETCH	\
	assert(pnl)

PERL_CALLCONV void	Perl_padnamelist_free(pTHX_ PADNAMELIST *pnl);
#define PERL_ARGS_ASSERT_PADNAMELIST_FREE	\
	assert(pnl)
PERL_CALLCONV PADNAME **	Perl_padnamelist_store(pTHX_ PADNAMELIST *pnl, SSize_t key, PADNAME *val);
#define PERL_ARGS_ASSERT_PADNAMELIST_STORE	\
	assert(pnl)
PERL_CALLCONV OP*	Perl_parse_arithexpr(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_ARITHEXPR
PERL_CALLCONV OP*	Perl_parse_barestmt(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_BARESTMT
PERL_CALLCONV OP*	Perl_parse_block(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_BLOCK
PERL_CALLCONV OP*	Perl_parse_fullexpr(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_FULLEXPR
PERL_CALLCONV OP*	Perl_parse_fullstmt(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_FULLSTMT
PERL_CALLCONV SV*	Perl_parse_label(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_LABEL
PERL_CALLCONV OP*	Perl_parse_listexpr(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_LISTEXPR
PERL_CALLCONV OP*	Perl_parse_stmtseq(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_STMTSEQ
PERL_CALLCONV OP*	Perl_parse_subsignature(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_SUBSIGNATURE
PERL_CALLCONV OP*	Perl_parse_termexpr(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_TERMEXPR
PERL_CALLCONV U32	Perl_parse_unicode_opts(pTHX_ const char **popt);
#define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS	\
	assert(popt)
PERL_CALLCONV void	Perl_parser_free(pTHX_ const yy_parser *parser);
#define PERL_ARGS_ASSERT_PARSER_FREE	\
	assert(parser)
PERL_CALLCONV void	Perl_peep(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_PEEP
PERL_CALLCONV PerlInterpreter*	perl_alloc(void);
#define PERL_ARGS_ASSERT_PERL_ALLOC
PERL_CALLCONV void	perl_construct(PerlInterpreter *my_perl);
#define PERL_ARGS_ASSERT_PERL_CONSTRUCT	\
	assert(my_perl)
PERL_CALLCONV int	perl_destruct(PerlInterpreter *my_perl);
#define PERL_ARGS_ASSERT_PERL_DESTRUCT	\
	assert(my_perl)
PERL_CALLCONV void	perl_free(PerlInterpreter *my_perl);
#define PERL_ARGS_ASSERT_PERL_FREE	\
	assert(my_perl)
PERL_CALLCONV int	perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char** argv, char** env);
#define PERL_ARGS_ASSERT_PERL_PARSE	\
	assert(my_perl)
PERL_CALLCONV int	perl_run(PerlInterpreter *my_perl);
#define PERL_ARGS_ASSERT_PERL_RUN	\
	assert(my_perl)
PERL_CALLCONV Signal_t	Perl_perly_sighandler(int sig, Siginfo_t *info, void *uap, bool safe);
#define PERL_ARGS_ASSERT_PERLY_SIGHANDLER
/* PERL_CALLCONV const char *const	phase_name(pTHX_ enum perl_phase); */
#define PERL_ARGS_ASSERT_PHASE_NAME
PERL_CALLCONV void	Perl_pmop_dump(pTHX_ PMOP* pm);
#define PERL_ARGS_ASSERT_PMOP_DUMP
PERL_CALLCONV OP*	Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor);
#define PERL_ARGS_ASSERT_PMRUNTIME	\
	assert(o); assert(expr)
PERL_CALLCONV void	Perl_pop_scope(pTHX);
#define PERL_ARGS_ASSERT_POP_SCOPE
PERL_CALLCONV void	Perl_populate_isa(pTHX_ const char *name, STRLEN len, ...);
#define PERL_ARGS_ASSERT_POPULATE_ISA	\
	assert(name)
PERL_CALLCONV REGEXP*	Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags);
#define PERL_ARGS_ASSERT_PREGCOMP	\
	assert(pattern)
PERL_CALLCONV I32	Perl_pregexec(pTHX_ REGEXP * const prog, char* stringarg, char* strend, char* strbeg, SSize_t minend, SV* screamer, U32 nosave);
#define PERL_ARGS_ASSERT_PREGEXEC	\
	assert(prog); assert(stringarg); assert(strend); assert(strbeg); assert(screamer)
PERL_CALLCONV void	Perl_pregfree(pTHX_ REGEXP* r);
#define PERL_ARGS_ASSERT_PREGFREE
PERL_CALLCONV void	Perl_pregfree2(pTHX_ REGEXP *rx);
#define PERL_ARGS_ASSERT_PREGFREE2	\
	assert(rx)
PERL_CALLCONV const char*	Perl_prescan_version(pTHX_ const char *s, bool strict, const char** errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha);
#define PERL_ARGS_ASSERT_PRESCAN_VERSION	\
	assert(s)
PERL_CALLCONV void*	Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *const tbl, const void *const sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PTR_TABLE_FETCH	\
	assert(tbl)

PERL_CALLCONV void	Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl);
#define PERL_ARGS_ASSERT_PTR_TABLE_FREE
PERL_CALLCONV PTR_TBL_t*	Perl_ptr_table_new(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PTR_TABLE_NEW

PERL_CALLCONV void	Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl);
#define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT	\
	assert(tbl)
PERL_CALLCONV void	Perl_ptr_table_store(pTHX_ PTR_TBL_t *const tbl, const void *const oldsv, void *const newsv);
#define PERL_ARGS_ASSERT_PTR_TABLE_STORE	\
	assert(tbl); assert(newsv)
PERL_CALLCONV void	Perl_push_scope(pTHX);
#define PERL_ARGS_ASSERT_PUSH_SCOPE
PERL_CALLCONV char*	Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim);
#define PERL_ARGS_ASSERT_PV_DISPLAY	\
	assert(dsv); assert(pv)
PERL_CALLCONV char*	Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
#define PERL_ARGS_ASSERT_PV_ESCAPE	\
	assert(str)
PERL_CALLCONV char*	Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
#define PERL_ARGS_ASSERT_PV_PRETTY	\
	assert(dsv); assert(str)
PERL_CALLCONV char*	Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags);
#define PERL_ARGS_ASSERT_PV_UNI_DISPLAY	\
	assert(dsv); assert(spv)
PERL_CALLCONV void	Perl_qerror(pTHX_ SV* err);
#define PERL_ARGS_ASSERT_QERROR	\
	assert(err)
PERL_CALLCONV REGEXP*	Perl_re_compile(pTHX_ SV * const pattern, U32 orig_rx_flags);
#define PERL_ARGS_ASSERT_RE_COMPILE	\
	assert(pattern)
PERL_CALLCONV char*	Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV* sv, const char* const strbeg, char* strpos, char* strend, const U32 flags, re_scream_pos_data *data);
#define PERL_ARGS_ASSERT_RE_INTUIT_START	\
	assert(rx); assert(strbeg); assert(strpos); assert(strend)
PERL_CALLCONV SV*	Perl_re_intuit_string(pTHX_ REGEXP  *const r);
#define PERL_ARGS_ASSERT_RE_INTUIT_STRING	\
	assert(r)
PERL_CALLCONV REGEXP*	Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count, OP *expr, const regexp_engine* eng, REGEXP *old_re, bool *is_bare_re, const U32 rx_flags, const U32 pm_flags);
#define PERL_ARGS_ASSERT_RE_OP_COMPILE	\
	assert(eng)
PERL_CALLCONV Malloc_t	Perl_realloc(Malloc_t where, MEM_SIZE nbytes)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REALLOC

PERL_CALLCONV void	Perl_reentrant_free(pTHX);
#define PERL_ARGS_ASSERT_REENTRANT_FREE
PERL_CALLCONV void	Perl_reentrant_init(pTHX);
#define PERL_ARGS_ASSERT_REENTRANT_INIT
PERL_CALLCONV void*	Perl_reentrant_retry(const char *f, ...);
#define PERL_ARGS_ASSERT_REENTRANT_RETRY	\
	assert(f)
PERL_CALLCONV void	Perl_reentrant_size(pTHX);
#define PERL_ARGS_ASSERT_REENTRANT_SIZE
PERL_CALLCONV HV *	Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c, U32 flags);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_CHAIN_2HV
PERL_CALLCONV SV *	Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, const char *key, U32 hash, U32 flags);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV	\
	assert(key)
PERL_CALLCONV SV *	Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain, const char *keypv, STRLEN keylen, U32 hash, U32 flags);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN	\
	assert(keypv)
PERL_CALLCONV SV *	Perl_refcounted_he_fetch_sv(pTHX_ const struct refcounted_he *chain, SV *key, U32 hash, U32 flags);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV	\
	assert(key)
PERL_CALLCONV void	Perl_refcounted_he_free(pTHX_ struct refcounted_he *he);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FREE
PERL_CALLCONV struct refcounted_he *	Perl_refcounted_he_inc(pTHX_ struct refcounted_he *he);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_INC
PERL_CALLCONV struct refcounted_he *	Perl_refcounted_he_new_pv(pTHX_ struct refcounted_he *parent, const char *key, U32 hash, SV *value, U32 flags);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV	\
	assert(key)
PERL_CALLCONV struct refcounted_he *	Perl_refcounted_he_new_pvn(pTHX_ struct refcounted_he *parent, const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN	\
	assert(keypv)
PERL_CALLCONV struct refcounted_he *	Perl_refcounted_he_new_sv(pTHX_ struct refcounted_he *parent, SV *key, U32 hash, SV *value, U32 flags);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV	\
	assert(key)
PERL_CALLCONV SV*	Perl_reg_named_buff(pTHX_ REGEXP * const rx, SV * const key, SV * const value, const U32 flags);
#define PERL_ARGS_ASSERT_REG_NAMED_BUFF	\
	assert(rx)
PERL_CALLCONV SV*	Perl_reg_named_buff_all(pTHX_ REGEXP * const rx, const U32 flags);
#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL	\
	assert(rx)
PERL_CALLCONV bool	Perl_reg_named_buff_exists(pTHX_ REGEXP * const rx, SV * const key, const U32 flags);
#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_EXISTS	\
	assert(rx); assert(key)
PERL_CALLCONV SV*	Perl_reg_named_buff_fetch(pTHX_ REGEXP * const rx, SV * const namesv, const U32 flags);
#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH	\
	assert(rx); assert(namesv)
PERL_CALLCONV SV*	Perl_reg_named_buff_firstkey(pTHX_ REGEXP * const rx, const U32 flags);
#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FIRSTKEY	\
	assert(rx)
PERL_CALLCONV SV*	Perl_reg_named_buff_iter(pTHX_ REGEXP * const rx, const SV * const lastkey, const U32 flags);
#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER	\
	assert(rx)
PERL_CALLCONV SV*	Perl_reg_named_buff_nextkey(pTHX_ REGEXP * const rx, const U32 flags);
#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_NEXTKEY	\
	assert(rx)
PERL_CALLCONV SV*	Perl_reg_named_buff_scalar(pTHX_ REGEXP * const rx, const U32 flags);
#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_SCALAR	\
	assert(rx)
PERL_CALLCONV void	Perl_reg_numbered_buff_fetch(pTHX_ REGEXP * const rx, const I32 paren, SV * const sv);
#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH	\
	assert(rx)
PERL_CALLCONV I32	Perl_reg_numbered_buff_length(pTHX_ REGEXP * const rx, const SV * const sv, const I32 paren);
#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_LENGTH	\
	assert(rx); assert(sv)
PERL_CALLCONV void	Perl_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren, SV const * const value);
#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE	\
	assert(rx)
PERL_CALLCONV SV*	Perl_reg_qr_package(pTHX_ REGEXP * const rx);
#define PERL_ARGS_ASSERT_REG_QR_PACKAGE	\
	assert(rx)
PERL_CALLCONV REGEXP*	Perl_reg_temp_copy(pTHX_ REGEXP* dsv, REGEXP* ssv);
#define PERL_ARGS_ASSERT_REG_TEMP_COPY	\
	assert(ssv)
PERL_CALLCONV void	Perl_regdump(pTHX_ const regexp* r);
#define PERL_ARGS_ASSERT_REGDUMP	\
	assert(r)
PERL_CALLCONV I32	Perl_regexec_flags(pTHX_ REGEXP *const rx, char *stringarg, char *strend, char *strbeg, SSize_t minend, SV *sv, void *data, U32 flags);
#define PERL_ARGS_ASSERT_REGEXEC_FLAGS	\
	assert(rx); assert(stringarg); assert(strend); assert(strbeg); assert(sv)
PERL_CALLCONV void	Perl_regfree_internal(pTHX_ REGEXP *const rx);
#define PERL_ARGS_ASSERT_REGFREE_INTERNAL	\
	assert(rx)
PERL_CALLCONV void	Perl_reginitcolors(pTHX);
#define PERL_ARGS_ASSERT_REGINITCOLORS
PERL_CALLCONV regnode*	Perl_regnext(pTHX_ regnode* p)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGNEXT

PERL_CALLCONV void	Perl_repeatcpy(char* to, const char* from, I32 len, IV count);
#define PERL_ARGS_ASSERT_REPEATCPY	\
	assert(to); assert(from)
PERL_CALLCONV void	Perl_report_evil_fh(pTHX_ const GV *gv);
#define PERL_ARGS_ASSERT_REPORT_EVIL_FH
PERL_CALLCONV void	Perl_report_uninit(pTHX_ const SV *uninit_sv);
#define PERL_ARGS_ASSERT_REPORT_UNINIT
PERL_CALLCONV void	Perl_report_wrongway_fh(pTHX_ const GV *gv, const char have);
#define PERL_ARGS_ASSERT_REPORT_WRONGWAY_FH
PERL_CALLCONV void	Perl_require_pv(pTHX_ const char* pv);
#define PERL_ARGS_ASSERT_REQUIRE_PV	\
	assert(pv)
PERL_CALLCONV char*	Perl_rninstr(const char* big, const char* bigend, const char* little, const char* lend)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_RNINSTR	\
	assert(big); assert(bigend); assert(little); assert(lend)

PERL_CALLCONV void	Perl_rpeep(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_RPEEP
PERL_CALLCONV Sighandler_t	Perl_rsignal(pTHX_ int i, Sighandler_t t);
#define PERL_ARGS_ASSERT_RSIGNAL
PERL_CALLCONV int	Perl_rsignal_restore(pTHX_ int i, Sigsave_t* t);
#define PERL_ARGS_ASSERT_RSIGNAL_RESTORE
PERL_CALLCONV int	Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* save);
#define PERL_ARGS_ASSERT_RSIGNAL_SAVE	\
	assert(save)
PERL_CALLCONV Sighandler_t	Perl_rsignal_state(pTHX_ int i);
#define PERL_ARGS_ASSERT_RSIGNAL_STATE
PERL_CALLCONV int	Perl_runops_debug(pTHX);
#define PERL_ARGS_ASSERT_RUNOPS_DEBUG
PERL_CALLCONV int	Perl_runops_standard(pTHX);
#define PERL_ARGS_ASSERT_RUNOPS_STANDARD
PERL_CALLCONV CV*	Perl_rv2cv_op_cv(pTHX_ OP *cvop, U32 flags);
#define PERL_ARGS_ASSERT_RV2CV_OP_CV	\
	assert(cvop)
PERL_CALLCONV void	Perl_rxres_save(pTHX_ void **rsp, REGEXP *rx);
#define PERL_ARGS_ASSERT_RXRES_SAVE	\
	assert(rsp); assert(rx)
PERL_CALLCONV Malloc_t	Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAFESYSCALLOC

PERL_CALLCONV Free_t	Perl_safesysfree(Malloc_t where);
#define PERL_ARGS_ASSERT_SAFESYSFREE
PERL_CALLCONV Malloc_t	Perl_safesysmalloc(MEM_SIZE nbytes)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAFESYSMALLOC

PERL_CALLCONV Malloc_t	Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAFESYSREALLOC

PERL_CALLCONV void	Perl_save_I16(pTHX_ I16* intp);
#define PERL_ARGS_ASSERT_SAVE_I16	\
	assert(intp)
PERL_CALLCONV void	Perl_save_I32(pTHX_ I32* intp);
#define PERL_ARGS_ASSERT_SAVE_I32	\
	assert(intp)
PERL_CALLCONV void	Perl_save_I8(pTHX_ I8* bytep);
#define PERL_ARGS_ASSERT_SAVE_I8	\
	assert(bytep)
PERL_CALLCONV void	Perl_save_adelete(pTHX_ AV *av, SSize_t key);
#define PERL_ARGS_ASSERT_SAVE_ADELETE	\
	assert(av)
/* PERL_CALLCONV void	save_aelem(pTHX_ AV* av, SSize_t idx, SV **sptr); */
#define PERL_ARGS_ASSERT_SAVE_AELEM
PERL_CALLCONV void	Perl_save_aelem_flags(pTHX_ AV* av, SSize_t idx, SV **sptr, const U32 flags);
#define PERL_ARGS_ASSERT_SAVE_AELEM_FLAGS	\
	assert(av); assert(sptr)
PERL_CALLCONV I32	Perl_save_alloc(pTHX_ I32 size, I32 pad);
#define PERL_ARGS_ASSERT_SAVE_ALLOC
PERL_CALLCONV void	Perl_save_aptr(pTHX_ AV** aptr);
#define PERL_ARGS_ASSERT_SAVE_APTR	\
	assert(aptr)
PERL_CALLCONV AV*	Perl_save_ary(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_SAVE_ARY	\
	assert(gv)
PERL_CALLCONV void	Perl_save_bool(pTHX_ bool* boolp);
#define PERL_ARGS_ASSERT_SAVE_BOOL	\
	assert(boolp)
PERL_CALLCONV void	Perl_save_clearsv(pTHX_ SV** svp);
#define PERL_ARGS_ASSERT_SAVE_CLEARSV	\
	assert(svp)
PERL_CALLCONV void	Perl_save_delete(pTHX_ HV *hv, char *key, I32 klen);
#define PERL_ARGS_ASSERT_SAVE_DELETE	\
	assert(hv); assert(key)
PERL_CALLCONV void	Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void* p);
#define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR	\
	assert(p)
PERL_CALLCONV void	Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p);
#define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR_X
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_save_freeop(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_SAVE_FREEOP
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_save_freepv(pTHX_ char* pv);
#define PERL_ARGS_ASSERT_SAVE_FREEPV
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_save_freesv(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SAVE_FREESV
#endif
PERL_CALLCONV void	Perl_save_generic_pvref(pTHX_ char** str);
#define PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF	\
	assert(str)
PERL_CALLCONV void	Perl_save_generic_svref(pTHX_ SV** sptr);
#define PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF	\
	assert(sptr)
PERL_CALLCONV void	Perl_save_gp(pTHX_ GV* gv, I32 empty);
#define PERL_ARGS_ASSERT_SAVE_GP	\
	assert(gv)
PERL_CALLCONV HV*	Perl_save_hash(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_SAVE_HASH	\
	assert(gv)
PERL_CALLCONV void	Perl_save_hdelete(pTHX_ HV *hv, SV *keysv);
#define PERL_ARGS_ASSERT_SAVE_HDELETE	\
	assert(hv); assert(keysv)
/* PERL_CALLCONV void	save_helem(pTHX_ HV *hv, SV *key, SV **sptr); */
#define PERL_ARGS_ASSERT_SAVE_HELEM
PERL_CALLCONV void	Perl_save_helem_flags(pTHX_ HV *hv, SV *key, SV **sptr, const U32 flags);
#define PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS	\
	assert(hv); assert(key); assert(sptr)
PERL_CALLCONV void	Perl_save_hints(pTHX);
#define PERL_ARGS_ASSERT_SAVE_HINTS
PERL_CALLCONV void	Perl_save_hptr(pTHX_ HV** hptr);
#define PERL_ARGS_ASSERT_SAVE_HPTR	\
	assert(hptr)
PERL_CALLCONV void	Perl_save_int(pTHX_ int* intp);
#define PERL_ARGS_ASSERT_SAVE_INT	\
	assert(intp)
PERL_CALLCONV void	Perl_save_item(pTHX_ SV* item);
#define PERL_ARGS_ASSERT_SAVE_ITEM	\
	assert(item)
PERL_CALLCONV void	Perl_save_iv(pTHX_ IV *ivp);
#define PERL_ARGS_ASSERT_SAVE_IV	\
	assert(ivp)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_save_list(pTHX_ SV** sarg, I32 maxsarg)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SAVE_LIST	\
	assert(sarg)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_save_long(pTHX_ long* longp)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SAVE_LONG	\
	assert(longp)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_save_mortalizesv(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SAVE_MORTALIZESV	\
	assert(sv)
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_save_nogv(pTHX_ GV* gv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SAVE_NOGV	\
	assert(gv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_save_op(pTHX);
#define PERL_ARGS_ASSERT_SAVE_OP
#endif
PERL_CALLCONV void	Perl_save_padsv_and_mortalize(pTHX_ PADOFFSET off);
#define PERL_ARGS_ASSERT_SAVE_PADSV_AND_MORTALIZE
PERL_CALLCONV void	Perl_save_pptr(pTHX_ char** pptr);
#define PERL_ARGS_ASSERT_SAVE_PPTR	\
	assert(pptr)
PERL_CALLCONV void	Perl_save_pushi32ptr(pTHX_ const I32 i, void *const ptr, const int type);
#define PERL_ARGS_ASSERT_SAVE_PUSHI32PTR
PERL_CALLCONV void	Perl_save_pushptr(pTHX_ void *const ptr, const int type);
#define PERL_ARGS_ASSERT_SAVE_PUSHPTR
PERL_CALLCONV void	Perl_save_pushptrptr(pTHX_ void *const ptr1, void *const ptr2, const int type);
#define PERL_ARGS_ASSERT_SAVE_PUSHPTRPTR
PERL_CALLCONV void	Perl_save_re_context(pTHX);
#define PERL_ARGS_ASSERT_SAVE_RE_CONTEXT
PERL_CALLCONV SV*	Perl_save_scalar(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_SAVE_SCALAR	\
	assert(gv)
PERL_CALLCONV void	Perl_save_set_svflags(pTHX_ SV *sv, U32 mask, U32 val);
#define PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS	\
	assert(sv)
PERL_CALLCONV void	Perl_save_shared_pvref(pTHX_ char** str);
#define PERL_ARGS_ASSERT_SAVE_SHARED_PVREF	\
	assert(str)
PERL_CALLCONV void	Perl_save_sptr(pTHX_ SV** sptr);
#define PERL_ARGS_ASSERT_SAVE_SPTR	\
	assert(sptr)
PERL_CALLCONV void	Perl_save_strlen(pTHX_ STRLEN* ptr);
#define PERL_ARGS_ASSERT_SAVE_STRLEN	\
	assert(ptr)
PERL_CALLCONV SV*	Perl_save_svref(pTHX_ SV** sptr);
#define PERL_ARGS_ASSERT_SAVE_SVREF	\
	assert(sptr)
PERL_CALLCONV void	Perl_save_vptr(pTHX_ void *ptr);
#define PERL_ARGS_ASSERT_SAVE_VPTR	\
	assert(ptr)
PERL_CALLCONV char*	Perl_savepv(pTHX_ const char* pv)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVEPV

PERL_CALLCONV char*	Perl_savepvn(pTHX_ const char* pv, Size_t len)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVEPVN

PERL_CALLCONV char*	Perl_savesharedpv(pTHX_ const char* pv)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVESHAREDPV

PERL_CALLCONV char*	Perl_savesharedpvn(pTHX_ const char *const pv, const STRLEN len)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVESHAREDPVN

PERL_CALLCONV char*	Perl_savesharedsvpv(pTHX_ SV *sv)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVESHAREDSVPV	\
	assert(sv)

PERL_CALLCONV void	Perl_savestack_grow(pTHX);
#define PERL_ARGS_ASSERT_SAVESTACK_GROW
PERL_CALLCONV void	Perl_savestack_grow_cnt(pTHX_ I32 need);
#define PERL_ARGS_ASSERT_SAVESTACK_GROW_CNT
PERL_CALLCONV char*	Perl_savesvpv(pTHX_ SV* sv)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVESVPV	\
	assert(sv)

PERL_CALLCONV void	Perl_savetmps(pTHX);
#define PERL_ARGS_ASSERT_SAVETMPS
PERL_CALLCONV OP*	Perl_sawparens(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_SAWPARENS
PERL_CALLCONV OP*	Perl_scalar(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_SCALAR
PERL_CALLCONV OP*	Perl_scalarvoid(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_SCALARVOID	\
	assert(o)
PERL_CALLCONV NV	Perl_scan_bin(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
#define PERL_ARGS_ASSERT_SCAN_BIN	\
	assert(start); assert(retlen)
PERL_CALLCONV NV	Perl_scan_hex(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
#define PERL_ARGS_ASSERT_SCAN_HEX	\
	assert(start); assert(retlen)
PERL_CALLCONV char*	Perl_scan_num(pTHX_ const char* s, YYSTYPE *lvalp);
#define PERL_ARGS_ASSERT_SCAN_NUM	\
	assert(s); assert(lvalp)
PERL_CALLCONV NV	Perl_scan_oct(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
#define PERL_ARGS_ASSERT_SCAN_OCT	\
	assert(start); assert(retlen)
PERL_CALLCONV char*	Perl_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims, int re_reparse, char **delimp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCAN_STR	\
	assert(start)

PERL_CALLCONV const char*	Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv);
#define PERL_ARGS_ASSERT_SCAN_VERSION	\
	assert(s); assert(rv)
PERL_CALLCONV char*	Perl_scan_vstring(pTHX_ const char *s, const char *const e, SV *sv);
#define PERL_ARGS_ASSERT_SCAN_VSTRING	\
	assert(s); assert(e); assert(sv)
PERL_CALLCONV char*	Perl_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
#define PERL_ARGS_ASSERT_SCAN_WORD	\
	assert(s); assert(dest); assert(slp)
PERL_CALLCONV U32	Perl_seed(pTHX);
#define PERL_ARGS_ASSERT_SEED
PERL_CALLCONV void	Perl_set_caret_X(pTHX);
#define PERL_ARGS_ASSERT_SET_CARET_X
PERL_CALLCONV void	Perl_set_context(void *t);
#define PERL_ARGS_ASSERT_SET_CONTEXT	\
	assert(t)
PERL_CALLCONV void	Perl_set_numeric_standard(pTHX);
#define PERL_ARGS_ASSERT_SET_NUMERIC_STANDARD
PERL_CALLCONV void	Perl_set_numeric_underlying(pTHX);
#define PERL_ARGS_ASSERT_SET_NUMERIC_UNDERLYING
PERL_CALLCONV void	Perl_setdefout(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_SETDEFOUT	\
	assert(gv)
PERL_CALLCONV void	Perl_setfd_cloexec(int fd);
#define PERL_ARGS_ASSERT_SETFD_CLOEXEC
PERL_CALLCONV void	Perl_setfd_cloexec_for_nonsysfd(pTHX_ int fd);
#define PERL_ARGS_ASSERT_SETFD_CLOEXEC_FOR_NONSYSFD
PERL_CALLCONV void	Perl_setfd_cloexec_or_inhexec_by_sysfdness(pTHX_ int fd);
#define PERL_ARGS_ASSERT_SETFD_CLOEXEC_OR_INHEXEC_BY_SYSFDNESS
PERL_CALLCONV void	Perl_setfd_inhexec(int fd);
#define PERL_ARGS_ASSERT_SETFD_INHEXEC
PERL_CALLCONV void	Perl_setfd_inhexec_for_sysfd(pTHX_ int fd);
#define PERL_ARGS_ASSERT_SETFD_INHEXEC_FOR_SYSFD
PERL_CALLCONV HEK*	Perl_share_hek(pTHX_ const char* str, SSize_t len, U32 hash);
#define PERL_ARGS_ASSERT_SHARE_HEK	\
	assert(str)
PERL_CALLCONV Signal_t	Perl_sighandler1(int sig);
#define PERL_ARGS_ASSERT_SIGHANDLER1
PERL_CALLCONV Signal_t	Perl_sighandler3(int sig, Siginfo_t *info, void *uap);
#define PERL_ARGS_ASSERT_SIGHANDLER3
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE unsigned	Perl_single_1bit_pos32(U32 word)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SINGLE_1BIT_POS32
#endif

PERL_CALLCONV char*	Perl_skipspace_flags(pTHX_ char *s, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SKIPSPACE_FLAGS	\
	assert(s)

PERL_CALLCONV void	Perl_sortsv(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp);
#define PERL_ARGS_ASSERT_SORTSV	\
	assert(cmp)
PERL_CALLCONV void	Perl_sortsv_flags(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags);
#define PERL_ARGS_ASSERT_SORTSV_FLAGS	\
	assert(cmp)
PERL_CALLCONV SV**	Perl_stack_grow(pTHX_ SV** sp, SV** p, SSize_t n);
#define PERL_ARGS_ASSERT_STACK_GROW	\
	assert(sp); assert(p)
PERL_CALLCONV PerlIO*	Perl_start_glob(pTHX_ SV *tmpglob, IO *io);
#define PERL_ARGS_ASSERT_START_GLOB	\
	assert(tmpglob); assert(io)
PERL_CALLCONV I32	Perl_start_subparse(pTHX_ I32 is_format, U32 flags);
#define PERL_ARGS_ASSERT_START_SUBPARSE
PERL_CALLCONV NV	Perl_str_to_version(pTHX_ SV *sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_STR_TO_VERSION	\
	assert(sv)

PERL_CALLCONV void	Perl_sub_crush_depth(pTHX_ CV* cv);
#define PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH	\
	assert(cv)
#ifndef NO_MATHOMS
PERL_CALLCONV bool	Perl_sv_2bool(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_2BOOL	\
	assert(sv)
#endif
PERL_CALLCONV bool	Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags);
#define PERL_ARGS_ASSERT_SV_2BOOL_FLAGS	\
	assert(sv)
PERL_CALLCONV CV*	Perl_sv_2cv(pTHX_ SV* sv, HV **const st, GV **const gvp, const I32 lref);
#define PERL_ARGS_ASSERT_SV_2CV	\
	assert(st); assert(gvp)
PERL_CALLCONV IO*	Perl_sv_2io(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_2IO	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV IV	Perl_sv_2iv(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_2IV	\
	assert(sv)
#endif
PERL_CALLCONV IV	Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags);
#define PERL_ARGS_ASSERT_SV_2IV_FLAGS	\
	assert(sv)
PERL_CALLCONV SV*	Perl_sv_2mortal(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_2MORTAL
PERL_CALLCONV SV*	Perl_sv_2num(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_2NUM	\
	assert(sv)
PERL_CALLCONV NV	Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags);
#define PERL_ARGS_ASSERT_SV_2NV_FLAGS	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp);
#define PERL_ARGS_ASSERT_SV_2PV	\
	assert(sv)
#endif
PERL_CALLCONV char*	Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const U32 flags);
#define PERL_ARGS_ASSERT_SV_2PV_FLAGS	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_2pv_nolen(pTHX_ SV* sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_2PV_NOLEN	\
	assert(sv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN *const lp);
#define PERL_ARGS_ASSERT_SV_2PVBYTE	\
	assert(sv)
#endif
PERL_CALLCONV char*	Perl_sv_2pvbyte_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags);
#define PERL_ARGS_ASSERT_SV_2PVBYTE_FLAGS	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_2pvbyte_nolen(pTHX_ SV* sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN	\
	assert(sv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN *const lp);
#define PERL_ARGS_ASSERT_SV_2PVUTF8	\
	assert(sv)
#endif
PERL_CALLCONV char*	Perl_sv_2pvutf8_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags);
#define PERL_ARGS_ASSERT_SV_2PVUTF8_FLAGS	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_2pvutf8_nolen(pTHX_ SV* sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN	\
	assert(sv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV UV	Perl_sv_2uv(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_2UV	\
	assert(sv)
#endif
PERL_CALLCONV UV	Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags);
#define PERL_ARGS_ASSERT_SV_2UV_FLAGS	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_backoff(SV *const sv);
#define PERL_ARGS_ASSERT_SV_BACKOFF	\
	assert(sv)
PERL_CALLCONV SV*	Perl_sv_bless(pTHX_ SV *const sv, HV *const stash);
#define PERL_ARGS_ASSERT_SV_BLESS	\
	assert(sv); assert(stash)
PERL_CALLCONV bool	Perl_sv_cat_decode(pTHX_ SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen);
#define PERL_ARGS_ASSERT_SV_CAT_DECODE	\
	assert(dsv); assert(encoding); assert(ssv); assert(offset); assert(tstr)
PERL_CALLCONV void	Perl_sv_catpv(pTHX_ SV *const dsv, const char* sstr);
#define PERL_ARGS_ASSERT_SV_CATPV	\
	assert(dsv)
PERL_CALLCONV void	Perl_sv_catpv_flags(pTHX_ SV *dsv, const char *sstr, const I32 flags);
#define PERL_ARGS_ASSERT_SV_CATPV_FLAGS	\
	assert(dsv); assert(sstr)
PERL_CALLCONV void	Perl_sv_catpv_mg(pTHX_ SV *const dsv, const char *const sstr);
#define PERL_ARGS_ASSERT_SV_CATPV_MG	\
	assert(dsv)
PERL_CALLCONV void	Perl_sv_catpvf(pTHX_ SV *const sv, const char *const pat, ...)
			__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_SV_CATPVF	\
	assert(sv); assert(pat)

PERL_CALLCONV void	Perl_sv_catpvf_mg(pTHX_ SV *const sv, const char *const pat, ...)
			__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_SV_CATPVF_MG	\
	assert(sv); assert(pat)

#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len);
#define PERL_ARGS_ASSERT_SV_CATPVN	\
	assert(dsv); assert(sstr)
#endif
PERL_CALLCONV void	Perl_sv_catpvn_flags(pTHX_ SV *const dsv, const char *sstr, const STRLEN len, const I32 flags);
#define PERL_ARGS_ASSERT_SV_CATPVN_FLAGS	\
	assert(dsv); assert(sstr)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_catpvn_mg(pTHX_ SV *dsv, const char *sstr, STRLEN len);
#define PERL_ARGS_ASSERT_SV_CATPVN_MG	\
	assert(dsv); assert(sstr)
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_catsv(pTHX_ SV *dsv, SV *sstr);
#define PERL_ARGS_ASSERT_SV_CATSV	\
	assert(dsv)
#endif
PERL_CALLCONV void	Perl_sv_catsv_flags(pTHX_ SV *const dsv, SV *const sstr, const I32 flags);
#define PERL_ARGS_ASSERT_SV_CATSV_FLAGS	\
	assert(dsv)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *sstr);
#define PERL_ARGS_ASSERT_SV_CATSV_MG	\
	assert(dsv)
#endif
PERL_CALLCONV void	Perl_sv_chop(pTHX_ SV *const sv, const char *const ptr);
#define PERL_ARGS_ASSERT_SV_CHOP	\
	assert(sv)
PERL_CALLCONV I32	Perl_sv_clean_all(pTHX);
#define PERL_ARGS_ASSERT_SV_CLEAN_ALL
PERL_CALLCONV void	Perl_sv_clean_objs(pTHX);
#define PERL_ARGS_ASSERT_SV_CLEAN_OBJS
PERL_CALLCONV void	Perl_sv_clear(pTHX_ SV *const orig_sv);
#define PERL_ARGS_ASSERT_SV_CLEAR	\
	assert(orig_sv)
PERL_CALLCONV I32	Perl_sv_cmp(pTHX_ SV *const sv1, SV *const sv2);
#define PERL_ARGS_ASSERT_SV_CMP
PERL_CALLCONV I32	Perl_sv_cmp_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags);
#define PERL_ARGS_ASSERT_SV_CMP_FLAGS
PERL_CALLCONV I32	Perl_sv_cmp_locale(pTHX_ SV *const sv1, SV *const sv2);
#define PERL_ARGS_ASSERT_SV_CMP_LOCALE
PERL_CALLCONV I32	Perl_sv_cmp_locale_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags);
#define PERL_ARGS_ASSERT_SV_CMP_LOCALE_FLAGS
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv);
#define PERL_ARGS_ASSERT_SV_COPYPV	\
	assert(dsv); assert(ssv)
#endif
PERL_CALLCONV void	Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags);
#define PERL_ARGS_ASSERT_SV_COPYPV_FLAGS	\
	assert(dsv); assert(ssv)
/* PERL_CALLCONV void	sv_copypv_nomg(pTHX_ SV *const dsv, SV *const ssv); */
#define PERL_ARGS_ASSERT_SV_COPYPV_NOMG
PERL_CALLCONV void	Perl_sv_dec(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_DEC
PERL_CALLCONV void	Perl_sv_dec_nomg(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_DEC_NOMG
PERL_CALLCONV void	Perl_sv_del_backref(pTHX_ SV *const tsv, SV *const sv);
#define PERL_ARGS_ASSERT_SV_DEL_BACKREF	\
	assert(tsv); assert(sv)
PERL_CALLCONV bool	Perl_sv_derived_from(pTHX_ SV* sv, const char *const name)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DERIVED_FROM	\
	assert(sv); assert(name)

PERL_CALLCONV bool	Perl_sv_derived_from_pv(pTHX_ SV* sv, const char *const name, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_PV	\
	assert(sv); assert(name)

PERL_CALLCONV bool	Perl_sv_derived_from_pvn(pTHX_ SV* sv, const char *const name, const STRLEN len, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_PVN	\
	assert(sv); assert(name)

PERL_CALLCONV bool	Perl_sv_derived_from_sv(pTHX_ SV* sv, SV *namesv, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_SV	\
	assert(sv); assert(namesv)

PERL_CALLCONV bool	Perl_sv_destroyable(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_DESTROYABLE
PERL_CALLCONV bool	Perl_sv_does(pTHX_ SV* sv, const char *const name)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DOES	\
	assert(sv); assert(name)

PERL_CALLCONV bool	Perl_sv_does_pv(pTHX_ SV* sv, const char *const name, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DOES_PV	\
	assert(sv); assert(name)

PERL_CALLCONV bool	Perl_sv_does_pvn(pTHX_ SV* sv, const char *const name, const STRLEN len, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DOES_PVN	\
	assert(sv); assert(name)

PERL_CALLCONV bool	Perl_sv_does_sv(pTHX_ SV* sv, SV* namesv, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DOES_SV	\
	assert(sv); assert(namesv)

PERL_CALLCONV void	Perl_sv_dump(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SV_DUMP
#ifndef NO_MATHOMS
PERL_CALLCONV I32	Perl_sv_eq(pTHX_ SV* sv1, SV* sv2);
#define PERL_ARGS_ASSERT_SV_EQ
#endif
PERL_CALLCONV I32	Perl_sv_eq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags);
#define PERL_ARGS_ASSERT_SV_EQ_FLAGS
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_force_normal(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL	\
	assert(sv)
#endif
PERL_CALLCONV void	Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags);
#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_free(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_FREE
PERL_CALLCONV void	Perl_sv_free2(pTHX_ SV *const sv, const U32 refcnt);
#define PERL_ARGS_ASSERT_SV_FREE2	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_free_arenas(pTHX);
#define PERL_ARGS_ASSERT_SV_FREE_ARENAS
PERL_CALLCONV SV*	Perl_sv_get_backrefs(SV *const sv);
#define PERL_ARGS_ASSERT_SV_GET_BACKREFS	\
	assert(sv)
PERL_CALLCONV char*	Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append);
#define PERL_ARGS_ASSERT_SV_GETS	\
	assert(sv); assert(fp)
PERL_CALLCONV char*	Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen);
#define PERL_ARGS_ASSERT_SV_GROW	\
	assert(sv)
PERL_CALLCONV char*	Perl_sv_grow_fresh(pTHX_ SV *const sv, STRLEN newlen);
#define PERL_ARGS_ASSERT_SV_GROW_FRESH	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_inc(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_INC
PERL_CALLCONV void	Perl_sv_inc_nomg(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_INC_NOMG
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen);
#define PERL_ARGS_ASSERT_SV_INSERT	\
	assert(bigstr); assert(little)
#endif
PERL_CALLCONV void	Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *little, const STRLEN littlelen, const U32 flags);
#define PERL_ARGS_ASSERT_SV_INSERT_FLAGS	\
	assert(bigstr); assert(little)
PERL_CALLCONV int	Perl_sv_isa(pTHX_ SV* sv, const char *const name);
#define PERL_ARGS_ASSERT_SV_ISA	\
	assert(name)
PERL_CALLCONV bool	Perl_sv_isa_sv(pTHX_ SV* sv, SV* namesv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_ISA_SV	\
	assert(sv); assert(namesv)

PERL_CALLCONV int	Perl_sv_isobject(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SV_ISOBJECT
#ifndef NO_MATHOMS
PERL_CALLCONV IV	Perl_sv_iv(pTHX_ SV* sv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_IV	\
	assert(sv)
#endif

PERL_CALLCONV STRLEN	Perl_sv_len(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_LEN
PERL_CALLCONV STRLEN	Perl_sv_len_utf8(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_LEN_UTF8
PERL_CALLCONV STRLEN	Perl_sv_len_utf8_nomg(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_LEN_UTF8_NOMG	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_magic(pTHX_ SV *const sv, SV *const obj, const int how, const char *const name, const I32 namlen);
#define PERL_ARGS_ASSERT_SV_MAGIC	\
	assert(sv)
PERL_CALLCONV MAGIC *	Perl_sv_magicext(pTHX_ SV *const sv, SV *const obj, const int how, const MGVTBL *const vtbl, const char *const name, const I32 namlen);
#define PERL_ARGS_ASSERT_SV_MAGICEXT	\
	assert(sv)
PERL_CALLCONV MAGIC *	Perl_sv_magicext_mglob(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_MAGICEXT_MGLOB	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV SV*	Perl_sv_mortalcopy(pTHX_ SV *const oldsv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_MORTALCOPY
#endif

PERL_CALLCONV SV*	Perl_sv_mortalcopy_flags(pTHX_ SV *const oldsv, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_MORTALCOPY_FLAGS

PERL_CALLCONV SV*	Perl_sv_newmortal(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_NEWMORTAL

PERL_CALLCONV SV*	Perl_sv_newref(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_NEWREF
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_nolocking(pTHX_ SV *sv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_NOLOCKING
#endif

PERL_CALLCONV void	Perl_sv_nosharing(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_NOSHARING
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_nounlocking(pTHX_ SV *sv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_NOUNLOCKING
#endif

/* PERL_CALLCONV bool	sv_numeq(pTHX_ SV* sv1, SV* sv2); */
#define PERL_ARGS_ASSERT_SV_NUMEQ
PERL_CALLCONV bool	Perl_sv_numeq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags);
#define PERL_ARGS_ASSERT_SV_NUMEQ_FLAGS
#ifndef NO_MATHOMS
PERL_CALLCONV NV	Perl_sv_nv(pTHX_ SV* sv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_NV	\
	assert(sv)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_sv_only_taint_gmagic(SV *sv);
#define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC	\
	assert(sv)
#endif
PERL_CALLCONV char*	Perl_sv_peek(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SV_PEEK
PERL_CALLCONV void	Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp);
#define PERL_ARGS_ASSERT_SV_POS_B2U	\
	assert(offsetp)
PERL_CALLCONV STRLEN	Perl_sv_pos_b2u_flags(pTHX_ SV *const sv, STRLEN const offset, U32 flags);
#define PERL_ARGS_ASSERT_SV_POS_B2U_FLAGS	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_pos_u2b(pTHX_ SV *const sv, I32 *const offsetp, I32 *const lenp);
#define PERL_ARGS_ASSERT_SV_POS_U2B	\
	assert(offsetp)
PERL_CALLCONV STRLEN	Perl_sv_pos_u2b_flags(pTHX_ SV *const sv, STRLEN uoffset, STRLEN *const lenp, U32 flags);
#define PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_pv(pTHX_ SV *sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_PV	\
	assert(sv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_pvbyte(pTHX_ SV *sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_PVBYTE	\
	assert(sv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_PVBYTEN	\
	assert(sv); assert(lp)
#endif

PERL_CALLCONV char*	Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp);
#define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_PVN	\
	assert(sv); assert(lp)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
#define PERL_ARGS_ASSERT_SV_PVN_FORCE	\
	assert(sv)
#endif
PERL_CALLCONV char*	Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const U32 flags);
#define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_PVN_NOMG	\
	assert(sv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_pvutf8(pTHX_ SV *sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_PVUTF8	\
	assert(sv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_PVUTF8N	\
	assert(sv); assert(lp)
#endif

PERL_CALLCONV char*	Perl_sv_pvutf8n_force(pTHX_ SV *const sv, STRLEN *const lp);
#define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE	\
	assert(sv)
PERL_CALLCONV char*	Perl_sv_recode_to_utf8(pTHX_ SV* sv, SV *encoding);
#define PERL_ARGS_ASSERT_SV_RECODE_TO_UTF8	\
	assert(sv); assert(encoding)
PERL_CALLCONV SV*	Perl_sv_ref(pTHX_ SV *dst, const SV *const sv, const int ob);
#define PERL_ARGS_ASSERT_SV_REF	\
	assert(sv)
PERL_CALLCONV const char*	Perl_sv_reftype(pTHX_ const SV *const sv, const int ob)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_REFTYPE	\
	assert(sv)

PERL_CALLCONV void	Perl_sv_replace(pTHX_ SV *const sv, SV *const nsv);
#define PERL_ARGS_ASSERT_SV_REPLACE	\
	assert(sv); assert(nsv)
PERL_CALLCONV void	Perl_sv_report_used(pTHX);
#define PERL_ARGS_ASSERT_SV_REPORT_USED
PERL_CALLCONV void	Perl_sv_reset(pTHX_ const char* s, HV *const stash);
#define PERL_ARGS_ASSERT_SV_RESET	\
	assert(s)
PERL_CALLCONV void	Perl_sv_resetpvn(pTHX_ const char* s, STRLEN len, HV *const stash);
#define PERL_ARGS_ASSERT_SV_RESETPVN
PERL_CALLCONV SV*	Perl_sv_rvunweaken(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_RVUNWEAKEN	\
	assert(sv)
PERL_CALLCONV SV*	Perl_sv_rvweaken(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_RVWEAKEN	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_set_undef(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_SET_UNDEF	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_sethek(pTHX_ SV *const sv, const HEK *const hek);
#define PERL_ARGS_ASSERT_SV_SETHEK	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setiv(pTHX_ SV *const sv, const IV num);
#define PERL_ARGS_ASSERT_SV_SETIV	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i);
#define PERL_ARGS_ASSERT_SV_SETIV_MG	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setnv(pTHX_ SV *const sv, const NV num);
#define PERL_ARGS_ASSERT_SV_SETNV	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num);
#define PERL_ARGS_ASSERT_SV_SETNV_MG	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setpv(pTHX_ SV *const sv, const char *const ptr);
#define PERL_ARGS_ASSERT_SV_SETPV	\
	assert(sv)
PERL_CALLCONV char  *	Perl_sv_setpv_bufsize(pTHX_ SV *const sv, const STRLEN cur, const STRLEN len);
#define PERL_ARGS_ASSERT_SV_SETPV_BUFSIZE	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setpv_mg(pTHX_ SV *const sv, const char *const ptr);
#define PERL_ARGS_ASSERT_SV_SETPV_MG	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setpvf(pTHX_ SV *const sv, const char *const pat, ...)
			__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_SV_SETPVF	\
	assert(sv); assert(pat)

PERL_CALLCONV void	Perl_sv_setpvf_mg(pTHX_ SV *const sv, const char *const pat, ...)
			__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_SV_SETPVF_MG	\
	assert(sv); assert(pat)

#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_setpviv(pTHX_ SV *const sv, const IV num)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_SETPVIV	\
	assert(sv)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_SETPVIV_MG	\
	assert(sv)
#endif

PERL_CALLCONV void	Perl_sv_setpvn(pTHX_ SV *const sv, const char *const ptr, const STRLEN len);
#define PERL_ARGS_ASSERT_SV_SETPVN	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setpvn_fresh(pTHX_ SV *const sv, const char *const ptr, const STRLEN len);
#define PERL_ARGS_ASSERT_SV_SETPVN_FRESH	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setpvn_mg(pTHX_ SV *const sv, const char *const ptr, const STRLEN len);
#define PERL_ARGS_ASSERT_SV_SETPVN_MG	\
	assert(sv); assert(ptr)
PERL_CALLCONV SV*	Perl_sv_setref_iv(pTHX_ SV *const rv, const char *const classname, const IV iv);
#define PERL_ARGS_ASSERT_SV_SETREF_IV	\
	assert(rv)
PERL_CALLCONV SV*	Perl_sv_setref_nv(pTHX_ SV *const rv, const char *const classname, const NV nv);
#define PERL_ARGS_ASSERT_SV_SETREF_NV	\
	assert(rv)
PERL_CALLCONV SV*	Perl_sv_setref_pv(pTHX_ SV *const rv, const char *const classname, void *const pv);
#define PERL_ARGS_ASSERT_SV_SETREF_PV	\
	assert(rv)
PERL_CALLCONV SV*	Perl_sv_setref_pvn(pTHX_ SV *const rv, const char *const classname, const char *const pv, const STRLEN n);
#define PERL_ARGS_ASSERT_SV_SETREF_PVN	\
	assert(rv); assert(pv)
PERL_CALLCONV SV*	Perl_sv_setref_uv(pTHX_ SV *const rv, const char *const classname, const UV uv);
#define PERL_ARGS_ASSERT_SV_SETREF_UV	\
	assert(rv)
PERL_CALLCONV void	Perl_sv_setrv_inc(pTHX_ SV *const sv, SV *const ref);
#define PERL_ARGS_ASSERT_SV_SETRV_INC	\
	assert(sv); assert(ref)
PERL_CALLCONV void	Perl_sv_setrv_inc_mg(pTHX_ SV *const sv, SV *const ref);
#define PERL_ARGS_ASSERT_SV_SETRV_INC_MG	\
	assert(sv); assert(ref)
PERL_CALLCONV void	Perl_sv_setrv_noinc(pTHX_ SV *const sv, SV *const ref);
#define PERL_ARGS_ASSERT_SV_SETRV_NOINC	\
	assert(sv); assert(ref)
PERL_CALLCONV void	Perl_sv_setrv_noinc_mg(pTHX_ SV *const sv, SV *const ref);
#define PERL_ARGS_ASSERT_SV_SETRV_NOINC_MG	\
	assert(sv); assert(ref)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_setsv(pTHX_ SV *dsv, SV *ssv);
#define PERL_ARGS_ASSERT_SV_SETSV	\
	assert(dsv)
#endif
PERL_CALLCONV void	Perl_sv_setsv_flags(pTHX_ SV *dsv, SV *ssv, const I32 flags);
#define PERL_ARGS_ASSERT_SV_SETSV_FLAGS	\
	assert(dsv)
PERL_CALLCONV void	Perl_sv_setsv_mg(pTHX_ SV *const dsv, SV *const ssv);
#define PERL_ARGS_ASSERT_SV_SETSV_MG	\
	assert(dsv)
PERL_CALLCONV void	Perl_sv_setuv(pTHX_ SV *const sv, const UV num);
#define PERL_ARGS_ASSERT_SV_SETUV	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u);
#define PERL_ARGS_ASSERT_SV_SETUV_MG	\
	assert(sv)
/* PERL_CALLCONV bool	sv_streq(pTHX_ SV* sv1, SV* sv2); */
#define PERL_ARGS_ASSERT_SV_STREQ
PERL_CALLCONV bool	Perl_sv_streq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags);
#define PERL_ARGS_ASSERT_SV_STREQ_FLAGS
PERL_CALLCONV SV*	Perl_sv_string_from_errnum(pTHX_ int errnum, SV* tgtsv);
#define PERL_ARGS_ASSERT_SV_STRING_FROM_ERRNUM
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_taint(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SV_TAINT	\
	assert(sv)
#endif
PERL_CALLCONV bool	Perl_sv_tainted(pTHX_ SV *const sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_TAINTED	\
	assert(sv)

PERL_CALLCONV I32	Perl_sv_true(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_TRUE
PERL_CALLCONV char*	Perl_sv_uni_display(pTHX_ SV *dsv, SV *ssv, STRLEN pvlim, UV flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_UNI_DISPLAY	\
	assert(dsv); assert(ssv)

PERL_CALLCONV int	Perl_sv_unmagic(pTHX_ SV *const sv, const int type);
#define PERL_ARGS_ASSERT_SV_UNMAGIC	\
	assert(sv)
PERL_CALLCONV int	Perl_sv_unmagicext(pTHX_ SV *const sv, const int type, MGVTBL *vtbl);
#define PERL_ARGS_ASSERT_SV_UNMAGICEXT	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_unref(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SV_UNREF	\
	assert(sv)
#endif
PERL_CALLCONV void	Perl_sv_unref_flags(pTHX_ SV *const ref, const U32 flags);
#define PERL_ARGS_ASSERT_SV_UNREF_FLAGS	\
	assert(ref)
PERL_CALLCONV void	Perl_sv_untaint(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_UNTAINT	\
	assert(sv)
PERL_CALLCONV void	Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type);
#define PERL_ARGS_ASSERT_SV_UPGRADE	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len);
#define PERL_ARGS_ASSERT_SV_USEPVN	\
	assert(sv)
#endif
PERL_CALLCONV void	Perl_sv_usepvn_flags(pTHX_ SV *const sv, char* ptr, const STRLEN len, const U32 flags);
#define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV void	Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
#define PERL_ARGS_ASSERT_SV_USEPVN_MG	\
	assert(sv)
#endif
PERL_CALLCONV bool	Perl_sv_utf8_decode(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_UTF8_DECODE	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV bool	Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok);
#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE	\
	assert(sv)
#endif
PERL_CALLCONV bool	Perl_sv_utf8_downgrade_flags(pTHX_ SV *const sv, const bool fail_ok, const U32 flags);
#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_FLAGS	\
	assert(sv)
/* PERL_CALLCONV bool	sv_utf8_downgrade_nomg(pTHX_ SV *const sv, const bool fail_ok); */
#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_NOMG
PERL_CALLCONV void	Perl_sv_utf8_encode(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_UTF8_ENCODE	\
	assert(sv)
#ifndef NO_MATHOMS
PERL_CALLCONV STRLEN	Perl_sv_utf8_upgrade(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE	\
	assert(sv)
#endif
/* PERL_CALLCONV STRLEN	sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags); */
#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS
PERL_CALLCONV STRLEN	Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra);
#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW	\
	assert(sv)
/* PERL_CALLCONV STRLEN	sv_utf8_upgrade_nomg(pTHX_ SV *sv); */
#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_NOMG
#ifndef NO_MATHOMS
PERL_CALLCONV UV	Perl_sv_uv(pTHX_ SV* sv)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_SV_UV	\
	assert(sv)
#endif

PERL_CALLCONV void	Perl_sv_vcatpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args);
#define PERL_ARGS_ASSERT_SV_VCATPVF	\
	assert(sv); assert(pat)
PERL_CALLCONV void	Perl_sv_vcatpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args);
#define PERL_ARGS_ASSERT_SV_VCATPVF_MG	\
	assert(sv); assert(pat)
PERL_CALLCONV void	Perl_sv_vcatpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const Size_t sv_count, bool *const maybe_tainted);
#define PERL_ARGS_ASSERT_SV_VCATPVFN	\
	assert(sv); assert(pat)
PERL_CALLCONV void	Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const Size_t sv_count, bool *const maybe_tainted, const U32 flags);
#define PERL_ARGS_ASSERT_SV_VCATPVFN_FLAGS	\
	assert(sv); assert(pat)
PERL_CALLCONV void	Perl_sv_vsetpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args);
#define PERL_ARGS_ASSERT_SV_VSETPVF	\
	assert(sv); assert(pat)
PERL_CALLCONV void	Perl_sv_vsetpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args);
#define PERL_ARGS_ASSERT_SV_VSETPVF_MG	\
	assert(sv); assert(pat)
PERL_CALLCONV void	Perl_sv_vsetpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const Size_t sv_count, bool *const maybe_tainted);
#define PERL_ARGS_ASSERT_SV_VSETPVFN	\
	assert(sv); assert(pat)
PERL_CALLCONV void	Perl_switch_to_global_locale(void);
#define PERL_ARGS_ASSERT_SWITCH_TO_GLOBAL_LOCALE
PERL_CALLCONV bool	Perl_sync_locale(void);
#define PERL_ARGS_ASSERT_SYNC_LOCALE
PERL_CALLCONV void	Perl_sys_init(int* argc, char*** argv);
#define PERL_ARGS_ASSERT_SYS_INIT	\
	assert(argc); assert(argv)
PERL_CALLCONV void	Perl_sys_init3(int* argc, char*** argv, char*** env);
#define PERL_ARGS_ASSERT_SYS_INIT3	\
	assert(argc); assert(argv); assert(env)
PERL_CALLCONV void	Perl_sys_term(void);
#define PERL_ARGS_ASSERT_SYS_TERM
PERL_CALLCONV void	Perl_taint_env(pTHX);
#define PERL_ARGS_ASSERT_TAINT_ENV
PERL_CALLCONV void	Perl_taint_proper(pTHX_ const char* f, const char *const s);
#define PERL_ARGS_ASSERT_TAINT_PROPER	\
	assert(s)
PERL_CALLCONV void	Perl_thread_locale_init(void);
#define PERL_ARGS_ASSERT_THREAD_LOCALE_INIT
PERL_CALLCONV void	Perl_thread_locale_term(void);
#define PERL_ARGS_ASSERT_THREAD_LOCALE_TERM
PERL_CALLCONV OP *	Perl_tied_method(pTHX_ SV *methname, SV **sp, SV *const sv, const MAGIC *const mg, const U32 flags, U32 argc, ...);
#define PERL_ARGS_ASSERT_TIED_METHOD	\
	assert(methname); assert(sp); assert(sv); assert(mg)
PERL_CALLCONV SSize_t	Perl_tmps_grow_p(pTHX_ SSize_t ix);
#define PERL_ARGS_ASSERT_TMPS_GROW_P
/* PERL_CALLCONV UV	to_uni_fold(pTHX_ UV c, U8 *p, STRLEN *lenp); */
#define PERL_ARGS_ASSERT_TO_UNI_FOLD
PERL_CALLCONV UV	Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TO_UNI_LOWER	\
	assert(p); assert(lenp)
PERL_CALLCONV UV	Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TO_UNI_TITLE	\
	assert(p); assert(lenp)
PERL_CALLCONV UV	Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TO_UNI_UPPER	\
	assert(p); assert(lenp)
PERL_CALLCONV bool	Perl_try_amagic_bin(pTHX_ int method, int flags);
#define PERL_ARGS_ASSERT_TRY_AMAGIC_BIN
PERL_CALLCONV bool	Perl_try_amagic_un(pTHX_ int method, int flags);
#define PERL_ARGS_ASSERT_TRY_AMAGIC_UN
#ifndef NO_MATHOMS
PERL_CALLCONV SSize_t	Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_UNPACK_STR	\
	assert(pat); assert(patend); assert(s); assert(strend)
#endif

PERL_CALLCONV SSize_t	Perl_unpackstring(pTHX_ const char *pat, const char *patend, const char *s, const char *strend, U32 flags);
#define PERL_ARGS_ASSERT_UNPACKSTRING	\
	assert(pat); assert(patend); assert(s); assert(strend)
PERL_CALLCONV void	Perl_unshare_hek(pTHX_ HEK* hek);
#define PERL_ARGS_ASSERT_UNSHARE_HEK
PERL_CALLCONV void	Perl_unsharepvn(pTHX_ const char* sv, I32 len, U32 hash);
#define PERL_ARGS_ASSERT_UNSHAREPVN
PERL_CALLCONV SV*	Perl_upg_version(pTHX_ SV *ver, bool qv);
#define PERL_ARGS_ASSERT_UPG_VERSION	\
	assert(ver)
PERL_CALLCONV U8*	Perl_utf16_to_utf8(pTHX_ U8* p, U8 *d, Size_t bytelen, Size_t *newlen);
#define PERL_ARGS_ASSERT_UTF16_TO_UTF8	\
	assert(p); assert(d); assert(newlen)
PERL_CALLCONV U8*	Perl_utf16_to_utf8_base(pTHX_ U8* p, U8 *d, Size_t bytelen, Size_t *newlen, const bool high, const bool low);
#define PERL_ARGS_ASSERT_UTF16_TO_UTF8_BASE	\
	assert(p); assert(d); assert(newlen)
PERL_CALLCONV U8*	Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8 *d, Size_t bytelen, Size_t *newlen);
#define PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED	\
	assert(p); assert(d); assert(newlen)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE IV	Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_UTF8_DISTANCE	\
	assert(a); assert(b)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE U8*	Perl_utf8_hop(const U8 *s, SSize_t off)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_UTF8_HOP	\
	assert(s)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE U8*	Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_UTF8_HOP_BACK	\
	assert(s); assert(start)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE U8*	Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_UTF8_HOP_FORWARD	\
	assert(s); assert(end)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE U8*	Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_UTF8_HOP_SAFE	\
	assert(s); assert(start); assert(end)
#endif

PERL_CALLCONV STRLEN	Perl_utf8_length(pTHX_ const U8* s, const U8 *e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_UTF8_LENGTH	\
	assert(s); assert(e)

PERL_CALLCONV U8*	Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *lenp);
#define PERL_ARGS_ASSERT_UTF8_TO_BYTES	\
	assert(s); assert(lenp)
PERL_CALLCONV U8*	Perl_utf8_to_utf16_base(pTHX_ U8* s, U8 *d, Size_t bytelen, Size_t *newlen, const bool high, const bool low);
#define PERL_ARGS_ASSERT_UTF8_TO_UTF16_BASE	\
	assert(s); assert(d); assert(newlen)
#ifndef NO_MATHOMS
PERL_CALLCONV UV	Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR	\
	assert(s)
#endif

PERL_CALLCONV UV	Perl_utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF	\
	assert(s); assert(send)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV	Perl_utf8_to_uvchr_buf_helper(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF_HELPER	\
	assert(s); assert(send)
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV UV	Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_UTF8_TO_UVUNI	\
	assert(s)
#endif

PERL_CALLCONV UV	Perl_utf8_to_uvuni_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_UTF8_TO_UVUNI_BUF	\
	assert(s); assert(send)

PERL_CALLCONV UV	Perl_utf8n_to_uvchr(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags);
#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR	\
	assert(s)
PERL_CALLCONV UV	Perl_utf8n_to_uvchr_error(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors);
#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_ERROR	\
	assert(s)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV	Perl_utf8n_to_uvchr_msgs(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors, AV ** msgs);
#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_MSGS	\
	assert(s)
#endif
#ifndef NO_MATHOMS
PERL_CALLCONV UV	Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_UTF8N_TO_UVUNI	\
	assert(s)
#endif

PERL_CALLCONV void	Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop, OP* arg);
#define PERL_ARGS_ASSERT_UTILIZE	\
	assert(idop)
/* PERL_CALLCONV U8*	uvchr_to_utf8(pTHX_ U8 *d, UV uv); */
#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8
/* PERL_CALLCONV U8*	uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags); */
#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS
/* PERL_CALLCONV U8*	uvchr_to_utf8_flags_msgs(pTHX_ U8 *d, UV uv, UV flags, HV ** msgs); */
#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS_MSGS
PERL_CALLCONV U8*	Perl_uvoffuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags);
#define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS	\
	assert(d)
PERL_CALLCONV U8*	Perl_uvoffuni_to_utf8_flags_msgs(pTHX_ U8 *d, UV input_uv, const UV flags, HV** msgs);
#define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS_MSGS	\
	assert(d)
PERL_CALLCONV U8*	Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv);
#define PERL_ARGS_ASSERT_UVUNI_TO_UTF8	\
	assert(d)
#ifndef NO_MATHOMS
PERL_CALLCONV U8*	Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS	\
	assert(d)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV	Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR	\
	assert(s)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV UV	Perl_valid_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI	\
	assert(s)
#endif

PERL_CALLCONV bool	Perl_validate_proto(pTHX_ SV *name, SV *proto, bool warn, bool curstash);
#define PERL_ARGS_ASSERT_VALIDATE_PROTO	\
	assert(name)
PERL_CALLCONV int	Perl_vcmp(pTHX_ SV *lhv, SV *rhv);
#define PERL_ARGS_ASSERT_VCMP	\
	assert(lhv); assert(rhv)
PERL_CALLCONV_NO_RET void	Perl_vcroak(pTHX_ const char* pat, va_list* args)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_VCROAK

PERL_CALLCONV void	Perl_vdeb(pTHX_ const char* pat, va_list* args);
#define PERL_ARGS_ASSERT_VDEB	\
	assert(pat)
PERL_CALLCONV char*	Perl_vform(pTHX_ const char* pat, va_list* args);
#define PERL_ARGS_ASSERT_VFORM	\
	assert(pat)
PERL_CALLCONV void	Perl_vivify_defelem(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_VIVIFY_DEFELEM	\
	assert(sv)
PERL_CALLCONV SV*	Perl_vivify_ref(pTHX_ SV* sv, U32 to_what)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_VIVIFY_REF	\
	assert(sv)

PERL_CALLCONV void	Perl_vload_module(pTHX_ U32 flags, SV* name, SV* ver, va_list* args);
#define PERL_ARGS_ASSERT_VLOAD_MODULE	\
	assert(name)
PERL_CALLCONV SV*	Perl_vmess(pTHX_ const char* pat, va_list* args);
#define PERL_ARGS_ASSERT_VMESS	\
	assert(pat)
PERL_CALLCONV SV*	Perl_vnewSVpvf(pTHX_ const char *const pat, va_list *const args)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_VNEWSVPVF	\
	assert(pat)

PERL_CALLCONV SV*	Perl_vnormal(pTHX_ SV *vs);
#define PERL_ARGS_ASSERT_VNORMAL	\
	assert(vs)
PERL_CALLCONV SV*	Perl_vnumify(pTHX_ SV *vs);
#define PERL_ARGS_ASSERT_VNUMIFY	\
	assert(vs)
PERL_CALLCONV SV*	Perl_vstringify(pTHX_ SV *vs);
#define PERL_ARGS_ASSERT_VSTRINGIFY	\
	assert(vs)
PERL_CALLCONV SV*	Perl_vverify(pTHX_ SV *vs);
#define PERL_ARGS_ASSERT_VVERIFY	\
	assert(vs)
PERL_CALLCONV void	Perl_vwarn(pTHX_ const char* pat, va_list* args);
#define PERL_ARGS_ASSERT_VWARN	\
	assert(pat)
PERL_CALLCONV void	Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args);
#define PERL_ARGS_ASSERT_VWARNER	\
	assert(pat)
PERL_CALLCONV I32	Perl_wait4pid(pTHX_ Pid_t pid, int* statusp, int flags);
#define PERL_ARGS_ASSERT_WAIT4PID	\
	assert(statusp)
PERL_CALLCONV void	Perl_warn(pTHX_ const char* pat, ...)
			__attribute__format__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_WARN	\
	assert(pat)

PERL_CALLCONV void	Perl_warn_sv(pTHX_ SV *baseex);
#define PERL_ARGS_ASSERT_WARN_SV	\
	assert(baseex)
PERL_CALLCONV void	Perl_warner(pTHX_ U32 err, const char* pat, ...)
			__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_WARNER	\
	assert(pat)

PERL_CALLCONV I32	Perl_was_lvalue_sub(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_WAS_LVALUE_SUB

PERL_CALLCONV void	Perl_watch(pTHX_ char** addr);
#define PERL_ARGS_ASSERT_WATCH	\
	assert(addr)
/* PERL_CALLCONV I32	whichsig(pTHX_ const char* sig); */
#define PERL_ARGS_ASSERT_WHICHSIG
PERL_CALLCONV I32	Perl_whichsig_pv(pTHX_ const char* sig);
#define PERL_ARGS_ASSERT_WHICHSIG_PV	\
	assert(sig)
PERL_CALLCONV I32	Perl_whichsig_pvn(pTHX_ const char* sig, STRLEN len);
#define PERL_ARGS_ASSERT_WHICHSIG_PVN	\
	assert(sig)
PERL_CALLCONV I32	Perl_whichsig_sv(pTHX_ SV* sigsv);
#define PERL_ARGS_ASSERT_WHICHSIG_SV	\
	assert(sigsv)
PERL_CALLCONV void	Perl_wrap_keyword_plugin(pTHX_ Perl_keyword_plugin_t new_plugin, Perl_keyword_plugin_t *old_plugin_p);
#define PERL_ARGS_ASSERT_WRAP_KEYWORD_PLUGIN	\
	assert(new_plugin); assert(old_plugin_p)
PERL_CALLCONV void	Perl_wrap_op_checker(pTHX_ Optype opcode, Perl_check_t new_checker, Perl_check_t *old_checker_p);
#define PERL_ARGS_ASSERT_WRAP_OP_CHECKER	\
	assert(new_checker); assert(old_checker_p)
PERL_CALLCONV void	Perl_write_to_stderr(pTHX_ SV* msv);
#define PERL_ARGS_ASSERT_WRITE_TO_STDERR	\
	assert(msv)
PERL_CALLCONV void	Perl_xs_boot_epilog(pTHX_ const I32 ax);
#define PERL_ARGS_ASSERT_XS_BOOT_EPILOG
PERL_CALLCONV I32	Perl_xs_handshake(const U32 key, void * v_my_perl, const char * file, ...);
#define PERL_ARGS_ASSERT_XS_HANDSHAKE	\
	assert(v_my_perl); assert(file)
PERL_CALLCONV int	Perl_yyerror(pTHX_ const char *const s);
#define PERL_ARGS_ASSERT_YYERROR	\
	assert(s)
PERL_CALLCONV int	Perl_yyerror_pv(pTHX_ const char *const s, U32 flags);
#define PERL_ARGS_ASSERT_YYERROR_PV	\
	assert(s)
PERL_CALLCONV int	Perl_yyerror_pvn(pTHX_ const char *const s, STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_YYERROR_PVN
PERL_CALLCONV int	Perl_yylex(pTHX);
#define PERL_ARGS_ASSERT_YYLEX
PERL_CALLCONV int	Perl_yyparse(pTHX_ int gramtype);
#define PERL_ARGS_ASSERT_YYPARSE
PERL_CALLCONV void	Perl_yyquit(pTHX);
#define PERL_ARGS_ASSERT_YYQUIT
PERL_CALLCONV void	Perl_yyunlex(pTHX);
#define PERL_ARGS_ASSERT_YYUNLEX
#if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT))
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void *	S_my_memrchr(const char * s, const char c, const STRLEN len);
#define PERL_ARGS_ASSERT_MY_MEMRCHR	\
	assert(s)
#endif
#endif
#if !(!defined(PERL_EXT_RE_BUILD))
#  if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
PERL_CALLCONV SV*	Perl_get_re_gclass_nonbitmap_data(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **lonly_utf8_locale, SV **output_invlist);
#define PERL_ARGS_ASSERT_GET_RE_GCLASS_NONBITMAP_DATA	\
	assert(node)
#  endif
#endif
#if !(defined(DEBUGGING))
#  if !defined(NV_PRESERVES_UV)
#    if defined(PERL_IN_SV_C)
STATIC int	S_sv_2iuv_non_preserve(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE	\
	assert(sv)
#    endif
#  endif
#endif
#if !(defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H))
PERL_CALLCONV const char*	Perl_langinfo(const int item);
#define PERL_ARGS_ASSERT_PERL_LANGINFO
#endif
#if !(defined(HAS_NL_LANGINFO))
#  if defined(PERL_IN_LOCALE_C)
STATIC const char*	S_my_nl_langinfo(const int item, bool toggle);
#define PERL_ARGS_ASSERT_MY_NL_LANGINFO
#  endif
#endif
#if !(defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION))
PERL_CALLCONV bool	Perl_do_exec(pTHX_ const char* cmd);
#define PERL_ARGS_ASSERT_DO_EXEC	\
	assert(cmd)
#endif
#if !(defined(PERL_USE_3ARG_SIGHANDLER))
PERL_CALLCONV Signal_t	Perl_csighandler(int sig);
#define PERL_ARGS_ASSERT_CSIGHANDLER
PERL_CALLCONV Signal_t	Perl_sighandler(int sig);
#define PERL_ARGS_ASSERT_SIGHANDLER
#endif
#if !(defined(_MSC_VER))
PERL_CALLCONV_NO_RET int	Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET	\
	assert(sv); assert(mg)

#endif
#if !defined(EBCDIC)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE unsigned int	Perl_variant_byte_number(PERL_UINTMAX_T word)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_VARIANT_BYTE_NUMBER
#endif

#endif
#if !defined(HAS_GETENV_LEN)
PERL_CALLCONV char*	Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len);
#define PERL_ARGS_ASSERT_GETENV_LEN	\
	assert(env_elem); assert(len)
#endif
#if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
#  if defined(PERL_IN_PP_SYS_C)
STATIC int	S_dooneliner(pTHX_ const char *cmd, const char *filename)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOONELINER	\
	assert(cmd); assert(filename)

#  endif
#endif
#if !defined(HAS_MKOSTEMP)
PERL_CALLCONV int	Perl_my_mkostemp(char *templte, int flags);
#define PERL_ARGS_ASSERT_MY_MKOSTEMP	\
	assert(templte)
#endif
#if !defined(HAS_MKSTEMP)
PERL_CALLCONV int	Perl_my_mkstemp(char *templte);
#define PERL_ARGS_ASSERT_MY_MKSTEMP	\
	assert(templte)
#endif
#if !defined(HAS_RENAME)
PERL_CALLCONV I32	Perl_same_dirent(pTHX_ const char* a, const char* b);
#define PERL_ARGS_ASSERT_SAME_DIRENT	\
	assert(a); assert(b)
#endif
#if !defined(HAS_SIGNBIT)
PERL_CALLCONV int	Perl_signbit(NV f)
			__attribute__warn_unused_result__
			__attribute__pure__;
#define PERL_ARGS_ASSERT_PERL_SIGNBIT

#endif
#if !defined(HAS_STRLCAT)
PERL_CALLCONV Size_t	Perl_my_strlcat(char *dst, const char *src, Size_t size);
#define PERL_ARGS_ASSERT_MY_STRLCAT
#endif
#if !defined(HAS_STRLCPY)
PERL_CALLCONV Size_t	Perl_my_strlcpy(char *dst, const char *src, Size_t size);
#define PERL_ARGS_ASSERT_MY_STRLCPY
#endif
#if !defined(HAS_STRNLEN)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE Size_t	Perl_my_strnlen(const char *str, Size_t maxlen);
#define PERL_ARGS_ASSERT_MY_STRNLEN	\
	assert(str)
#endif
#endif
#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
PERL_CALLCONV I32	Perl_my_chsize(pTHX_ int fd, Off_t length)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MY_CHSIZE

#endif
#if !defined(NV_PRESERVES_UV)
#  if defined(DEBUGGING)
#    if defined(PERL_IN_SV_C)
STATIC int	S_sv_2iuv_non_preserve(pTHX_ SV *const sv, I32 numtype);
#define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE	\
	assert(sv)
#    endif
#  endif
#endif
#if !defined(PERL_DISABLE_PMC)
#  if defined(PERL_IN_PP_CTL_C)
STATIC PerlIO *	S_doopen_pm(pTHX_ SV *name)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOOPEN_PM	\
	assert(name)

#  endif
#endif
#if !defined(PERL_EXT_RE_BUILD)
#  if defined(PERL_IN_REGCOMP_C)
STATIC void	S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);
#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST	\
	assert(invlist)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV*	S__invlist_array_init(SV* const invlist, const bool will_have_0)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE IV*	S_get_invlist_previous_index_addr(SV* invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR	\
	assert(invlist)
#endif

STATIC void	S_initialize_invlist_guts(pTHX_ SV* invlist, const Size_t initial_size);
#define PERL_ARGS_ASSERT_INITIALIZE_INVLIST_GUTS	\
	assert(invlist)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_invlist_clear(pTHX_ SV* invlist);
#define PERL_ARGS_ASSERT_INVLIST_CLEAR	\
	assert(invlist)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV	S_invlist_max(const SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVLIST_MAX	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE IV	S_invlist_previous_index(SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX	\
	assert(invlist)
#endif

STATIC void	S_invlist_replace_list_destroys_src(pTHX_ SV *dest, SV *src);
#define PERL_ARGS_ASSERT_INVLIST_REPLACE_LIST_DESTROYS_SRC	\
	assert(dest); assert(src)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_invlist_set_previous_index(SV* const invlist, const IV index);
#define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX	\
	assert(invlist)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_invlist_trim(SV* invlist);
#define PERL_ARGS_ASSERT_INVLIST_TRIM	\
	assert(invlist)
#endif
#  endif
#  if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
PERL_CALLCONV SV*	Perl_get_regclass_nonbitmap_data(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **lonly_utf8_locale, SV **output_invlist);
#define PERL_ARGS_ASSERT_GET_REGCLASS_NONBITMAP_DATA	\
	assert(node)
#  endif
#endif
#if !defined(PERL_IMPLICIT_SYS)
PERL_CALLCONV I32	Perl_my_pclose(pTHX_ PerlIO* ptr);
#define PERL_ARGS_ASSERT_MY_PCLOSE
PERL_CALLCONV PerlIO*	Perl_my_popen(pTHX_ const char* cmd, const char* mode);
#define PERL_ARGS_ASSERT_MY_POPEN	\
	assert(cmd); assert(mode)
#endif
#if !defined(PERL_IS_MINIPERL)
#  if defined(PERL_IN_PERL_C)
STATIC SV *	S_incpush_if_exists(pTHX_ AV *const av, SV *dir, SV *const stem);
#define PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS	\
	assert(av); assert(dir); assert(stem)
#  endif
#endif
#if !defined(PERL_NO_INLINE_FUNCTIONS)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_popblock(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPBLOCK	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_popeval(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPEVAL	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_popformat(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPFORMAT	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_popgiven(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPGIVEN	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_poploop(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPLOOP	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_popsub(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPSUB	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_popsub_args(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPSUB_ARGS	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_popsub_common(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPSUB_COMMON	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_popwhen(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_POPWHEN	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE PERL_CONTEXT *	Perl_cx_pushblock(pTHX_ U8 type, U8 gimme, SV** sp, I32 saveix);
#define PERL_ARGS_ASSERT_CX_PUSHBLOCK	\
	assert(sp)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv);
#define PERL_ARGS_ASSERT_CX_PUSHEVAL	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_pushformat(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, GV *gv);
#define PERL_ARGS_ASSERT_CX_PUSHFORMAT	\
	assert(cx); assert(cv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_pushgiven(pTHX_ PERL_CONTEXT *cx, SV *orig_defsv);
#define PERL_ARGS_ASSERT_CX_PUSHGIVEN	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_pushloop_for(pTHX_ PERL_CONTEXT *cx, void *itervarp, SV *itersave);
#define PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR	\
	assert(cx); assert(itervarp)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_pushloop_plain(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_pushsub(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, bool hasargs);
#define PERL_ARGS_ASSERT_CX_PUSHSUB	\
	assert(cx); assert(cv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_pushtry(pTHX_ PERL_CONTEXT *cx, OP *retop);
#define PERL_ARGS_ASSERT_CX_PUSHTRY	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_pushwhen(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_PUSHWHEN	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	Perl_cx_topblock(pTHX_ PERL_CONTEXT *cx);
#define PERL_ARGS_ASSERT_CX_TOPBLOCK	\
	assert(cx)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE U8	Perl_gimme_V(pTHX);
#define PERL_ARGS_ASSERT_GIMME_V
#endif
#endif
#if !defined(PERL_NO_UTF16_FILTER)
#  if defined(PERL_IN_TOKE_C)
STATIC U8*	S_add_utf16_textfilter(pTHX_ U8 *const s, bool reversed);
#define PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER	\
	assert(s)
STATIC I32	S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen);
#define PERL_ARGS_ASSERT_UTF16_TEXTFILTER	\
	assert(sv)
#  endif
#endif
#if !defined(PURIFY)
#  if defined(PERL_IN_HV_C)
STATIC HE*	S_new_he(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEW_HE

#  endif
#endif
#if !defined(SETUID_SCRIPTS_ARE_SECURE_NOW)
#  if defined(PERL_IN_PERL_C)
STATIC void	S_validate_suid(pTHX_ PerlIO *rsfp);
#define PERL_ARGS_ASSERT_VALIDATE_SUID	\
	assert(rsfp)
#  endif
#endif
#if !defined(USE_ITHREADS)
/* PERL_CALLCONV void	CopFILEGV_set(pTHX_ COP * c, GV * gv); */
#define PERL_ARGS_ASSERT_COPFILEGV_SET
#endif
#if !defined(WIN32)
PERL_CALLCONV bool	Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report);
#define PERL_ARGS_ASSERT_DO_EXEC3	\
	assert(incmd)
#endif
#if 0	/* Not currently used, but may be needed in the future */
#  if defined(PERL_IN_UTF8_C)
STATIC void	S_warn_on_first_deprecated_use(pTHX_ const char * const name, const char * const alternative, const bool use_locale, const char * const file, const unsigned line);
#define PERL_ARGS_ASSERT_WARN_ON_FIRST_DEPRECATED_USE	\
	assert(name); assert(alternative); assert(file)
#  endif
#endif
#if defined (HAS_SOCKETPAIR) ||     (defined (HAS_SOCKET) && defined(SOCK_DGRAM) && 	defined(AF_INET) && defined(PF_INET))
PERL_CALLCONV int	Perl_PerlSock_socketpair_cloexec(pTHX_ int domain, int type, int protocol, int *pairfd)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLSOCK_SOCKETPAIR_CLOEXEC	\
	assert(pairfd)

#endif
#if defined(DEBUGGING)
PERL_CALLCONV int	Perl_get_debug_opts(pTHX_ const char **s, bool givehelp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_DEBUG_OPTS	\
	assert(s)

PERL_CALLCONV void	Perl_hv_assert(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_ASSERT	\
	assert(hv)
PERL_CALLCONV void	Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv);
#define PERL_ARGS_ASSERT_PAD_SETSV	\
	assert(sv)
PERL_CALLCONV SV*	Perl_pad_sv(pTHX_ PADOFFSET po);
#define PERL_ARGS_ASSERT_PAD_SV
PERL_CALLCONV void	Perl_set_padlist(CV * cv, PADLIST * padlist);
#define PERL_ARGS_ASSERT_SET_PADLIST	\
	assert(cv)
#  if defined(PERL_IN_LOCALE_C)
#    if defined(USE_LOCALE)
STATIC void	S_print_bytes_for_locale(pTHX_ const char * const s, const char * const e, const bool is_utf8);
#define PERL_ARGS_ASSERT_PRINT_BYTES_FOR_LOCALE	\
	assert(s); assert(e)
STATIC void	S_print_collxfrm_input_and_return(pTHX_ const char * const s, const char * const e, const STRLEN * const xlen, const bool is_utf8);
#define PERL_ARGS_ASSERT_PRINT_COLLXFRM_INPUT_AND_RETURN	\
	assert(s); assert(e)
STATIC char *	S_setlocale_debug_string(const int category, const char* const locale, const char* const retval)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SETLOCALE_DEBUG_STRING

#    endif
#  endif
#  if defined(PERL_IN_PAD_C)
STATIC void	S_cv_dump(pTHX_ const CV *cv, const char *title);
#define PERL_ARGS_ASSERT_CV_DUMP	\
	assert(cv); assert(title)
#  endif
#  if defined(PERL_IN_REGCOMP_C)
STATIC void	S_dump_trie(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 depth);
#define PERL_ARGS_ASSERT_DUMP_TRIE	\
	assert(trie); assert(revcharmap)
STATIC void	S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth);
#define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST	\
	assert(trie); assert(revcharmap)
STATIC void	S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth);
#define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE	\
	assert(trie); assert(revcharmap)
STATIC const regnode*	S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth);
#define PERL_ARGS_ASSERT_DUMPUNTIL	\
	assert(r); assert(start); assert(node); assert(sv)
STATIC bool	S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const U8 flags, const bool force_as_is_display);
#define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS	\
	assert(sv)
STATIC SV*	S_put_charclass_bitmap_innards_common(pTHX_ SV* invlist, SV* posixes, SV* only_utf8, SV* not_utf8, SV* only_utf8_locale, const bool invert);
#define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS_COMMON	\
	assert(invlist)
STATIC void	S_put_charclass_bitmap_innards_invlist(pTHX_ SV *sv, SV* invlist);
#define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS_INVLIST	\
	assert(sv); assert(invlist)
STATIC void	S_put_code_point(pTHX_ SV* sv, UV c);
#define PERL_ARGS_ASSERT_PUT_CODE_POINT	\
	assert(sv)
STATIC void	S_put_range(pTHX_ SV* sv, UV start, const UV end, const bool allow_literals);
#define PERL_ARGS_ASSERT_PUT_RANGE	\
	assert(sv)
PERL_CALLCONV int	Perl_re_indentf(pTHX_ const char *fmt, U32 depth, ...);
#define PERL_ARGS_ASSERT_RE_INDENTF	\
	assert(fmt)
STATIC void	S_regdump_extflags(pTHX_ const char *lead, const U32 flags);
#define PERL_ARGS_ASSERT_REGDUMP_EXTFLAGS
STATIC void	S_regdump_intflags(pTHX_ const char *lead, const U32 flags);
#define PERL_ARGS_ASSERT_REGDUMP_INTFLAGS
STATIC regnode_offset	S_regnode_guts_debug(pTHX_ RExC_state_t *pRExC_state, const U8 op, const STRLEN extra_len);
#define PERL_ARGS_ASSERT_REGNODE_GUTS_DEBUG	\
	assert(pRExC_state)
STATIC bool	S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, const regnode_offset val, U32 depth)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGTAIL_STUDY	\
	assert(pRExC_state); assert(p); assert(val)

#  endif
#  if defined(PERL_IN_REGEXEC_C)
STATIC void	S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, const char *start, const char *end, const char *blurb);
#define PERL_ARGS_ASSERT_DEBUG_START_MATCH	\
	assert(prog); assert(start); assert(end); assert(blurb)
STATIC void	S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8, const U32 depth);
#define PERL_ARGS_ASSERT_DUMP_EXEC_POS	\
	assert(locinput); assert(scan); assert(loc_regeol); assert(loc_bostr); assert(loc_reg_starttry)
PERL_CALLCONV int	Perl_re_exec_indentf(pTHX_ const char *fmt, U32 depth, ...);
#define PERL_ARGS_ASSERT_RE_EXEC_INDENTF	\
	assert(fmt)
#  endif
#  if defined(PERL_IN_SV_C)
STATIC void	S_del_sv(pTHX_ SV *p);
#define PERL_ARGS_ASSERT_DEL_SV	\
	assert(p)
#  endif
#  if defined(PERL_IN_TOKE_C)
STATIC void	S_printbuf(pTHX_ const char *const fmt, const char *const s)
			__attribute__format__(__printf__,pTHX_1,0);
#define PERL_ARGS_ASSERT_PRINTBUF	\
	assert(fmt); assert(s)

STATIC int	S_tokereport(pTHX_ I32 rv, const YYSTYPE* lvalp);
#define PERL_ARGS_ASSERT_TOKEREPORT	\
	assert(lvalp)
#  endif
#endif
#if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING)
#  if defined(PERL_IN_REGCOMP_C)
STATIC void	S_dump_regex_sets_structures(pTHX_ RExC_state_t *pRExC_state, AV * stack, const IV fence, AV * fence_stack);
#define PERL_ARGS_ASSERT_DUMP_REGEX_SETS_STRUCTURES	\
	assert(pRExC_state); assert(stack); assert(fence_stack)
#  endif
#endif
#if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP)
PERL_CALLCONV void	Perl_dump_sv_child(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_DUMP_SV_CHILD	\
	assert(sv)
#endif
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
PERL_CALLCONV I32	Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_IPCCTL	\
	assert(mark); assert(sp)
PERL_CALLCONV I32	Perl_do_ipcget(pTHX_ I32 optype, SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_IPCGET	\
	assert(mark); assert(sp)
PERL_CALLCONV I32	Perl_do_msgrcv(pTHX_ SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_MSGRCV	\
	assert(mark); assert(sp)
PERL_CALLCONV I32	Perl_do_msgsnd(pTHX_ SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_MSGSND	\
	assert(mark); assert(sp)
PERL_CALLCONV I32	Perl_do_semop(pTHX_ SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_SEMOP	\
	assert(mark); assert(sp)
PERL_CALLCONV I32	Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_SHMIO	\
	assert(mark); assert(sp)
#endif
#if defined(HAS_NL_LANGINFO)
#  if defined(PERL_IN_LOCALE_C)
STATIC const char*	S_my_nl_langinfo(const nl_item item, bool toggle);
#define PERL_ARGS_ASSERT_MY_NL_LANGINFO
#  endif
#endif
#if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
PERL_CALLCONV const char*	Perl_langinfo(const nl_item item);
#define PERL_ARGS_ASSERT_PERL_LANGINFO
#endif
#if defined(HAS_PIPE)
PERL_CALLCONV int	Perl_PerlProc_pipe_cloexec(pTHX_ int *pipefd)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLPROC_PIPE_CLOEXEC	\
	assert(pipefd)

#endif
#if defined(HAS_SOCKET)
PERL_CALLCONV int	Perl_PerlSock_accept_cloexec(pTHX_ int listenfd, struct sockaddr *addr, Sock_size_t *addrlen)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLSOCK_ACCEPT_CLOEXEC

PERL_CALLCONV int	Perl_PerlSock_socket_cloexec(pTHX_ int domain, int type, int protocol)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLSOCK_SOCKET_CLOEXEC

#endif
#if defined(HAVE_INTERP_INTERN)
PERL_CALLCONV void	Perl_sys_intern_clear(pTHX);
#define PERL_ARGS_ASSERT_SYS_INTERN_CLEAR
PERL_CALLCONV void	Perl_sys_intern_init(pTHX);
#define PERL_ARGS_ASSERT_SYS_INTERN_INIT
#  if defined(USE_ITHREADS)
PERL_CALLCONV void	Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst);
#define PERL_ARGS_ASSERT_SYS_INTERN_DUP	\
	assert(src); assert(dst)
#  endif
#endif
#if defined(MULTIPLICITY)
PERL_CALLCONV_NO_RET void	Perl_croak_nocontext(const char* pat, ...)
			__attribute__noreturn__
			__attribute__format__null_ok__(__printf__,1,2);
#define PERL_ARGS_ASSERT_CROAK_NOCONTEXT

PERL_CALLCONV void	Perl_deb_nocontext(const char* pat, ...)
			__attribute__format__(__printf__,1,2);
#define PERL_ARGS_ASSERT_DEB_NOCONTEXT	\
	assert(pat)

PERL_CALLCONV_NO_RET OP*	Perl_die_nocontext(const char* pat, ...)
			__attribute__noreturn__
			__attribute__format__null_ok__(__printf__,1,2);
#define PERL_ARGS_ASSERT_DIE_NOCONTEXT

PERL_CALLCONV char*	Perl_form_nocontext(const char* pat, ...)
			__attribute__format__(__printf__,1,2);
#define PERL_ARGS_ASSERT_FORM_NOCONTEXT	\
	assert(pat)

#ifndef NO_MATHOMS
PERL_CALLCONV int	Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
			__attribute__deprecated__
			__attribute__format__(__printf__,2,3);
#define PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT	\
	assert(stream); assert(format)
#endif

PERL_CALLCONV void	Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...);
#define PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT	\
	assert(name)
PERL_CALLCONV SV*	Perl_mess_nocontext(const char* pat, ...)
			__attribute__format__(__printf__,1,2);
#define PERL_ARGS_ASSERT_MESS_NOCONTEXT	\
	assert(pat)

PERL_CALLCONV void*	Perl_my_cxt_init(pTHX_ int *indexp, size_t size);
#define PERL_ARGS_ASSERT_MY_CXT_INIT	\
	assert(indexp)
PERL_CALLCONV SV*	Perl_newSVpvf_nocontext(const char *const pat, ...)
			__attribute__format__(__printf__,1,2);
#define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT	\
	assert(pat)

#ifndef NO_MATHOMS
PERL_CALLCONV int	Perl_printf_nocontext(const char *format, ...)
			__attribute__deprecated__
			__attribute__format__(__printf__,1,2);
#define PERL_ARGS_ASSERT_PRINTF_NOCONTEXT	\
	assert(format)
#endif

PERL_CALLCONV void	Perl_sv_catpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
			__attribute__format__(__printf__,2,3);
#define PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT	\
	assert(sv); assert(pat)

PERL_CALLCONV void	Perl_sv_catpvf_nocontext(SV *const sv, const char *const pat, ...)
			__attribute__format__(__printf__,2,3);
#define PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT	\
	assert(sv); assert(pat)

PERL_CALLCONV void	Perl_sv_setpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
			__attribute__format__(__printf__,2,3);
#define PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT	\
	assert(sv); assert(pat)

PERL_CALLCONV void	Perl_sv_setpvf_nocontext(SV *const sv, const char *const pat, ...)
			__attribute__format__(__printf__,2,3);
#define PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT	\
	assert(sv); assert(pat)

PERL_CALLCONV void	Perl_warn_nocontext(const char* pat, ...)
			__attribute__format__(__printf__,1,2);
#define PERL_ARGS_ASSERT_WARN_NOCONTEXT	\
	assert(pat)

PERL_CALLCONV void	Perl_warner_nocontext(U32 err, const char* pat, ...)
			__attribute__format__(__printf__,2,3);
#define PERL_ARGS_ASSERT_WARNER_NOCONTEXT	\
	assert(pat)

#endif
#if defined(MYMALLOC)
PERL_CALLCONV void	Perl_dump_mstats(pTHX_ const char* s);
#define PERL_ARGS_ASSERT_DUMP_MSTATS	\
	assert(s)
PERL_CALLCONV int	Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level);
#define PERL_ARGS_ASSERT_GET_MSTATS	\
	assert(buf)
PERL_CALLCONV MEM_SIZE	Perl_malloc_good_size(size_t nbytes)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MALLOC_GOOD_SIZE

PERL_CALLCONV MEM_SIZE	Perl_malloced_size(void *p)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MALLOCED_SIZE	\
	assert(p)

#endif
#if defined(PERL_ANY_COW)
PERL_CALLCONV SV*	Perl_sv_setsv_cow(pTHX_ SV* dsv, SV* ssv);
#define PERL_ARGS_ASSERT_SV_SETSV_COW	\
	assert(ssv)
#endif
#if defined(PERL_CORE)
PERL_CALLCONV void	Perl_opslab_force_free(pTHX_ OPSLAB *slab);
#define PERL_ARGS_ASSERT_OPSLAB_FORCE_FREE	\
	assert(slab)
PERL_CALLCONV void	Perl_opslab_free(pTHX_ OPSLAB *slab);
#define PERL_ARGS_ASSERT_OPSLAB_FREE	\
	assert(slab)
PERL_CALLCONV void	Perl_opslab_free_nopad(pTHX_ OPSLAB *slab);
#define PERL_ARGS_ASSERT_OPSLAB_FREE_NOPAD	\
	assert(slab)
PERL_CALLCONV void	Perl_parser_free_nexttoke_ops(pTHX_ yy_parser *parser, OPSLAB *slab);
#define PERL_ARGS_ASSERT_PARSER_FREE_NEXTTOKE_OPS	\
	assert(parser); assert(slab)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S_should_warn_nl(const char *pv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SHOULD_WARN_NL	\
	assert(pv)
#endif

#  if defined(PERL_DEBUG_READONLY_OPS)
PERL_CALLCONV void	Perl_Slab_to_ro(pTHX_ OPSLAB *slab);
#define PERL_ARGS_ASSERT_SLAB_TO_RO	\
	assert(slab)
PERL_CALLCONV void	Perl_Slab_to_rw(pTHX_ OPSLAB *const slab);
#define PERL_ARGS_ASSERT_SLAB_TO_RW	\
	assert(slab)
#  endif
#endif
#if defined(PERL_CORE) || defined (PERL_EXT)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	Perl_is_utf8_non_invariant_string(const U8* const s, STRLEN len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_NON_INVARIANT_STRING	\
	assert(s)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE STRLEN	S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp);
#define PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B	\
	assert(sv); assert(pv)
#endif
#endif
#if defined(PERL_CORE) || defined(PERL_EXT)
PERL_CALLCONV bool	Perl_isSCRIPT_RUN(pTHX_ const U8 *s, const U8 *send, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISSCRIPT_RUN	\
	assert(s); assert(send)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE Size_t	S_variant_under_utf8_count(const U8* const s, const U8* const e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_VARIANT_UNDER_UTF8_COUNT	\
	assert(s); assert(e)
#endif

#endif
#if defined(PERL_CR_FILTER)
#  if defined(PERL_IN_TOKE_C)
STATIC I32	S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen);
#define PERL_ARGS_ASSERT_CR_TEXTFILTER
STATIC void	S_strip_return(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_STRIP_RETURN	\
	assert(sv)
#  endif
#endif
#if defined(PERL_DEBUG_READONLY_COW)
PERL_CALLCONV void	Perl_sv_buf_to_ro(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_BUF_TO_RO	\
	assert(sv)
#  if defined(PERL_IN_SV_C)
STATIC void	S_sv_buf_to_rw(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_BUF_TO_RW	\
	assert(sv)
#  endif
#endif
#if defined(PERL_DEBUG_READONLY_OPS)
PERL_CALLCONV PADOFFSET	Perl_op_refcnt_dec(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_OP_REFCNT_DEC	\
	assert(o)
PERL_CALLCONV OP *	Perl_op_refcnt_inc(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_OP_REFCNT_INC
#endif
#if defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)
PERL_CALLCONV bool	Perl_do_exec(pTHX_ const char* cmd);
#define PERL_ARGS_ASSERT_DO_EXEC	\
	assert(cmd)
#endif
#if defined(PERL_DONT_CREATE_GVSV)
#ifndef NO_MATHOMS
PERL_CALLCONV GV*	Perl_gv_SVadd(pTHX_ GV *gv);
#define PERL_ARGS_ASSERT_GV_SVADD
#endif
#endif
#if defined(PERL_IMPLICIT_SYS)
PERL_CALLCONV PerlInterpreter*	perl_alloc_using(struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP);
#define PERL_ARGS_ASSERT_PERL_ALLOC_USING	\
	assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP)
#  if defined(USE_ITHREADS)
PERL_CALLCONV PerlInterpreter*	perl_clone_using(PerlInterpreter *proto_perl, UV flags, struct IPerlMem* ipM, struct IPerlMem* ipMS, struct IPerlMem* ipMP, struct IPerlEnv* ipE, struct IPerlStdIO* ipStd, struct IPerlLIO* ipLIO, struct IPerlDir* ipD, struct IPerlSock* ipS, struct IPerlProc* ipP);
#define PERL_ARGS_ASSERT_PERL_CLONE_USING	\
	assert(proto_perl); assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP)
#  endif
#endif
#if defined(PERL_IN_AV_C)
STATIC MAGIC*	S_get_aux_mg(pTHX_ AV *av);
#define PERL_ARGS_ASSERT_GET_AUX_MG	\
	assert(av)
#endif
#if defined(PERL_IN_DEB_C)
STATIC void	S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max);
#define PERL_ARGS_ASSERT_DEB_STACK_N	\
	assert(stack_base)
#endif
#if defined(PERL_IN_DOIO_C)
STATIC bool	S_argvout_final(pTHX_ MAGIC *mg, IO *io, bool not_implicit);
#define PERL_ARGS_ASSERT_ARGVOUT_FINAL	\
	assert(mg); assert(io)
STATIC void	S_exec_failed(pTHX_ const char *cmd, int fd, int do_report);
#define PERL_ARGS_ASSERT_EXEC_FAILED	\
	assert(cmd)
STATIC bool	S_ingroup(pTHX_ Gid_t testgid, bool effective)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INGROUP

STATIC bool	S_openn_cleanup(pTHX_ GV *gv, IO *io, PerlIO *fp, char *mode, const char *oname, PerlIO *saveifp, PerlIO *saveofp, int savefd, char savetype, int writing, bool was_fdopen, const char *type, Stat_t *statbufp);
#define PERL_ARGS_ASSERT_OPENN_CLEANUP	\
	assert(gv); assert(io); assert(mode); assert(oname)
STATIC IO *	S_openn_setup(pTHX_ GV *gv, char *mode, PerlIO **saveifp, PerlIO **saveofp, int *savefd, char *savetype);
#define PERL_ARGS_ASSERT_OPENN_SETUP	\
	assert(gv); assert(mode); assert(saveifp); assert(saveofp); assert(savefd); assert(savetype)
#endif
#if defined(PERL_IN_DOOP_C)
STATIC Size_t	S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX	\
	assert(sv); assert(tbl)

STATIC Size_t	S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_TRANS_COUNT	\
	assert(sv); assert(tbl)

STATIC Size_t	S_do_trans_count_invmap(pTHX_ SV * const sv, AV * const map)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_TRANS_COUNT_INVMAP	\
	assert(sv); assert(map)

STATIC Size_t	S_do_trans_invmap(pTHX_ SV * const sv, AV * const map)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_TRANS_INVMAP	\
	assert(sv); assert(map)

STATIC Size_t	S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE	\
	assert(sv); assert(tbl)

#endif
#if defined(PERL_IN_DUMP_C)
STATIC CV*	S_deb_curcv(pTHX_ I32 ix);
#define PERL_ARGS_ASSERT_DEB_CURCV
STATIC void	S_debprof(pTHX_ const OP *o);
#define PERL_ARGS_ASSERT_DEBPROF	\
	assert(o)
STATIC SV*	S_pm_description(pTHX_ const PMOP *pm);
#define PERL_ARGS_ASSERT_PM_DESCRIPTION	\
	assert(pm)
STATIC UV	S_sequence_num(pTHX_ const OP *o);
#define PERL_ARGS_ASSERT_SEQUENCE_NUM
#endif
#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_SCOPE_C)
PERL_CALLCONV void	Perl_hv_kill_backrefs(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_KILL_BACKREFS	\
	assert(hv)
#endif
#if defined(PERL_IN_GV_C)
STATIC bool	S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len, const U32 is_utf8, const I32 add, const svtype sv_type);
#define PERL_ARGS_ASSERT_FIND_DEFAULT_STASH	\
	assert(stash); assert(name)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE GV*	S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len, I32 level, U32 flags);
#define PERL_ARGS_ASSERT_GV_FETCHMETH_INTERNAL
#endif
STATIC void	S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type);
#define PERL_ARGS_ASSERT_GV_INIT_SVTYPE	\
	assert(gv)
STATIC bool	S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8);
#define PERL_ARGS_ASSERT_GV_IS_IN_MAIN	\
	assert(name)
STATIC bool	S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, const svtype sv_type);
#define PERL_ARGS_ASSERT_GV_MAGICALIZE	\
	assert(gv); assert(stash); assert(name)
STATIC void	S_gv_magicalize_isa(pTHX_ GV *gv);
#define PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA	\
	assert(gv)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE HV*	S_gv_stashpvn_internal(pTHX_ const char* name, U32 namelen, I32 flags);
#define PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL	\
	assert(name)
#endif
STATIC void	S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type);
#define PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV	\
	assert(gv); assert(name)
STATIC bool	S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name, STRLEN *len, const char *nambeg, STRLEN full_len, const U32 is_utf8, const I32 add);
#define PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME	\
	assert(stash); assert(gv); assert(name); assert(len); assert(nambeg)
STATIC void	S_require_tie_mod(pTHX_ GV *gv, const char varname, const char * name, STRLEN len, const U32 flags);
#define PERL_ARGS_ASSERT_REQUIRE_TIE_MOD	\
	assert(gv); assert(varname); assert(name)
#endif
#if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
PERL_CALLCONV void	Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv);
#define PERL_ARGS_ASSERT_SV_ADD_BACKREF	\
	assert(tsv); assert(sv)
#endif
#if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C)
PERL_CALLCONV HV*	Perl_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char* name, U32 namelen, I32 flags);
#endif
#if defined(PERL_IN_HV_C)
STATIC void	S_clear_placeholders(pTHX_ HV *hv, U32 items);
#define PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS	\
	assert(hv)
STATIC void	S_hsplit(pTHX_ HV *hv, STRLEN const oldsize, STRLEN newsize);
#define PERL_ARGS_ASSERT_HSPLIT	\
	assert(hv)
STATIC struct xpvhv_aux*	S_hv_auxinit(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_AUXINIT	\
	assert(hv)
STATIC SV*	S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, int k_flags, I32 d_flags, U32 hash);
#define PERL_ARGS_ASSERT_HV_DELETE_COMMON
STATIC SV*	S_hv_free_ent_ret(pTHX_ HE *entry);
#define PERL_ARGS_ASSERT_HV_FREE_ENT_RET	\
	assert(entry)
STATIC void	S_hv_free_entries(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_FREE_ENTRIES	\
	assert(hv)
STATIC void	S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store);
#define PERL_ARGS_ASSERT_HV_MAGIC_CHECK	\
	assert(hv); assert(needs_copy); assert(needs_store)
PERL_STATIC_NO_RET void	S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_HV_NOTALLOWED	\
	assert(key); assert(msg)

STATIC SV *	S_refcounted_he_value(pTHX_ const struct refcounted_he *he);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE	\
	assert(he)
STATIC HEK*	S_save_hek_flags(const char *str, I32 len, U32 hash, int flags)
			__attribute__malloc__
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVE_HEK_FLAGS	\
	assert(str)

STATIC HEK*	S_share_hek_flags(pTHX_ const char *str, STRLEN len, U32 hash, int flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SHARE_HEK_FLAGS	\
	assert(str)

STATIC void	S_unshare_hek_or_pvn(pTHX_ const HEK* hek, const char* str, I32 len, U32 hash);
#define PERL_ARGS_ASSERT_UNSHARE_HEK_OR_PVN
#endif
#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C)
PERL_CALLCONV void	Perl_sv_kill_backrefs(pTHX_ SV *const sv, AV *const av);
#define PERL_ARGS_ASSERT_SV_KILL_BACKREFS	\
	assert(sv)
#endif
#if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C)
PERL_CALLCONV SV*	Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp);
#define PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY	\
	assert(hv); assert(indexp)
#endif
#if defined(PERL_IN_LOCALE_C)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE const char *	S_save_to_buffer(const char * string, char **buf, Size_t *buf_size, const Size_t offset)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVE_TO_BUFFER	\
	assert(buf_size)
#endif

#  if defined(USE_LOCALE)
STATIC const char*	S_category_name(const int category);
#define PERL_ARGS_ASSERT_CATEGORY_NAME
STATIC void	S_new_collate(pTHX_ const char* newcoll);
#define PERL_ARGS_ASSERT_NEW_COLLATE
STATIC void	S_new_ctype(pTHX_ const char* newctype);
#define PERL_ARGS_ASSERT_NEW_CTYPE	\
	assert(newctype)
STATIC void	S_new_numeric(pTHX_ const char* newnum);
#define PERL_ARGS_ASSERT_NEW_NUMERIC
STATIC void	S_restore_switched_locale(pTHX_ const int category, const char * const original_locale);
#define PERL_ARGS_ASSERT_RESTORE_SWITCHED_LOCALE
STATIC void	S_set_numeric_radix(pTHX_ const bool use_locale);
#define PERL_ARGS_ASSERT_SET_NUMERIC_RADIX
STATIC char*	S_stdize_locale(pTHX_ char* locs);
#define PERL_ARGS_ASSERT_STDIZE_LOCALE	\
	assert(locs)
STATIC const char*	S_switch_category_locale_to_template(pTHX_ const int switch_category, const int template_category, const char * template_locale);
#define PERL_ARGS_ASSERT_SWITCH_CATEGORY_LOCALE_TO_TEMPLATE
#    if defined(USE_POSIX_2008_LOCALE)
STATIC const char*	S_emulate_setlocale(const int category, const char* locale, unsigned int index, const bool is_index_valid);
#define PERL_ARGS_ASSERT_EMULATE_SETLOCALE
#    endif
#    if defined(WIN32)
STATIC char*	S_win32_setlocale(pTHX_ int category, const char* locale);
#define PERL_ARGS_ASSERT_WIN32_SETLOCALE
#    endif
#  endif
#endif
#if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C)
#  if defined(USE_LOCALE_COLLATE)
PERL_CALLCONV char*	Perl__mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen, bool utf8);
#define PERL_ARGS_ASSERT__MEM_COLLXFRM	\
	assert(input_string); assert(xlen)
#  endif
#endif
#if defined(PERL_IN_MALLOC_C)
STATIC int	S_adjust_size_and_find_bucket(size_t *nbytes_p);
#define PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET	\
	assert(nbytes_p)
#endif
#if defined(PERL_IN_MG_C)
STATIC void	S_fixup_errno_string(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_FIXUP_ERRNO_STRING	\
	assert(sv)
STATIC SV*	S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, int n, SV *val);
#define PERL_ARGS_ASSERT_MAGIC_METHCALL1	\
	assert(sv); assert(mg); assert(meth)
STATIC int	S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, SV *meth);
#define PERL_ARGS_ASSERT_MAGIC_METHPACK	\
	assert(sv); assert(mg); assert(meth)
STATIC void	S_restore_magic(pTHX_ const void *p);
#define PERL_ARGS_ASSERT_RESTORE_MAGIC
STATIC void	S_save_magic_flags(pTHX_ I32 mgs_ix, SV *sv, U32 flags);
#define PERL_ARGS_ASSERT_SAVE_MAGIC_FLAGS	\
	assert(sv)
STATIC void	S_unwind_handler_stack(pTHX_ const void *p);
#define PERL_ARGS_ASSERT_UNWIND_HANDLER_STACK
#endif
#if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
PERL_CALLCONV bool	Perl_translate_substr_offsets(STRLEN curlen, IV pos1_iv, bool pos1_is_uv, IV len_iv, bool len_is_uv, STRLEN *posp, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TRANSLATE_SUBSTR_OFFSETS	\
	assert(posp); assert(lenp)
#endif
#if defined(PERL_IN_MRO_C)
STATIC void	S_mro_clean_isarev(pTHX_ HV * const isa, const char * const name, const STRLEN len, HV * const exceptions, U32 hash, U32 flags);
#define PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV	\
	assert(isa); assert(name)
STATIC void	S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes, HV *stash, HV *oldstash, SV *namesv);
#define PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME	\
	assert(stashes); assert(seen_stashes); assert(namesv)
STATIC AV*	S_mro_get_linear_isa_dfs(pTHX_ HV* stash, U32 level);
#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS	\
	assert(stash)
#endif
#if defined(PERL_IN_NUMERIC_C)
STATIC void	S_output_non_portable(pTHX_ const U8 shift);
#define PERL_ARGS_ASSERT_OUTPUT_NON_PORTABLE
#endif
#if defined(PERL_IN_OP_C)
STATIC void	S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs);
#define PERL_ARGS_ASSERT_APPLY_ATTRS	\
	assert(stash); assert(target)
STATIC void	S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp);
#define PERL_ARGS_ASSERT_APPLY_ATTRS_MY	\
	assert(stash); assert(target); assert(imopsp)
STATIC I32	S_assignment_type(pTHX_ const OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ASSIGNMENT_TYPE

STATIC void	S_bad_type_gv(pTHX_ I32 n, GV *gv, const OP *kid, const char *t);
#define PERL_ARGS_ASSERT_BAD_TYPE_GV	\
	assert(gv); assert(kid); assert(t)
STATIC void	S_bad_type_pv(pTHX_ I32 n, const char *t, const OP *o, const OP *kid);
#define PERL_ARGS_ASSERT_BAD_TYPE_PV	\
	assert(t); assert(o); assert(kid)
STATIC void	S_clear_special_blocks(pTHX_ const char *const fullname, GV *const gv, CV *const cv);
#define PERL_ARGS_ASSERT_CLEAR_SPECIAL_BLOCKS	\
	assert(fullname); assert(gv); assert(cv)
STATIC void	S_cop_free(pTHX_ COP *cop);
#define PERL_ARGS_ASSERT_COP_FREE	\
	assert(cop)
STATIC OP *	S_dup_attrlist(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_DUP_ATTRLIST	\
	assert(o)
STATIC void	S_finalize_op(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_FINALIZE_OP	\
	assert(o)
STATIC void	S_find_and_forget_pmops(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS	\
	assert(o)
STATIC OP*	S_fold_constants(pTHX_ OP * const o);
#define PERL_ARGS_ASSERT_FOLD_CONSTANTS	\
	assert(o)
STATIC OP*	S_force_list(pTHX_ OP* arg, bool nullit);
#define PERL_ARGS_ASSERT_FORCE_LIST
STATIC void	S_forget_pmop(pTHX_ PMOP *const o);
#define PERL_ARGS_ASSERT_FORGET_PMOP	\
	assert(o)
STATIC void	S_gen_constant_list(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_GEN_CONSTANT_LIST
STATIC void	S_inplace_aassign(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_INPLACE_AASSIGN	\
	assert(o)
STATIC bool	S_is_handle_constructor(const OP *o, I32 numargs)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_HANDLE_CONSTRUCTOR	\
	assert(o)

STATIC OP*	S_listkids(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_LISTKIDS
STATIC bool	S_looks_like_bool(pTHX_ const OP* o);
#define PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL	\
	assert(o)
STATIC OP*	S_modkids(pTHX_ OP *o, I32 type);
#define PERL_ARGS_ASSERT_MODKIDS
STATIC void	S_move_proto_attr(pTHX_ OP **proto, OP **attrs, const GV *name, bool curstash);
#define PERL_ARGS_ASSERT_MOVE_PROTO_ATTR	\
	assert(proto); assert(attrs); assert(name)
STATIC OP *	S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp);
#define PERL_ARGS_ASSERT_MY_KID	\
	assert(imopsp)
STATIC OP*	S_newGIVWHENOP(pTHX_ OP* cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg);
#define PERL_ARGS_ASSERT_NEWGIVWHENOP	\
	assert(block)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE OP*	S_newMETHOP_internal(pTHX_ I32 type, I32 flags, OP* dynamic_meth, SV* const_meth);
#define PERL_ARGS_ASSERT_NEWMETHOP_INTERNAL
#endif
STATIC OP*	S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEW_LOGOP	\
	assert(firstp); assert(otherp)

STATIC void	S_no_bareword_allowed(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED	\
	assert(o)
STATIC OP*	S_no_fh_allowed(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NO_FH_ALLOWED	\
	assert(o)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE OP*	S_op_integerize(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_OP_INTEGERIZE	\
	assert(o)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE OP*	S_op_std_init(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_OP_STD_INIT	\
	assert(o)
#endif
STATIC void	S_optimize_op(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_OPTIMIZE_OP	\
	assert(o)
STATIC OP*	S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl);
#define PERL_ARGS_ASSERT_PMTRANS	\
	assert(o); assert(expr); assert(repl)
STATIC bool	S_process_special_blocks(pTHX_ I32 floor, const char *const fullname, GV *const gv, CV *const cv);
#define PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS	\
	assert(fullname); assert(gv); assert(cv)
STATIC OP*	S_ref_array_or_hash(pTHX_ OP* cond);
#define PERL_ARGS_ASSERT_REF_ARRAY_OR_HASH
STATIC OP*	S_refkids(pTHX_ OP* o, I32 type);
#define PERL_ARGS_ASSERT_REFKIDS
STATIC bool	S_scalar_mod_type(const OP *o, I32 type)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCALAR_MOD_TYPE

STATIC OP*	S_scalarboolean(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_SCALARBOOLEAN	\
	assert(o)
STATIC OP*	S_scalarkids(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_SCALARKIDS
STATIC OP*	S_search_const(pTHX_ OP *o)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SEARCH_CONST	\
	assert(o)

STATIC void	S_simplify_sort(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_SIMPLIFY_SORT	\
	assert(o)
STATIC OP*	S_too_few_arguments_pv(pTHX_ OP *o, const char* name, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_TOO_FEW_ARGUMENTS_PV	\
	assert(o); assert(name)

STATIC OP*	S_too_many_arguments_pv(pTHX_ OP *o, const char* name, U32 flags);
#define PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV	\
	assert(o); assert(name)
STATIC OP*	S_traverse_op_tree(pTHX_ OP* top, OP* o);
#define PERL_ARGS_ASSERT_TRAVERSE_OP_TREE	\
	assert(top); assert(o)
STATIC OP*	S_voidnonfinal(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_VOIDNONFINAL
#  if defined(USE_ITHREADS)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_op_relocate_sv(pTHX_ SV** svp, PADOFFSET* targp);
#define PERL_ARGS_ASSERT_OP_RELOCATE_SV	\
	assert(svp); assert(targp)
#endif
#  endif
#endif
#if defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C)
PERL_CALLCONV void	Perl_report_redefined_cv(pTHX_ const SV *name, const CV *old_cv, SV * const *new_const_svp);
#define PERL_ARGS_ASSERT_REPORT_REDEFINED_CV	\
	assert(name); assert(old_cv)
#endif
#if defined(PERL_IN_PAD_C)
STATIC PADOFFSET	S_pad_alloc_name(pTHX_ PADNAME *name, U32 flags, HV *typestash, HV *ourstash);
#define PERL_ARGS_ASSERT_PAD_ALLOC_NAME	\
	assert(name)
STATIC void	S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash);
#define PERL_ARGS_ASSERT_PAD_CHECK_DUP	\
	assert(name)
STATIC PADOFFSET	S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv, U32 seq, int warn, SV** out_capture, PADNAME** out_name, int *out_flags);
#define PERL_ARGS_ASSERT_PAD_FINDLEX	\
	assert(namepv); assert(cv); assert(out_name); assert(out_flags)
STATIC void	S_pad_reset(pTHX);
#define PERL_ARGS_ASSERT_PAD_RESET
#endif
#if defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S_PadnameIN_SCOPE(const PADNAME * const pn, const U32 seq);
#define PERL_ARGS_ASSERT_PADNAMEIN_SCOPE	\
	assert(pn)
#endif
#endif
#if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C)
#ifndef NO_MATHOMS
PERL_CALLCONV OP*	Perl_ref(pTHX_ OP* o, I32 type);
#define PERL_ARGS_ASSERT_REF
#endif
#endif
#if defined(PERL_IN_PERL_C)
STATIC void	S_find_beginning(pTHX_ SV* linestr_sv, PerlIO *rsfp);
#define PERL_ARGS_ASSERT_FIND_BEGINNING	\
	assert(linestr_sv); assert(rsfp)
STATIC void	S_forbid_setid(pTHX_ const char flag, const bool suidscript);
#define PERL_ARGS_ASSERT_FORBID_SETID
STATIC void	S_incpush(pTHX_ const char *const dir, STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_INCPUSH	\
	assert(dir)
STATIC void	S_incpush_use_sep(pTHX_ const char *p, STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_INCPUSH_USE_SEP	\
	assert(p)
STATIC void	S_init_ids(pTHX);
#define PERL_ARGS_ASSERT_INIT_IDS
STATIC void	S_init_interp(pTHX);
#define PERL_ARGS_ASSERT_INIT_INTERP
STATIC void	S_init_main_stash(pTHX);
#define PERL_ARGS_ASSERT_INIT_MAIN_STASH
STATIC void	S_init_perllib(pTHX);
#define PERL_ARGS_ASSERT_INIT_PERLLIB
STATIC void	S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env);
#define PERL_ARGS_ASSERT_INIT_POSTDUMP_SYMBOLS	\
	assert(argv)
STATIC void	S_init_predump_symbols(pTHX);
#define PERL_ARGS_ASSERT_INIT_PREDUMP_SYMBOLS
STATIC SV*	S_mayberelocate(pTHX_ const char *const dir, STRLEN len, U32 flags);
#define PERL_ARGS_ASSERT_MAYBERELOCATE	\
	assert(dir)
PERL_STATIC_NO_RET void	S_minus_v(pTHX)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_MINUS_V

PERL_STATIC_NO_RET void	S_my_exit_jump(pTHX)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_MY_EXIT_JUMP

STATIC void	S_nuke_stacks(pTHX);
#define PERL_ARGS_ASSERT_NUKE_STACKS
STATIC PerlIO *	S_open_script(pTHX_ const char *scriptname, bool dosearch, bool *suidscript);
#define PERL_ARGS_ASSERT_OPEN_SCRIPT	\
	assert(scriptname); assert(suidscript)
STATIC void*	S_parse_body(pTHX_ char **env, XSINIT_t xsinit);
#define PERL_ARGS_ASSERT_PARSE_BODY
PERL_STATIC_NO_RET void	S_run_body(pTHX_ I32 oldscope)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_RUN_BODY

PERL_STATIC_NO_RET void	S_usage(pTHX)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_USAGE

#endif
#if defined(PERL_IN_PP_C)
STATIC size_t	S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping);
#define PERL_ARGS_ASSERT_DO_CHOMP	\
	assert(retval); assert(sv)
STATIC OP*	S_do_delete_local(pTHX);
#define PERL_ARGS_ASSERT_DO_DELETE_LOCAL
STATIC SV*	S_refto(pTHX_ SV* sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REFTO	\
	assert(sv)

#endif
#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S_lossless_NV_to_IV(const NV nv, IV * ivp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV	\
	assert(ivp)
#endif

PERL_CALLCONV GV*	Perl_softref2xv(pTHX_ SV *const sv, const char *const what, const svtype type, SV ***spp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SOFTREF2XV	\
	assert(sv); assert(what); assert(spp)

#endif
#if defined(PERL_IN_PP_CTL_C)
STATIC PerlIO *	S_check_type_and_open(pTHX_ SV *name)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN	\
	assert(name)

STATIC void	S_destroy_matcher(pTHX_ PMOP* matcher);
#define PERL_ARGS_ASSERT_DESTROY_MATCHER	\
	assert(matcher)
STATIC OP*	S_do_smartmatch(pTHX_ HV* seen_this, HV* seen_other, const bool copied);
#define PERL_ARGS_ASSERT_DO_SMARTMATCH
STATIC OP*	S_docatch(pTHX_ Perl_ppaddr_t firstpp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOCATCH

STATIC bool	S_doeval_compile(pTHX_ U8 gimme, CV* outside, U32 seq, HV* hh);
#define PERL_ARGS_ASSERT_DOEVAL_COMPILE
STATIC OP*	S_dofindlabel(pTHX_ OP *o, const char *label, STRLEN len, U32 flags, OP **opstack, OP **oplimit)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOFINDLABEL	\
	assert(o); assert(label); assert(opstack); assert(oplimit)

STATIC MAGIC *	S_doparseform(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_DOPARSEFORM	\
	assert(sv)
STATIC I32	S_dopoptoeval(pTHX_ I32 startingblock)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOPOPTOEVAL

STATIC I32	S_dopoptogivenfor(pTHX_ I32 startingblock)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOPOPTOGIVENFOR

STATIC I32	S_dopoptolabel(pTHX_ const char *label, STRLEN len, U32 flags)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOPOPTOLABEL	\
	assert(label)

STATIC I32	S_dopoptoloop(pTHX_ I32 startingblock)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOPOPTOLOOP

STATIC I32	S_dopoptosub_at(pTHX_ const PERL_CONTEXT* cxstk, I32 startingblock)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOPOPTOSUB_AT	\
	assert(cxstk)

STATIC I32	S_dopoptowhen(pTHX_ I32 startingblock)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOPOPTOWHEN

STATIC PMOP*	S_make_matcher(pTHX_ REGEXP* re)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MAKE_MATCHER	\
	assert(re)

STATIC bool	S_matcher_matches_sv(pTHX_ PMOP* matcher, SV* sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MATCHER_MATCHES_SV	\
	assert(matcher); assert(sv)

STATIC bool	S_num_overflow(NV value, I32 fldsize, I32 frcsize)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NUM_OVERFLOW

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S_path_is_searchable(const char *name)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE	\
	assert(name)
#endif

STATIC I32	S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_RUN_USER_FILTER	\
	assert(buf_sv)

STATIC void	S_rxres_free(pTHX_ void** rsp);
#define PERL_ARGS_ASSERT_RXRES_FREE	\
	assert(rsp)
STATIC void	S_rxres_restore(pTHX_ void **rsp, REGEXP *rx);
#define PERL_ARGS_ASSERT_RXRES_RESTORE	\
	assert(rsp); assert(rx)
STATIC void	S_save_lines(pTHX_ AV *array, SV *sv);
#define PERL_ARGS_ASSERT_SAVE_LINES	\
	assert(sv)
#endif
#if defined(PERL_IN_PP_HOT_C)
STATIC void	S_do_oddball(pTHX_ SV **oddkey, SV **firstkey);
#define PERL_ARGS_ASSERT_DO_ODDBALL	\
	assert(oddkey); assert(firstkey)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE HV*	S_opmethod_stash(pTHX_ SV* meth);
#define PERL_ARGS_ASSERT_OPMETHOD_STASH	\
	assert(meth)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE bool	S_should_we_output_Debug_r(pTHX_ regexp * prog)
			__attribute__warn_unused_result__
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_SHOULD_WE_OUTPUT_DEBUG_R	\
	assert(prog)
#endif

#endif
#if defined(PERL_IN_PP_PACK_C)
STATIC int	S_div128(pTHX_ SV *pnum, bool *done);
#define PERL_ARGS_ASSERT_DIV128	\
	assert(pnum); assert(done)
STATIC char	S_first_symbol(const char *pat, const char *patend);
#define PERL_ARGS_ASSERT_FIRST_SYMBOL	\
	assert(pat); assert(patend)
STATIC const char *	S_get_num(pTHX_ const char *patptr, SSize_t *lenptr)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_NUM	\
	assert(patptr); assert(lenptr)

STATIC const char *	S_group_end(pTHX_ const char *patptr, const char *patend, char ender);
#define PERL_ARGS_ASSERT_GROUP_END	\
	assert(patptr); assert(patend)
STATIC SV*	S_is_an_int(pTHX_ const char *s, STRLEN l)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_AN_INT	\
	assert(s)

STATIC SSize_t	S_measure_struct(pTHX_ struct tempsym* symptr);
#define PERL_ARGS_ASSERT_MEASURE_STRUCT	\
	assert(symptr)
STATIC SV*	S_mul128(pTHX_ SV *sv, U8 m);
#define PERL_ARGS_ASSERT_MUL128	\
	assert(sv)
STATIC char *	S_my_bytes_to_utf8(const U8 *start, STRLEN len, char *dest, const bool needs_swap)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MY_BYTES_TO_UTF8	\
	assert(start); assert(dest)

STATIC bool	S_need_utf8(const char *pat, const char *patend);
#define PERL_ARGS_ASSERT_NEED_UTF8	\
	assert(pat); assert(patend)
STATIC bool	S_next_symbol(pTHX_ struct tempsym* symptr);
#define PERL_ARGS_ASSERT_NEXT_SYMBOL	\
	assert(symptr)
STATIC SV **	S_pack_rec(pTHX_ SV *cat, struct tempsym* symptr, SV **beglist, SV **endlist);
#define PERL_ARGS_ASSERT_PACK_REC	\
	assert(cat); assert(symptr); assert(beglist); assert(endlist)
STATIC char *	S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_EXP_GROW	\
	assert(sv)

STATIC SSize_t	S_unpack_rec(pTHX_ struct tempsym* symptr, const char *s, const char *strbeg, const char *strend, const char **new_s);
#define PERL_ARGS_ASSERT_UNPACK_REC	\
	assert(symptr); assert(s); assert(strbeg); assert(strend)
#endif
#if defined(PERL_IN_PP_SORT_C)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_amagic_cmp(pTHX_ SV *const str1, SV *const str2)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_AMAGIC_CMP	\
	assert(str1); assert(str2)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_amagic_cmp_desc(pTHX_ SV *const str1, SV *const str2)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_AMAGIC_CMP_DESC	\
	assert(str1); assert(str2)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_AMAGIC_I_NCMP	\
	assert(a); assert(b)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_amagic_i_ncmp_desc(pTHX_ SV *const a, SV *const b)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_AMAGIC_I_NCMP_DESC	\
	assert(a); assert(b)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_amagic_ncmp(pTHX_ SV *const a, SV *const b)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_AMAGIC_NCMP	\
	assert(a); assert(b)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_amagic_ncmp_desc(pTHX_ SV *const a, SV *const b)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_AMAGIC_NCMP_DESC	\
	assert(a); assert(b)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_cmp_desc(pTHX_ SV *const str1, SV *const str2)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_CMP_DESC	\
	assert(str1); assert(str2)
#endif

STATIC I32	S_sortcv(pTHX_ SV *const a, SV *const b);
#define PERL_ARGS_ASSERT_SORTCV	\
	assert(a); assert(b)
STATIC I32	S_sortcv_stacked(pTHX_ SV *const a, SV *const b);
#define PERL_ARGS_ASSERT_SORTCV_STACKED	\
	assert(a); assert(b)
STATIC I32	S_sortcv_xsub(pTHX_ SV *const a, SV *const b);
#define PERL_ARGS_ASSERT_SORTCV_XSUB	\
	assert(a); assert(b)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE void	S_sortsv_flags_impl(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_SORTSV_FLAGS_IMPL	\
	assert(cmp)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_sv_i_ncmp(pTHX_ SV *const a, SV *const b)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_SV_I_NCMP	\
	assert(a); assert(b)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_sv_i_ncmp_desc(pTHX_ SV *const a, SV *const b)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_SV_I_NCMP_DESC	\
	assert(a); assert(b)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_sv_ncmp(pTHX_ SV *const a, SV *const b)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_SV_NCMP	\
	assert(a); assert(b)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_sv_ncmp_desc(pTHX_ SV *const a, SV *const b)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_SV_NCMP_DESC	\
	assert(a); assert(b)
#endif

#  if defined(USE_LOCALE_COLLATE)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE	\
	assert(str1); assert(str2)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_amagic_cmp_locale_desc(pTHX_ SV *const str1, SV *const str2)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE_DESC	\
	assert(str1); assert(str2)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_FORCE_INLINE I32	S_cmp_locale_desc(pTHX_ SV *const str1, SV *const str2)
			__attribute__always_inline__;
#define PERL_ARGS_ASSERT_CMP_LOCALE_DESC	\
	assert(str1); assert(str2)
#endif

#  endif
#endif
#if defined(PERL_IN_PP_SYS_C)
STATIC OP*	S_doform(pTHX_ CV *cv, GV *gv, OP *retop);
#define PERL_ARGS_ASSERT_DOFORM	\
	assert(cv); assert(gv)
STATIC SV *	S_space_join_names_mortal(pTHX_ char *const *array);
#define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL
#endif
#if defined(PERL_IN_REGCOMP_C)
STATIC void	S_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV** invlist);
#define PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS	\
	assert(pRExC_state); assert(invlist)
STATIC U32	S_add_data(RExC_state_t* const pRExC_state, const char* const s, const U32 n)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ADD_DATA	\
	assert(pRExC_state); assert(s)

STATIC AV*	S_add_multi_match(pTHX_ AV* multi_char_matches, SV* multi_string, const STRLEN cp_count);
#define PERL_ARGS_ASSERT_ADD_MULTI_MATCH	\
	assert(multi_string)
STATIC void	S_change_engine_size(pTHX_ RExC_state_t *pRExC_state, const Ptrdiff_t size);
#define PERL_ARGS_ASSERT_CHANGE_ENGINE_SIZE	\
	assert(pRExC_state)
STATIC REGEXP*	S_compile_wildcard(pTHX_ const char * subpattern, const STRLEN len, const bool ignore_case)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_COMPILE_WILDCARD	\
	assert(subpattern)

STATIC U8	S_compute_EXACTish(RExC_state_t *pRExC_state);
#define PERL_ARGS_ASSERT_COMPUTE_EXACTISH	\
	assert(pRExC_state)
STATIC regnode *	S_construct_ahocorasick_from_trie(pTHX_ RExC_state_t *pRExC_state, regnode *source, U32 depth);
#define PERL_ARGS_ASSERT_CONSTRUCT_AHOCORASICK_FROM_TRIE	\
	assert(pRExC_state); assert(source)
STATIC int	S_edit_distance(const UV *src, const UV *tgt, const STRLEN x, const STRLEN y, const SSize_t maxDistance)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_EDIT_DISTANCE	\
	assert(src); assert(tgt)

STATIC I32	S_execute_wildcard(pTHX_ REGEXP * const prog, char* stringarg, char* strend, char* strbeg, SSize_t minend, SV* screamer, U32 nosave);
#define PERL_ARGS_ASSERT_EXECUTE_WILDCARD	\
	assert(prog); assert(stringarg); assert(strend); assert(strbeg); assert(screamer)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE Size_t	S_find_first_differing_byte_pos(const U8 * s1, const U8 * s2, const Size_t max);
#define PERL_ARGS_ASSERT_FIND_FIRST_DIFFERING_BYTE_POS	\
	assert(s1); assert(s2)
#endif
STATIC SV *	S_get_ANYOFM_contents(pTHX_ const regnode * n)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_ANYOFM_CONTENTS	\
	assert(n)

STATIC SV*	S_get_ANYOF_cp_list_for_ssc(pTHX_ const RExC_state_t *pRExC_state, const regnode_charclass* const node);
#define PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC	\
	assert(pRExC_state); assert(node)
STATIC U32	S_get_quantifier_value(pTHX_ RExC_state_t *pRExC_state, const char * start, const char * end);
#define PERL_ARGS_ASSERT_GET_QUANTIFIER_VALUE	\
	assert(pRExC_state); assert(start); assert(end)
STATIC bool	S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state, regnode_offset* nodep, UV *code_point_p, int* cp_count, I32 *flagp, const bool strict, const U32 depth);
#define PERL_ARGS_ASSERT_GROK_BSLASH_N	\
	assert(pRExC_state); assert(flagp)
STATIC regnode_offset	S_handle_named_backref(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, char * backref_parse_start, char ch);
#define PERL_ARGS_ASSERT_HANDLE_NAMED_BACKREF	\
	assert(pRExC_state); assert(flagp); assert(backref_parse_start)
STATIC bool	S_handle_names_wildcard(pTHX_ const char * wname, const STRLEN wname_len, SV ** prop_definition, AV ** strings);
#define PERL_ARGS_ASSERT_HANDLE_NAMES_WILDCARD	\
	assert(wname); assert(prop_definition); assert(strings)
STATIC int	S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state, const char* const s, char ** updated_parse_ptr, AV** posix_warnings, const bool check_only);
#define PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX	\
	assert(pRExC_state); assert(s)
STATIC regnode_offset	S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV ** return_invlist, I32 *flagp, U32 depth);
#define PERL_ARGS_ASSERT_HANDLE_REGEX_SETS	\
	assert(pRExC_state); assert(flagp)
STATIC SV *	S_handle_user_defined_property(pTHX_ const char * name, const STRLEN name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, SV* contents, bool *user_defined_ptr, SV * msg, const STRLEN level);
#define PERL_ARGS_ASSERT_HANDLE_USER_DEFINED_PROPERTY	\
	assert(name); assert(contents); assert(user_defined_ptr); assert(msg)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE SV*	S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVLIST_CONTENTS	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S_invlist_is_iterating(const SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVLIST_IS_ITERATING	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV	S_invlist_lowest(SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVLIST_LOWEST	\
	assert(invlist)
#endif

STATIC bool	S_is_ssc_worth_it(const RExC_state_t * pRExC_state, const regnode_ssc * ssc);
#define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT	\
	assert(pRExC_state); assert(ssc)
STATIC U32	S_join_exact(pTHX_ RExC_state_t *pRExC_state, regnode *scan, UV *min_subtract, bool *unfolded_multi_char, U32 flags, regnode *val, U32 depth);
#define PERL_ARGS_ASSERT_JOIN_EXACT	\
	assert(pRExC_state); assert(scan); assert(min_subtract); assert(unfolded_multi_char)
STATIC SV*	S_make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MAKE_EXACTF_INVLIST	\
	assert(pRExC_state); assert(node)

STATIC I32	S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth);
#define PERL_ARGS_ASSERT_MAKE_TRIE	\
	assert(pRExC_state); assert(startbranch); assert(first); assert(last); assert(tail)
STATIC void	S_nextchar(pTHX_ RExC_state_t *pRExC_state);
#define PERL_ARGS_ASSERT_NEXTCHAR	\
	assert(pRExC_state)
STATIC U8	S_optimize_regclass(pTHX_ RExC_state_t *pRExC_state, SV* cp_list, SV* only_utf8_locale_list, SV* upper_latin1_only_utf8_matches, const U32 has_runtime_dependency, const U32 posixl, U8 * anyof_flags, bool * invert, regnode_offset * ret, I32 *flagp);
#define PERL_ARGS_ASSERT_OPTIMIZE_REGCLASS	\
	assert(pRExC_state); assert(anyof_flags); assert(invert); assert(ret); assert(flagp)
STATIC void	S_output_posix_warnings(pTHX_ RExC_state_t *pRExC_state, AV* posix_warnings);
#define PERL_ARGS_ASSERT_OUTPUT_POSIX_WARNINGS	\
	assert(pRExC_state); assert(posix_warnings)
STATIC void	S_parse_lparen_question_flags(pTHX_ RExC_state_t *pRExC_state);
#define PERL_ARGS_ASSERT_PARSE_LPAREN_QUESTION_FLAGS	\
	assert(pRExC_state)
STATIC SV *	S_parse_uniprop_string(pTHX_ const char * const name, Size_t name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, AV ** strings, bool * user_defined_ptr, SV * msg, const STRLEN level);
#define PERL_ARGS_ASSERT_PARSE_UNIPROP_STRING	\
	assert(name); assert(user_defined_ptr); assert(msg)
STATIC void	S_populate_ANYOF_from_invlist(pTHX_ regnode *node, SV** invlist_ptr);
#define PERL_ARGS_ASSERT_POPULATE_ANYOF_FROM_INVLIST	\
	assert(node); assert(invlist_ptr)
STATIC void	S_rck_elide_nothing(pTHX_ regnode *node);
#define PERL_ARGS_ASSERT_RCK_ELIDE_NOTHING	\
	assert(node)
PERL_STATIC_NO_RET void	S_re_croak(pTHX_ bool utf8, const char* pat, ...)
			__attribute__noreturn__
			__attribute__format__(__printf__,pTHX_2,pTHX_3);
#define PERL_ARGS_ASSERT_RE_CROAK	\
	assert(pat)

STATIC regnode_offset	S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth);
#define PERL_ARGS_ASSERT_REG	\
	assert(pRExC_state); assert(flagp)
STATIC regnode_offset	S_reg2Lanode(pTHX_ RExC_state_t *pRExC_state, const U8 op, const U32 arg1, const I32 arg2);
#define PERL_ARGS_ASSERT_REG2LANODE	\
	assert(pRExC_state)
STATIC regnode_offset	S_reg_la_NOTHING(pTHX_ RExC_state_t *pRExC_state, U32 flags, const char *type);
#define PERL_ARGS_ASSERT_REG_LA_NOTHING	\
	assert(pRExC_state); assert(type)
STATIC regnode_offset	S_reg_la_OPFAIL(pTHX_ RExC_state_t *pRExC_state, U32 flags, const char *type);
#define PERL_ARGS_ASSERT_REG_LA_OPFAIL	\
	assert(pRExC_state); assert(type)
STATIC regnode_offset	S_reg_node(pTHX_ RExC_state_t *pRExC_state, U8 op);
#define PERL_ARGS_ASSERT_REG_NODE	\
	assert(pRExC_state)
STATIC SV *	S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags);
#define PERL_ARGS_ASSERT_REG_SCAN_NAME	\
	assert(pRExC_state)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE char *	S_reg_skipcomment(RExC_state_t *pRExC_state, char * p);
#define PERL_ARGS_ASSERT_REG_SKIPCOMMENT	\
	assert(pRExC_state); assert(p)
#endif
STATIC regnode_offset	S_reganode(pTHX_ RExC_state_t *pRExC_state, U8 op, U32 arg);
#define PERL_ARGS_ASSERT_REGANODE	\
	assert(pRExC_state)
STATIC regnode_offset	S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
#define PERL_ARGS_ASSERT_REGATOM	\
	assert(pRExC_state); assert(flagp)
STATIC regnode_offset	S_regbranch(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, I32 first, U32 depth);
#define PERL_ARGS_ASSERT_REGBRANCH	\
	assert(pRExC_state); assert(flagp)
STATIC regnode_offset	S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, const bool stop_at_1, bool allow_multi_fold, const bool silence_non_portable, const bool strict, bool optimizable, SV** ret_invlist);
#define PERL_ARGS_ASSERT_REGCLASS	\
	assert(pRExC_state); assert(flagp)
STATIC unsigned int	S_regex_set_precedence(const U8 my_operator)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGEX_SET_PRECEDENCE

STATIC void	S_reginsert(pTHX_ RExC_state_t *pRExC_state, const U8 op, const regnode_offset operand, const U32 depth);
#define PERL_ARGS_ASSERT_REGINSERT	\
	assert(pRExC_state)
STATIC regnode_offset	S_regnode_guts(pTHX_ RExC_state_t *pRExC_state, const STRLEN extra_len);
#define PERL_ARGS_ASSERT_REGNODE_GUTS	\
	assert(pRExC_state)
STATIC regnode_offset	S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
#define PERL_ARGS_ASSERT_REGPIECE	\
	assert(pRExC_state); assert(flagp)
STATIC regnode_offset	S_regpnode(pTHX_ RExC_state_t *pRExC_state, U8 op, SV * arg);
#define PERL_ARGS_ASSERT_REGPNODE	\
	assert(pRExC_state); assert(arg)
STATIC bool	S_regtail(pTHX_ RExC_state_t * pRExC_state, const regnode_offset p, const regnode_offset val, const U32 depth)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGTAIL	\
	assert(pRExC_state); assert(p); assert(val)

STATIC void	S_scan_commit(pTHX_ const RExC_state_t *pRExC_state, struct scan_data_t *data, SSize_t *minlenp, int is_inf);
#define PERL_ARGS_ASSERT_SCAN_COMMIT	\
	assert(pRExC_state); assert(data); assert(minlenp)
STATIC void	S_set_ANYOF_arg(pTHX_ RExC_state_t* const pRExC_state, regnode* const node, SV* const cp_list, SV* const runtime_defns, SV* const only_utf8_locale_list);
#define PERL_ARGS_ASSERT_SET_ANYOF_ARG	\
	assert(pRExC_state); assert(node)
STATIC void	S_set_regex_pv(pTHX_ RExC_state_t *pRExC_state, REGEXP *Rx);
#define PERL_ARGS_ASSERT_SET_REGEX_PV	\
	assert(pRExC_state); assert(Rx)
STATIC void	S_skip_to_be_ignored_text(pTHX_ RExC_state_t *pRExC_state, char ** p, const bool force_to_xmod);
#define PERL_ARGS_ASSERT_SKIP_TO_BE_IGNORED_TEXT	\
	assert(pRExC_state); assert(p)
STATIC void	S_ssc_add_range(pTHX_ regnode_ssc *ssc, UV const start, UV const end);
#define PERL_ARGS_ASSERT_SSC_ADD_RANGE	\
	assert(ssc)
STATIC void	S_ssc_and(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *and_with);
#define PERL_ARGS_ASSERT_SSC_AND	\
	assert(pRExC_state); assert(ssc); assert(and_with)
STATIC void	S_ssc_anything(pTHX_ regnode_ssc *ssc);
#define PERL_ARGS_ASSERT_SSC_ANYTHING	\
	assert(ssc)
STATIC void	S_ssc_clear_locale(regnode_ssc *ssc);
#define PERL_ARGS_ASSERT_SSC_CLEAR_LOCALE	\
	assert(ssc)
STATIC void	S_ssc_cp_and(pTHX_ regnode_ssc *ssc, UV const cp);
#define PERL_ARGS_ASSERT_SSC_CP_AND	\
	assert(ssc)
STATIC void	S_ssc_finalize(pTHX_ RExC_state_t *pRExC_state, regnode_ssc *ssc);
#define PERL_ARGS_ASSERT_SSC_FINALIZE	\
	assert(pRExC_state); assert(ssc)
STATIC void	S_ssc_init(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc);
#define PERL_ARGS_ASSERT_SSC_INIT	\
	assert(pRExC_state); assert(ssc)
STATIC void	S_ssc_intersection(pTHX_ regnode_ssc *ssc, SV* const invlist, const bool invert_2nd);
#define PERL_ARGS_ASSERT_SSC_INTERSECTION	\
	assert(ssc); assert(invlist)
STATIC int	S_ssc_is_anything(const regnode_ssc *ssc)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SSC_IS_ANYTHING	\
	assert(ssc)

STATIC int	S_ssc_is_cp_posixl_init(const RExC_state_t *pRExC_state, const regnode_ssc *ssc)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SSC_IS_CP_POSIXL_INIT	\
	assert(pRExC_state); assert(ssc)

STATIC void	S_ssc_or(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *or_with);
#define PERL_ARGS_ASSERT_SSC_OR	\
	assert(pRExC_state); assert(ssc); assert(or_with)
STATIC void	S_ssc_union(pTHX_ regnode_ssc *ssc, SV* const invlist, const bool invert_2nd);
#define PERL_ARGS_ASSERT_SSC_UNION	\
	assert(ssc); assert(invlist)
STATIC SSize_t	S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, SSize_t *minlenp, SSize_t *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U32 recursed_depth, regnode_ssc *and_withp, U32 flags, U32 depth, bool was_mutate_ok);
#define PERL_ARGS_ASSERT_STUDY_CHUNK	\
	assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); assert(last)
#endif
#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C)
PERL_CALLCONV void	Perl__invlist_dump(pTHX_ PerlIO *file, I32 level, const char* const indent, SV* const invlist);
#define PERL_ARGS_ASSERT__INVLIST_DUMP	\
	assert(file); assert(indent); assert(invlist)
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE SV*	S_add_cp_to_invlist(pTHX_ SV* invlist, const UV cp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ADD_CP_TO_INVLIST
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_invlist_extend(pTHX_ SV* const invlist, const UV len);
#define PERL_ARGS_ASSERT_INVLIST_EXTEND	\
	assert(invlist)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV	S_invlist_highest(SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVLIST_HIGHEST	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset);
#define PERL_ARGS_ASSERT_INVLIST_SET_LEN	\
	assert(invlist)
#endif
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_UTF8_C)
PERL_CALLCONV SV*	Perl__add_range_to_invlist(pTHX_ SV* invlist, UV start, UV end)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__ADD_RANGE_TO_INVLIST

/* PERL_CALLCONV void	_invlist_intersection(pTHX_ SV* const a, SV* const b, SV** i); */
#define PERL_ARGS_ASSERT__INVLIST_INTERSECTION
PERL_CALLCONV void	Perl__invlist_intersection_maybe_complement_2nd(pTHX_ SV* const a, SV* const b, const bool complement_b, SV** i);
#define PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND	\
	assert(b); assert(i)
PERL_CALLCONV void	Perl__invlist_invert(pTHX_ SV* const invlist);
#define PERL_ARGS_ASSERT__INVLIST_INVERT	\
	assert(invlist)
/* PERL_CALLCONV void	_invlist_subtract(pTHX_ SV* const a, SV* const b, SV** result); */
#define PERL_ARGS_ASSERT__INVLIST_SUBTRACT
/* PERL_CALLCONV void	_invlist_union(pTHX_ SV* const a, SV* const b, SV** output); */
#define PERL_ARGS_ASSERT__INVLIST_UNION
PERL_CALLCONV void	Perl__invlist_union_maybe_complement_2nd(pTHX_ SV* const a, SV* const b, const bool complement_b, SV** output);
#define PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND	\
	assert(b); assert(output)
PERL_CALLCONV SV*	Perl__new_invlist(pTHX_ IV initial_size)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__NEW_INVLIST

PERL_CALLCONV SV*	Perl__setup_canned_invlist(pTHX_ const STRLEN size, const UV element0, UV** other_elements_ptr)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST	\
	assert(other_elements_ptr)

#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_TOKE_C)
PERL_CALLCONV const char *	Perl_form_alien_digit_msg(pTHX_ const U8 which, const STRLEN valids_len, const char * const first_bad, const char * const send, const bool UTF, const bool braced)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FORM_ALIEN_DIGIT_MSG	\
	assert(first_bad); assert(send)

PERL_CALLCONV bool	Perl_grok_bslash_c(pTHX_ const char source, U8 * result, const char** message, U32 * packed_warn)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GROK_BSLASH_C	\
	assert(result); assert(message)

PERL_CALLCONV bool	Perl_grok_bslash_o(pTHX_ char** s, const char* const send, UV* uv, const char** message, U32 * packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GROK_BSLASH_O	\
	assert(s); assert(send); assert(uv); assert(message)

PERL_CALLCONV bool	Perl_grok_bslash_x(pTHX_ char** s, const char* const send, UV* uv, const char** message, U32 * packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GROK_BSLASH_X	\
	assert(s); assert(send); assert(uv); assert(message)

#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
PERL_CALLCONV const char *	Perl_form_cp_too_large_msg(pTHX_ const U8 which, const char * string, const Size_t len, const UV cp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FORM_CP_TOO_LARGE_MSG

#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE STRLEN*	S_get_invlist_iter_addr(SV* invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_invlist_iterfinish(SV* invlist);
#define PERL_ARGS_ASSERT_INVLIST_ITERFINISH	\
	assert(invlist)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_invlist_iterinit(SV* invlist);
#define PERL_ARGS_ASSERT_INVLIST_ITERINIT	\
	assert(invlist)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S_invlist_iternext(SV* invlist, UV* start, UV* end)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVLIST_ITERNEXT	\
	assert(invlist); assert(start); assert(end)
#endif

#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
PERL_CALLCONV bool	Perl__invlistEQ(pTHX_ SV* const a, SV* const b, const bool complement_b);
#define PERL_ARGS_ASSERT__INVLISTEQ	\
	assert(a); assert(b)
PERL_CALLCONV SV*	Perl__new_invlist_C_array(pTHX_ const UV* const list)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__NEW_INVLIST_C_ARRAY	\
	assert(list)

#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE const char *	S_get_regex_charset_name(const U32 flags, STRLEN* const lenp);
#define PERL_ARGS_ASSERT_GET_REGEX_CHARSET_NAME	\
	assert(lenp)
#endif
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
PERL_CALLCONV int	Perl_re_printf(pTHX_ const char *fmt, ...)
			__attribute__format__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_RE_PRINTF	\
	assert(fmt)

PERL_CALLCONV void	Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* o, const regmatch_info *reginfo, const RExC_state_t *pRExC_state);
#define PERL_ARGS_ASSERT_REGPROP	\
	assert(sv); assert(o)
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)	 || defined(PERL_IN_PP_C) || defined(PERL_IN_OP_C)		 || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)		 || defined(PERL_IN_DOOP_C)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S__invlist_contains_cp(SV* const invlist, const UV cp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV	S__invlist_len(SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__INVLIST_LEN	\
	assert(invlist)
#endif

PERL_CALLCONV SSize_t	Perl__invlist_search(SV* const invlist, const UV cp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__INVLIST_SEARCH	\
	assert(invlist)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool*	S_get_invlist_offset_addr(SV* invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE UV*	S_invlist_array(SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_INVLIST_ARRAY	\
	assert(invlist)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S_is_invlist(const SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_INVLIST
#endif

#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C)
PERL_CALLCONV bool	Perl_is_grapheme(pTHX_ const U8 * strbeg, const U8 * s, const U8 *strend, const UV cp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_GRAPHEME	\
	assert(strbeg); assert(s); assert(strend)

#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
PERL_CALLCONV UV	Perl__to_fold_latin1(const U8 c, U8 *p, STRLEN *lenp, const unsigned int flags);
#define PERL_ARGS_ASSERT__TO_FOLD_LATIN1	\
	assert(p); assert(lenp)
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C)
PERL_CALLCONV SV*	Perl_invlist_clone(pTHX_ SV* const invlist, SV* newlist);
#define PERL_ARGS_ASSERT_INVLIST_CLONE	\
	assert(invlist)
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
PERL_CALLCONV bool	Perl_regcurly(const char *s, const char *e, const char * result[5])
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGCURLY	\
	assert(s); assert(e)

#endif
#if defined(PERL_IN_REGEXEC_C)
STATIC LB_enum	S_advance_one_LB(pTHX_ U8 ** curpos, const U8 * const strend, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ADVANCE_ONE_LB	\
	assert(curpos); assert(strend)

STATIC SB_enum	S_advance_one_SB(pTHX_ U8 ** curpos, const U8 * const strend, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ADVANCE_ONE_SB	\
	assert(curpos); assert(strend)

STATIC WB_enum	S_advance_one_WB(pTHX_ U8 ** curpos, const U8 * const strend, const bool utf8_target, const bool skip_Extend_Format)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ADVANCE_ONE_WB	\
	assert(curpos); assert(strend)

STATIC GCB_enum	S_backup_one_GCB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BACKUP_ONE_GCB	\
	assert(strbeg); assert(curpos)

STATIC LB_enum	S_backup_one_LB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BACKUP_ONE_LB	\
	assert(strbeg); assert(curpos)

STATIC SB_enum	S_backup_one_SB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BACKUP_ONE_SB	\
	assert(strbeg); assert(curpos)

STATIC WB_enum	S_backup_one_WB(pTHX_ WB_enum * previous, const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BACKUP_ONE_WB	\
	assert(previous); assert(strbeg); assert(curpos)

STATIC char*	S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, const char *strend, regmatch_info *reginfo)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FIND_BYCLASS	\
	assert(prog); assert(c); assert(s); assert(strend)

STATIC U8 *	S_find_next_masked(U8 * s, const U8 * send, const U8 byte, const U8 mask)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FIND_NEXT_MASKED	\
	assert(s); assert(send)

STATIC U8 *	S_find_span_end(U8* s, const U8 * send, const U8 span_byte)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FIND_SPAN_END	\
	assert(s); assert(send)

STATIC U8 *	S_find_span_end_mask(U8 * s, const U8 * send, const U8 span_byte, const U8 mask)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FIND_SPAN_END_MASK	\
	assert(s); assert(send)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE I32	S_foldEQ_latin1_s2_folded(const char* a, const char* b, I32 len);
#define PERL_ARGS_ASSERT_FOLDEQ_LATIN1_S2_FOLDED	\
	assert(a); assert(b)
#endif
STATIC bool	S_isFOO_lc(pTHX_ const U8 classnum, const U8 character)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISFOO_LC

STATIC bool	S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8* character, const U8* e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISFOO_UTF8_LC	\
	assert(character); assert(e)

STATIC bool	S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strbeg, const U8 * const curpos, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISGCB	\
	assert(strbeg); assert(curpos)

STATIC bool	S_isLB(pTHX_ LB_enum before, LB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISLB	\
	assert(strbeg); assert(curpos); assert(strend)

STATIC bool	S_isSB(pTHX_ SB_enum before, SB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISSB	\
	assert(strbeg); assert(curpos); assert(strend)

STATIC bool	S_isWB(pTHX_ WB_enum previous, WB_enum before, WB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISWB	\
	assert(strbeg); assert(curpos); assert(strend)

STATIC I32	S_reg_check_named_buff_matched(const regexp *rex, const regnode *scan)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED	\
	assert(rex); assert(scan)

STATIC void	S_regcp_restore(pTHX_ regexp *rex, I32 ix, U32 *maxopenparen_p _pDEPTH);
#define PERL_ARGS_ASSERT_REGCP_RESTORE	\
	assert(rex); assert(maxopenparen_p)
STATIC void	S_regcppop(pTHX_ regexp *rex, U32 *maxopenparen_p _pDEPTH);
#define PERL_ARGS_ASSERT_REGCPPOP	\
	assert(rex); assert(maxopenparen_p)
STATIC CHECKPOINT	S_regcppush(pTHX_ const regexp *rex, I32 parenfloor, U32 maxopenparen _pDEPTH);
#define PERL_ARGS_ASSERT_REGCPPUSH	\
	assert(rex)
STATIC U8*	S_reghop3(U8 *s, SSize_t off, const U8 *lim)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGHOP3	\
	assert(s); assert(lim)

STATIC U8*	S_reghop4(U8 *s, SSize_t off, const U8 *llim, const U8 *rlim)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGHOP4	\
	assert(s); assert(llim); assert(rlim)

STATIC U8*	S_reghopmaybe3(U8 *s, SSize_t off, const U8 * const lim)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGHOPMAYBE3	\
	assert(s); assert(lim)

STATIC bool	S_reginclass(pTHX_ regexp * const prog, const regnode * const n, const U8 * const p, const U8 * const p_end, bool const utf8_target)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGINCLASS	\
	assert(n); assert(p); assert(p_end)

STATIC SSize_t	S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGMATCH	\
	assert(reginfo); assert(startpos); assert(prog)

STATIC I32	S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, char *loceol, regmatch_info *const reginfo, I32 max _pDEPTH)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGREPEAT	\
	assert(prog); assert(startposp); assert(p); assert(loceol); assert(reginfo)

STATIC bool	S_regtry(pTHX_ regmatch_info *reginfo, char **startposp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REGTRY	\
	assert(reginfo); assert(startposp)

STATIC bool	S_to_byte_substr(pTHX_ regexp * prog);
#define PERL_ARGS_ASSERT_TO_BYTE_SUBSTR	\
	assert(prog)
STATIC void	S_to_utf8_substr(pTHX_ regexp * prog);
#define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR	\
	assert(prog)
#endif
#if defined(PERL_IN_SCOPE_C)
STATIC void	S_save_pushptri32ptr(pTHX_ void *const ptr1, const I32 i, void *const ptr2, const int type);
#define PERL_ARGS_ASSERT_SAVE_PUSHPTRI32PTR
STATIC SV*	S_save_scalar_at(pTHX_ SV **sptr, const U32 flags);
#define PERL_ARGS_ASSERT_SAVE_SCALAR_AT	\
	assert(sptr)
#endif
#if defined(PERL_IN_SV_C)
STATIC char *	S_F0convert(NV nv, char *const endbuf, STRLEN *const len);
#define PERL_ARGS_ASSERT_F0CONVERT	\
	assert(endbuf); assert(len)
STATIC void	S_anonymise_cv_maybe(pTHX_ GV *gv, CV *cv);
#define PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE	\
	assert(gv); assert(cv)
STATIC void	S_assert_uft8_cache_coherent(pTHX_ const char *const func, STRLEN from_cache, STRLEN real, SV *const sv);
#define PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT	\
	assert(func); assert(sv)
STATIC bool	S_curse(pTHX_ SV * const sv, const bool check_refcnt);
#define PERL_ARGS_ASSERT_CURSE	\
	assert(sv)
STATIC STRLEN	S_expect_number(pTHX_ const char **const pattern)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_EXPECT_NUMBER	\
	assert(pattern)

STATIC SSize_t	S_find_array_subscript(pTHX_ const AV *const av, const SV *const val);
#define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT	\
	assert(val)
STATIC SV *	S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val);
#define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT	\
	assert(val)
STATIC SV*	S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, bool match, const char **desc_p);
#define PERL_ARGS_ASSERT_FIND_UNINIT_VAR	\
	assert(desc_p)
STATIC bool	S_glob_2number(pTHX_ GV* const gv);
#define PERL_ARGS_ASSERT_GLOB_2NUMBER	\
	assert(gv)
STATIC void	S_glob_assign_glob(pTHX_ SV *const dsv, SV *const ssv, const int dtype);
#define PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB	\
	assert(dsv); assert(ssv)
PERL_CALLCONV SV *	Perl_more_sv(pTHX);
#define PERL_ARGS_ASSERT_MORE_SV
STATIC void	S_not_a_number(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_NOT_A_NUMBER	\
	assert(sv)
STATIC void	S_not_incrementable(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_NOT_INCREMENTABLE	\
	assert(sv)
STATIC PTR_TBL_ENT_t *	S_ptr_table_find(PTR_TBL_t *const tbl, const void *const sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PTR_TABLE_FIND	\
	assert(tbl)

STATIC bool	S_sv_2iuv_common(pTHX_ SV *const sv);
#define PERL_ARGS_ASSERT_SV_2IUV_COMMON	\
	assert(sv)
STATIC void	S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags);
#define PERL_ARGS_ASSERT_SV_ADD_ARENA	\
	assert(ptr)
STATIC const char *	S_sv_display(pTHX_ SV *const sv, char *tmpbuf, STRLEN tmpbuf_size);
#define PERL_ARGS_ASSERT_SV_DISPLAY	\
	assert(sv); assert(tmpbuf)
STATIC STRLEN	S_sv_pos_b2u_midway(pTHX_ const U8 *const s, const U8 *const target, const U8 *end, STRLEN endu);
#define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY	\
	assert(s); assert(target); assert(end)
STATIC STRLEN	S_sv_pos_u2b_cached(pTHX_ SV *const sv, MAGIC **const mgp, const U8 *const start, const U8 *const send, STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0);
#define PERL_ARGS_ASSERT_SV_POS_U2B_CACHED	\
	assert(sv); assert(mgp); assert(start); assert(send)
STATIC STRLEN	S_sv_pos_u2b_forwards(const U8 *const start, const U8 *const send, STRLEN *const uoffset, bool *const at_end, bool *canonical_position);
#define PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS	\
	assert(start); assert(send); assert(uoffset); assert(at_end); assert(canonical_position)
STATIC STRLEN	S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, STRLEN uoffset, const STRLEN uend);
#define PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY	\
	assert(start); assert(send)
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE void	S_sv_unglob(pTHX_ SV *const sv, U32 flags);
#define PERL_ARGS_ASSERT_SV_UNGLOB	\
	assert(sv)
#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE char *	S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_UIV_2BUF	\
	assert(buf); assert(peob)
#endif

STATIC void	S_utf8_mg_len_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN ulen);
#define PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE	\
	assert(sv); assert(mgp)
STATIC void	S_utf8_mg_pos_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN byte, const STRLEN utf8, const STRLEN blen);
#define PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE	\
	assert(sv); assert(mgp)
STATIC I32	S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask);
#define PERL_ARGS_ASSERT_VISIT	\
	assert(f)
#  if defined(USE_ITHREADS)
STATIC SV*	S_sv_dup_common(pTHX_ const SV *const ssv, CLONE_PARAMS *const param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DUP_COMMON	\
	assert(ssv); assert(param)

STATIC SV **	S_sv_dup_inc_multiple(pTHX_ SV *const *source, SV **dest, SSize_t items, CLONE_PARAMS *const param);
#define PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE	\
	assert(source); assert(dest); assert(param)
STATIC void	S_unreferenced_to_tmp_stack(pTHX_ AV *const unreferenced);
#define PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK	\
	assert(unreferenced)
#  endif
#endif
#if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C)
PERL_CALLCONV SV *	Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, SSize_t aindex, int subscript_type)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_VARNAME

#endif
#if defined(PERL_IN_TOKE_C)
STATIC int	S_ao(pTHX_ int toketype);
#define PERL_ARGS_ASSERT_AO
STATIC void	S_check_uni(pTHX);
#define PERL_ARGS_ASSERT_CHECK_UNI
STATIC void	S_checkcomma(pTHX_ const char *s, const char *name, const char *what);
#define PERL_ARGS_ASSERT_CHECKCOMMA	\
	assert(s); assert(name); assert(what)
STATIC char *	S_filter_gets(pTHX_ SV *sv, STRLEN append)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FILTER_GETS	\
	assert(sv)

STATIC HV *	S_find_in_my_stash(pTHX_ const char *pkgname, STRLEN len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FIND_IN_MY_STASH	\
	assert(pkgname)

STATIC void	S_force_ident(pTHX_ const char *s, int kind);
#define PERL_ARGS_ASSERT_FORCE_IDENT	\
	assert(s)
STATIC void	S_force_ident_maybe_lex(pTHX_ char pit);
#define PERL_ARGS_ASSERT_FORCE_IDENT_MAYBE_LEX
STATIC void	S_force_next(pTHX_ I32 type);
#define PERL_ARGS_ASSERT_FORCE_NEXT
STATIC char*	S_force_strict_version(pTHX_ char *s);
#define PERL_ARGS_ASSERT_FORCE_STRICT_VERSION	\
	assert(s)
STATIC char*	S_force_version(pTHX_ char *s, int guessing);
#define PERL_ARGS_ASSERT_FORCE_VERSION	\
	assert(s)
STATIC char*	S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack);
#define PERL_ARGS_ASSERT_FORCE_WORD	\
	assert(start)
STATIC SV*	S_get_and_check_backslash_N_name_wrapper(pTHX_ const char* s, const char* const e)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME_WRAPPER	\
	assert(s); assert(e)

STATIC void	S_incline(pTHX_ const char *s, const char *end);
#define PERL_ARGS_ASSERT_INCLINE	\
	assert(s); assert(end)
STATIC int	S_intuit_method(pTHX_ char *s, SV *ioname, CV *cv);
#define PERL_ARGS_ASSERT_INTUIT_METHOD	\
	assert(s)
STATIC int	S_intuit_more(pTHX_ char *s, char *e);
#define PERL_ARGS_ASSERT_INTUIT_MORE	\
	assert(s); assert(e)
STATIC I32	S_lop(pTHX_ I32 f, U8 x, char *s);
#define PERL_ARGS_ASSERT_LOP	\
	assert(s)
PERL_STATIC_NO_RET void	S_missingterm(pTHX_ char *s, STRLEN len)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_MISSINGTERM

STATIC SV*	S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen, SV *sv, SV *pv, const char *type, STRLEN typelen, const char ** error_msg);
#define PERL_ARGS_ASSERT_NEW_CONSTANT	\
	assert(key); assert(sv)
STATIC void	S_no_op(pTHX_ const char *const what, char *s);
#define PERL_ARGS_ASSERT_NO_OP	\
	assert(what)
STATIC void	S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8, bool check_dollar, bool tick_warn);
#define PERL_ARGS_ASSERT_PARSE_IDENT	\
	assert(s); assert(d); assert(e)
STATIC int	S_pending_ident(pTHX);
#define PERL_ARGS_ASSERT_PENDING_IDENT
STATIC char*	S_scan_const(pTHX_ char *start)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCAN_CONST	\
	assert(start)

STATIC char*	S_scan_formline(pTHX_ char *s)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCAN_FORMLINE	\
	assert(s)

STATIC char*	S_scan_heredoc(pTHX_ char *s)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCAN_HEREDOC	\
	assert(s)

STATIC char*	S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni);
#define PERL_ARGS_ASSERT_SCAN_IDENT	\
	assert(s); assert(dest)
STATIC char*	S_scan_inputsymbol(pTHX_ char *start)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCAN_INPUTSYMBOL	\
	assert(start)

STATIC char*	S_scan_pat(pTHX_ char *start, I32 type)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCAN_PAT	\
	assert(start)

STATIC char*	S_scan_subst(pTHX_ char *start)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCAN_SUBST	\
	assert(start)

STATIC char*	S_scan_trans(pTHX_ char *start)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SCAN_TRANS	\
	assert(start)

STATIC I32	S_sublex_done(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SUBLEX_DONE

STATIC I32	S_sublex_push(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SUBLEX_PUSH

STATIC I32	S_sublex_start(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SUBLEX_START

STATIC char*	S_swallow_bom(pTHX_ U8 *s)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SWALLOW_BOM	\
	assert(s)

STATIC char *	S_tokenize_use(pTHX_ int is_use, char *s)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_TOKENIZE_USE	\
	assert(s)

STATIC SV*	S_tokeq(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_TOKEQ	\
	assert(sv)
STATIC void	S_update_debugger_info(pTHX_ SV *orig_sv, const char *const buf, STRLEN len);
#define PERL_ARGS_ASSERT_UPDATE_DEBUGGER_INFO
STATIC int	S_yywarn(pTHX_ const char *const s, U32 flags);
#define PERL_ARGS_ASSERT_YYWARN	\
	assert(s)
#endif
#if defined(PERL_IN_UNIVERSAL_C)
STATIC bool	S_isa_lookup(pTHX_ HV *stash, SV *namesv, const char * name, STRLEN len, U32 flags);
STATIC bool	S_sv_derived_from_svpvn(pTHX_ SV *sv, SV *namesv, const char * name, const STRLEN len, U32 flags);
#endif
#if defined(PERL_IN_UTF8_C)
STATIC UV	S__to_utf8_case(pTHX_ const UV original, const U8 *p, U8* ustrp, STRLEN *lenp, SV *invlist, const I32 * const invmap, const U32 * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal);
#define PERL_ARGS_ASSERT__TO_UTF8_CASE	\
	assert(ustrp); assert(lenp); assert(invlist); assert(invmap); assert(normal)
STATIC UV	S_check_locale_boundary_crossing(pTHX_ const U8* const p, const UV result, U8* const ustrp, STRLEN *lenp)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING	\
	assert(p); assert(ustrp); assert(lenp)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE int	S_does_utf8_overflow(const U8 * const s, const U8 * e, const bool consider_overlongs)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOES_UTF8_OVERFLOW	\
	assert(s); assert(e)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE int	S_isFF_overlong(const U8 * const s, const STRLEN len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISFF_OVERLONG	\
	assert(s)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool	S_is_utf8_common(pTHX_ const U8 *const p, const U8 *const e, SV* const invlist)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_COMMON	\
	assert(p); assert(e)
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE int	S_is_utf8_overlong(const U8 * const s, const STRLEN len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_OVERLONG	\
	assert(s)
#endif

STATIC HV *	S_new_msg_hv(pTHX_ const char * const message, U32 categories, U32 flag)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEW_MSG_HV	\
	assert(message)

STATIC UV	S_to_case_cp_list(pTHX_ const UV original, const U32 ** const remaining_list, Size_t * remaining_count, SV *invlist, const I32 * const invmap, const U32 * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal);
#define PERL_ARGS_ASSERT_TO_CASE_CP_LIST	\
	assert(invlist); assert(invmap); assert(normal)
STATIC U8	S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp, const char dummy)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_TO_LOWER_LATIN1

STATIC UV	S_turkic_fc(pTHX_ const U8 * const p, const U8 * const e, U8* ustrp, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TURKIC_FC	\
	assert(p); assert(e); assert(ustrp); assert(lenp)
STATIC UV	S_turkic_lc(pTHX_ const U8 * const p0, const U8 * const e, U8* ustrp, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TURKIC_LC	\
	assert(p0); assert(e); assert(ustrp); assert(lenp)
STATIC UV	S_turkic_uc(pTHX_ const U8 * const p, const U8 * const e, U8* ustrp, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TURKIC_UC	\
	assert(p); assert(e); assert(ustrp); assert(lenp)
STATIC char *	S_unexpected_non_continuation_text(pTHX_ const U8 * const s, STRLEN print_len, const STRLEN non_cont_byte_pos, const STRLEN expect_len)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_UNEXPECTED_NON_CONTINUATION_TEXT	\
	assert(s)

#endif
#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
PERL_CALLCONV UV	Perl__to_upper_title_latin1(pTHX_ const U8 c, U8 *p, STRLEN *lenp, const char S_or_s);
#define PERL_ARGS_ASSERT__TO_UPPER_TITLE_LATIN1	\
	assert(p); assert(lenp)
#endif
#if defined(PERL_IN_UTIL_C)
STATIC bool	S_ckwarn_common(pTHX_ U32 w);
#define PERL_ARGS_ASSERT_CKWARN_COMMON
STATIC bool	S_invoke_exception_hook(pTHX_ SV *ex, bool warn);
#define PERL_ARGS_ASSERT_INVOKE_EXCEPTION_HOOK
STATIC SV*	S_mess_alloc(pTHX);
#define PERL_ARGS_ASSERT_MESS_ALLOC
STATIC SV *	S_with_queued_errors(pTHX_ SV *ex);
#define PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS	\
	assert(ex)
STATIC void	S_xs_version_bootcheck(pTHX_ U32 items, U32 ax, const char *xs_p, STRLEN xs_len);
#define PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK	\
	assert(xs_p)
#  if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
STATIC void	S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesize, const char *type_name, const SV *sv, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
#define PERL_ARGS_ASSERT_MEM_LOG_COMMON	\
	assert(type_name); assert(filename); assert(funcname)
#  endif
#endif
#if defined(PERL_MEM_LOG)
PERL_CALLCONV Malloc_t	Perl_mem_log_alloc(const UV nconst, UV typesize, const char *type_name, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
#define PERL_ARGS_ASSERT_MEM_LOG_ALLOC	\
	assert(type_name); assert(filename); assert(funcname)
PERL_CALLCONV Malloc_t	Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname);
#define PERL_ARGS_ASSERT_MEM_LOG_FREE	\
	assert(filename); assert(funcname)
PERL_CALLCONV Malloc_t	Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
#define PERL_ARGS_ASSERT_MEM_LOG_REALLOC	\
	assert(type_name); assert(filename); assert(funcname)
#endif
#if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
STATIC void	S_pidgone(pTHX_ Pid_t pid, int status);
#define PERL_ARGS_ASSERT_PIDGONE
#endif
#if defined(PERL_USE_3ARG_SIGHANDLER)
PERL_CALLCONV Signal_t	Perl_csighandler(int sig, Siginfo_t *info, void *uap);
#define PERL_ARGS_ASSERT_CSIGHANDLER
PERL_CALLCONV Signal_t	Perl_sighandler(int sig, Siginfo_t *info, void *uap);
#define PERL_ARGS_ASSERT_SIGHANDLER
#endif
#if defined(U64TYPE)	/* HAS_QUAD undefined outside of core */
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE unsigned	Perl_lsbit_pos64(U64 word)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_LSBIT_POS64
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE unsigned	Perl_msbit_pos64(U64 word)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MSBIT_POS64
#endif

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE unsigned	Perl_single_1bit_pos64(U64 word)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SINGLE_1BIT_POS64
#endif

#endif
#if defined(UNLINK_ALL_VERSIONS)
PERL_CALLCONV I32	Perl_unlnk(pTHX_ const char* f);
#define PERL_ARGS_ASSERT_UNLNK	\
	assert(f)
#endif
#if defined(USE_C_BACKTRACE)
PERL_CALLCONV bool	Perl_dump_c_backtrace(pTHX_ PerlIO* fp, int max_depth, int skip);
#define PERL_ARGS_ASSERT_DUMP_C_BACKTRACE	\
	assert(fp)
/* PERL_CALLCONV void	free_c_backtrace(pTHX_ Perl_c_backtrace* bt); */
#define PERL_ARGS_ASSERT_FREE_C_BACKTRACE
PERL_CALLCONV Perl_c_backtrace*	Perl_get_c_backtrace(pTHX_ int max_depth, int skip);
#define PERL_ARGS_ASSERT_GET_C_BACKTRACE
PERL_CALLCONV SV*	Perl_get_c_backtrace_dump(pTHX_ int max_depth, int skip);
#define PERL_ARGS_ASSERT_GET_C_BACKTRACE_DUMP
#endif
#if defined(USE_DTRACE)
PERL_CALLCONV void	Perl_dtrace_probe_call(pTHX_ CV *cv, bool is_call);
#define PERL_ARGS_ASSERT_DTRACE_PROBE_CALL	\
	assert(cv)
PERL_CALLCONV void	Perl_dtrace_probe_load(pTHX_ const char *name, bool is_loading);
#define PERL_ARGS_ASSERT_DTRACE_PROBE_LOAD	\
	assert(name)
PERL_CALLCONV void	Perl_dtrace_probe_op(pTHX_ const OP *op);
#define PERL_ARGS_ASSERT_DTRACE_PROBE_OP	\
	assert(op)
PERL_CALLCONV void	Perl_dtrace_probe_phase(pTHX_ enum perl_phase phase);
#define PERL_ARGS_ASSERT_DTRACE_PROBE_PHASE
#endif
#if defined(USE_ITHREADS)
PERL_CALLCONV PADOFFSET	Perl_alloccopstash(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_ALLOCCOPSTASH	\
	assert(hv)
PERL_CALLCONV void*	Perl_any_dup(pTHX_ void* v, const PerlInterpreter* proto_perl)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ANY_DUP	\
	assert(proto_perl)

PERL_CALLCONV void	Perl_clone_params_del(CLONE_PARAMS *param);
#define PERL_ARGS_ASSERT_CLONE_PARAMS_DEL	\
	assert(param)
PERL_CALLCONV CLONE_PARAMS *	Perl_clone_params_new(PerlInterpreter *const from, PerlInterpreter *const to)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CLONE_PARAMS_NEW	\
	assert(from); assert(to)

#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE AV*	Perl_cop_file_avn(pTHX_ const COP *cop);
#define PERL_ARGS_ASSERT_COP_FILE_AVN	\
	assert(cop)
#endif
PERL_CALLCONV PERL_CONTEXT*	Perl_cx_dup(pTHX_ PERL_CONTEXT* cx, I32 ix, I32 max, CLONE_PARAMS* param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CX_DUP	\
	assert(param)

PERL_CALLCONV DIR*	Perl_dirp_dup(pTHX_ DIR *const dp, CLONE_PARAMS *const param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DIRP_DUP	\
	assert(param)

PERL_CALLCONV PerlIO*	Perl_fp_dup(pTHX_ PerlIO *const fp, const char type, CLONE_PARAMS *const param);
#define PERL_ARGS_ASSERT_FP_DUP	\
	assert(param)
PERL_CALLCONV GP*	Perl_gp_dup(pTHX_ GP *const gp, CLONE_PARAMS *const param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GP_DUP	\
	assert(param)

PERL_CALLCONV HE*	Perl_he_dup(pTHX_ const HE* e, bool shared, CLONE_PARAMS* param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HE_DUP	\
	assert(param)

PERL_CALLCONV HEK*	Perl_hek_dup(pTHX_ HEK* e, CLONE_PARAMS* param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_HEK_DUP	\
	assert(param)

PERL_CALLCONV MAGIC*	Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *const param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MG_DUP	\
	assert(param)

PERL_CALLCONV struct mro_meta*	Perl_mro_meta_dup(pTHX_ struct mro_meta* smeta, CLONE_PARAMS* param);
#define PERL_ARGS_ASSERT_MRO_META_DUP	\
	assert(smeta); assert(param)
PERL_CALLCONV OP*	Perl_newPADOP(pTHX_ I32 type, I32 flags, SV* sv)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWPADOP	\
	assert(sv)

PERL_CALLCONV PADLIST *	Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PADLIST_DUP	\
	assert(srcpad); assert(param)

PERL_CALLCONV PADNAME *	Perl_padname_dup(pTHX_ PADNAME *src, CLONE_PARAMS *param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PADNAME_DUP	\
	assert(src); assert(param)

PERL_CALLCONV PADNAMELIST *	Perl_padnamelist_dup(pTHX_ PADNAMELIST *srcpad, CLONE_PARAMS *param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PADNAMELIST_DUP	\
	assert(srcpad); assert(param)

PERL_CALLCONV yy_parser*	Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param);
#define PERL_ARGS_ASSERT_PARSER_DUP	\
	assert(param)
PERL_CALLCONV PerlInterpreter*	perl_clone(PerlInterpreter *proto_perl, UV flags);
#define PERL_ARGS_ASSERT_PERL_CLONE	\
	assert(proto_perl)
PERL_CALLCONV void	Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLONE_PARAMS* param);
#define PERL_ARGS_ASSERT_RE_DUP_GUTS	\
	assert(sstr); assert(dstr); assert(param)
PERL_CALLCONV void*	Perl_regdupe_internal(pTHX_ REGEXP * const r, CLONE_PARAMS* param);
#define PERL_ARGS_ASSERT_REGDUPE_INTERNAL	\
	assert(r); assert(param)
PERL_CALLCONV void	Perl_rvpv_dup(pTHX_ SV *const dsv, const SV *const ssv, CLONE_PARAMS *const param);
#define PERL_ARGS_ASSERT_RVPV_DUP	\
	assert(dsv); assert(ssv); assert(param)
PERL_CALLCONV PERL_SI*	Perl_si_dup(pTHX_ PERL_SI* si, CLONE_PARAMS* param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SI_DUP	\
	assert(param)

PERL_CALLCONV ANY*	Perl_ss_dup(pTHX_ PerlInterpreter* proto_perl, CLONE_PARAMS* param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SS_DUP	\
	assert(proto_perl); assert(param)

PERL_CALLCONV SV*	Perl_sv_dup(pTHX_ const SV *const ssv, CLONE_PARAMS *const param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DUP	\
	assert(param)

PERL_CALLCONV SV*	Perl_sv_dup_inc(pTHX_ const SV *const ssv, CLONE_PARAMS *const param)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_DUP_INC	\
	assert(param)

#endif
#if defined(USE_LOCALE)		    && (   defined(PERL_IN_LOCALE_C)	        || defined(PERL_IN_MG_C)		|| defined (PERL_EXT_POSIX)		|| defined (PERL_EXT_LANGINFO))
PERL_CALLCONV bool	Perl__is_cur_LC_category_utf8(pTHX_ int category);
#define PERL_ARGS_ASSERT__IS_CUR_LC_CATEGORY_UTF8
#endif
#if defined(USE_LOCALE_COLLATE)
PERL_CALLCONV int	Perl_magic_freecollxfrm(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_FREECOLLXFRM	\
	assert(sv); assert(mg)
PERL_CALLCONV int	Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM	\
	assert(sv); assert(mg)
#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen)
			__attribute__deprecated__;
#define PERL_ARGS_ASSERT_MEM_COLLXFRM	\
	assert(input_string); assert(xlen)
#endif

#ifndef NO_MATHOMS
PERL_CALLCONV char*	Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp);
#define PERL_ARGS_ASSERT_SV_COLLXFRM	\
	assert(sv); assert(nxp)
#endif
PERL_CALLCONV char*	Perl_sv_collxfrm_flags(pTHX_ SV *const sv, STRLEN *const nxp, I32 const flags);
#define PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS	\
	assert(sv); assert(nxp)
#endif
#if defined(USE_PERLIO)
PERL_CALLCONV void	Perl_PerlIO_clearerr(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_CLEARERR
PERL_CALLCONV int	Perl_PerlIO_close(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_CLOSE
PERL_CALLCONV int	Perl_PerlIO_eof(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_EOF
PERL_CALLCONV int	Perl_PerlIO_error(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_ERROR
PERL_CALLCONV int	Perl_PerlIO_fileno(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_FILENO
PERL_CALLCONV int	Perl_PerlIO_fill(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_FILL
PERL_CALLCONV int	Perl_PerlIO_flush(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_FLUSH
PERL_CALLCONV STDCHAR *	Perl_PerlIO_get_base(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_GET_BASE
PERL_CALLCONV SSize_t	Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLIO_GET_BUFSIZ

PERL_CALLCONV SSize_t	Perl_PerlIO_get_cnt(pTHX_ PerlIO *f)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLIO_GET_CNT

PERL_CALLCONV STDCHAR *	Perl_PerlIO_get_ptr(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_GET_PTR
PERL_CALLCONV SSize_t	Perl_PerlIO_read(pTHX_ PerlIO *f, void *vbuf, Size_t count);
#define PERL_ARGS_ASSERT_PERLIO_READ	\
	assert(vbuf)
PERL_CALLCONV void	Perl_PerlIO_restore_errno(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_RESTORE_ERRNO
PERL_CALLCONV void	Perl_PerlIO_save_errno(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_SAVE_ERRNO
PERL_CALLCONV int	Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence);
#define PERL_ARGS_ASSERT_PERLIO_SEEK
PERL_CALLCONV void	Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, SSize_t cnt);
#define PERL_ARGS_ASSERT_PERLIO_SET_CNT
PERL_CALLCONV void	Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, SSize_t cnt);
#define PERL_ARGS_ASSERT_PERLIO_SET_PTRCNT
PERL_CALLCONV void	Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_SETLINEBUF
PERL_CALLCONV PerlIO *	Perl_PerlIO_stderr(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLIO_STDERR

PERL_CALLCONV PerlIO *	Perl_PerlIO_stdin(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLIO_STDIN

PERL_CALLCONV PerlIO *	Perl_PerlIO_stdout(pTHX)
			__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PERLIO_STDOUT

PERL_CALLCONV Off_t	Perl_PerlIO_tell(pTHX_ PerlIO *f);
#define PERL_ARGS_ASSERT_PERLIO_TELL
PERL_CALLCONV SSize_t	Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count);
#define PERL_ARGS_ASSERT_PERLIO_UNREAD	\
	assert(vbuf)
PERL_CALLCONV SSize_t	Perl_PerlIO_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count);
#define PERL_ARGS_ASSERT_PERLIO_WRITE	\
	assert(vbuf)
#endif
#if defined(USE_QUADMATH)
PERL_CALLCONV bool	Perl_quadmath_format_needed(const char* format);
#define PERL_ARGS_ASSERT_QUADMATH_FORMAT_NEEDED	\
	assert(format)
PERL_CALLCONV bool	Perl_quadmath_format_valid(const char* format);
#define PERL_ARGS_ASSERT_QUADMATH_FORMAT_VALID	\
	assert(format)
#endif
#if defined(WIN32)
PERL_CALLCONV_NO_RET void	win32_croak_not_implemented(const char * fname)
			__attribute__noreturn__;
#define PERL_ARGS_ASSERT_WIN32_CROAK_NOT_IMPLEMENTED	\
	assert(fname)

#endif
#if defined(WIN32) || defined(VMS)
PERL_CALLCONV int	Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_ASPAWN	\
	assert(mark); assert(sp)
PERL_CALLCONV int	Perl_do_spawn(pTHX_ char* cmd);
#define PERL_ARGS_ASSERT_DO_SPAWN	\
	assert(cmd)
PERL_CALLCONV int	Perl_do_spawn_nowait(pTHX_ char* cmd);
#define PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT	\
	assert(cmd)
#endif
#if defined(_MSC_VER)
PERL_CALLCONV int	Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg);
#define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET	\
	assert(sv); assert(mg)
#endif
#ifdef PERL_CORE
#  include "pp_proto.h"
#endif
END_EXTERN_C

/* ex: set ro: */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        S@ @    @@=8@&m@@AoB@@BZ@@?^@@A=R@@[@@ABC\@@b@@A`@@B~X@@
T@@dY@@ABCDU@@V@@A2S@@W@@9_@@ABCL@@M@@A+K@@N@@ABDEGJ@@N T@@AzQ@@BP@@O@@Ah O@@ D@@ABC @@@ A@@A C@@ B@@ABDA@@NI@@ V@@ABx@@w@@ [@@ABi@@h@@ACDEFg@@Kj@@A k@@l@@ABe@@ R@@AD Q@@B} E@@e~@@ACDz@@{@@A|@@B}@@ \@@ ]@@ABC@@a@@ACDEE@@ N@@Aa M@@ I@@AB H@@ L@@ACr J@@ P@@A9 K@@ X@@A Z@@ Y@@ABCb G@@( W@@A S@@BF@@H@@ACDEFG@@v@@AD@@Bc@@ F@@A]@@
y@@ U@@ABCDd@@
f@@A@@(p@@AB
q@@
ur@@	/u@@AB
s@@	t@@An@@o@@ABCDEGH@@ ]@  ,  #@  A  AA	*CamlinternalFormat.format_of_string_formatA@@@  ,  # F h G M nAA	)CamlinternalFormat.format_of_string_fmttyA@@@  ,  #L If I|M 7 WAA	$CamlinternalFormat.fmt_ebb_of_stringA@@@  ,  #P~R H) Hn@A	'CamlinternalFormat.make_padprec_fmt_ebbA@
	@@  ,  #@W E E@A	)CamlinternalFormat.make_precision_fmt_ebbA@@@  ,  #0\ C C@A	'CamlinternalFormat.make_padding_fmt_ebbA@@@  ,  # a <e <|b A{ AAA	%CamlinternalFormat.open_box_of_stringA@@@  ,  #!g : :h ;w ;AA	#CamlinternalFormat.failwith_messageA@ @@  ,  "'m  n  AA8CamlinternalFormat.constA@&%@@  ,  !-s    t  4  IAA	"CamlinternalFormat.string_of_fmttyA@,+@@  ,  !3y    z    AA	#CamlinternalFormat.format_caml_charA@21@@  ,  !9      |  AA	 CamlinternalFormat.convert_floatA@87@@  ,  !?        YAA	 CamlinternalFormat.convert_int64A@>=@@  ,  !E        AA	$CamlinternalFormat.convert_nativeintA@DC@@  ,  !|K  2  D  N  AA	 CamlinternalFormat.convert_int32A@JI@@  ,  !hQ        1AA>CamlinternalFormat.convert_intA@PO@@  ,  !TW        AA	$CamlinternalFormat.transform_int_altA@VU@@  ,  !D]        AA	"CamlinternalFormat.format_of_fconvA@\[@@  ,  !c|  
  $  #  >@A	#CamlinternalFormat.format_of_iconvnA@ba@@  ,   it    z    @A	#CamlinternalFormat.format_of_iconvlA@hg@@  ,   ol  ާ  ޾r  ߽  @A	#CamlinternalFormat.format_of_iconvLA@nm@@  ,   ud  ݂  ݘj  ދ  ޥ@A	"CamlinternalFormat.format_of_iconvA@ts@@  ,   {[  `  z`    (AA	(CamlinternalFormat.string_to_caml_stringA@zy@@  ,   E  >  TX    AA	$CamlinternalFormat.fix_int_precisionA@@@  ,   &    B    AA>CamlinternalFormat.fix_paddingA@@@  ,        .@A9CamlinternalFormat.recastA@@@  ,   8    @A?CamlinternalFormat.type_padprecA@@@  ,   $,    @A?CamlinternalFormat.type_paddingA@@@  ,   xAA@@@  ,  ^^_ _AA	 CamlinternalFormat.string_of_fmtA@@@  ,  NN!~^q^AA=CamlinternalFormat.bprint_fmtA@@@  ,  FF8FFAA	(CamlinternalFormat.bprint_string_literalA@@@  ,  EcE{EEAA	&CamlinternalFormat.bprint_char_literalA@@@  ,  CCDEAA	+CamlinternalFormat.string_of_formatting_litA@@@  ,  BBBBAA	#CamlinternalFormat.bprint_float_fmtA@@@  ,  x°@y@	AAAA	$CamlinternalFormat.bprint_fconv_flagA@@@  ,  dȰ??(?@!AA	$CamlinternalFormat.bprint_altint_fmtA@@@  ,  4ΰ==>>AA	!CamlinternalFormat.bprint_int_fmtA@@@  ,  ԰<y<=c=AA	$CamlinternalFormat.bprint_iconv_flagA@@@  ,  ڰ <<&@A	#CamlinternalFormat.bprint_precisionA@@@  ,  ߰.%::@A	!CamlinternalFormat.bprint_paddingA@@@  ,  *88+9!9^AA	!CamlinternalFormat.bprint_pad_optA@@@  ,  0|881}88AA	&CamlinternalFormat.bprint_ignored_flagA@@@  ,  6v777y8,8PAA?CamlinternalFormat.bprint_padtyA@@@  ,  <9//=q7j7AA	"CamlinternalFormat.bprint_char_setA@@@  ,  hB1//C4/k/AA	"CamlinternalFormat.char_of_counterA@@@  ,  XH(. .I-..AA	 CamlinternalFormat.char_of_fconvA@ @@  ,  HN!,,O$-b-AA	 CamlinternalFormat.char_of_iconvA@@@  ,  8T,1,EU,K,qAA	"CamlinternalFormat.buffer_contentsA@
@@  ,  (Z+]+s[+,
AA	$CamlinternalFormat.buffer_add_stringA@@@  ,  `**a++-AA	"CamlinternalFormat.buffer_add_charA@@@  ,   f)_)ug**AA	$CamlinternalFormat.buffer_check_sizeA@@@  ,  &l ((m ()'AA	 CamlinternalFormat.buffer_createA@%$@@  ,  ,r ##s %.%?AA	*CamlinternalFormat.default_float_precisionA@+*@@  ,  2x r @A	1CamlinternalFormat.param_format_of_ignored_formatA@0/@@  ,  7} C2G~ EAA	#CamlinternalFormat.prec_of_prec_optA@65@@  ,  =~
w
 @

AA	!CamlinternalFormat.pad_of_pad_optA@<;@@  ,  CnqjAA	!CamlinternalFormat.is_in_char_setA@BA@@  ,  IekAA?CamlinternalFormat.rev_char_setA@HG@@  ,  OavbAA	"CamlinternalFormat.freeze_char_setA@NM@@  ,  tU[_/tAA	"CamlinternalFormat.add_in_char_setA@TS@@  ,  d[X>RX>kAA	"CamlinternalFormat.create_char_setA@ZY@@  ,  4aX>W@@@X>>
@b@%param A@@A@@A@  ,  ,n^@~C[$@(char_set @)[@@C!c @[[@@D#ind >@@ @jC@`@\\@@E'str_ind K@@ @C@o@]]@@F$mask X@@ @C@p@]]@@G@2A@@A9B@@/C@@AE@@%D@@ABC@@E@  ,  _/3g@R@@C@C@
D@nAUE@  ,  ɰ_/M_/i@@@F@F@
G@
	|Bc&F@  ,  i@Ae(E@  ,  ٰ]@@Agְ,*@(@AB@@C@  ,  &\@@@mݰ@2@2@AB@@B@  ,  -b@@@o퐰2avv@(char_set @7av@@I@	A@@A@@A@  ,  ?k@@A琰Ee@(char_set @Je@@ K)char_set' >@@ @
GC@
=@UfVf@@ L @A@@B@@AB@[B@@A@B@  ,  \ bh6:ciP@@@C@D@
kِC,!i #intA@@C@C@C@
mC@
T@|g!#}j@@ :M 5@(@A&@C@@AB'@D@  ,  L AiPV%@@@E@
lE@F@
{A& GD@  ,  8 NiPpiP@k@@H@
H@I@
B4 U E@  ,    \@@A6 W"D@  ,    ^(@@Ad ZLBA  ,   cff@AAk b@T@AQ@A
  ,   lf#@@"@r iA@  ,   pqjyqj@@@E@[E@rF@k5B Rn@@(char_setR@En	@@ O!cO@n
n@@ P#ind 
@@ @C@@oo@@ Q'str_ind!	@@ @C@@p+1p+8@@ R$mask"@@ @C@@p+Ip+M@@ S @/A@@A6B@@,C@@AE@@#D@@ABC@@F@  ,   ð	qjl@@AI E@  ,   ǰ
p+-@@AK İ@@AB@@C@  ,   ΰo@@@Q ˰@@@AB@@B@  ,   հ



@@A b !~
w
w@'pad_opt' @&~
w
@@ W ް@	A@@A@@A@  ,   . @

@AA@  @@  ,  t @A%width(
@6 @

7 @

@@ X @@B@@AB@@B@  ,  \ @~
w
@@@$ A@  ,  P D DfrE Df~@@A J C22@(prec_opt+@O C2O@@!Z!@	A@@A@@A@  ,  H!W E@AA@!!
@@  ,  @!@A$ndec,@_ E` E@@![!@B@@A@B@@B@  ,  (!#i C2R@@@$! A@  ,   !'m pn p@AA@!%!$@@  ,  !,r p@AA@!)!(@@  ,  !0	@A Ʊ.E  8 @@@A@@@A@@@@!?]/G  8 @@@A@@@A@@@@@!C^0I  8 @@@A@@@A@@@@@!G_
1K  8 @@@A@@@A@@@@@!K`2M  8 @@@A@@@A@@@@@!Oa3O  8 @@@A@@@A@@@@@!Sb4Q  8 @@@A@@@A@#@@@@!Wc5S  8 @@@A@@@A@'@@@@![d#ign67)@@ @0+@@ @1,@@ @2-@@ @3"@@ @4+@@ @5@@ @/@ L L@@!e#fmt7;;@@ @fT@@ @gU@@ @hF@@ @iW@@ @jX@@ @k@@ @e@ L L@@!f'counterS@@ @=@ oz oz@@! a@<  8 @@@AY@@ @<@@AT!@@@! K@AG  8 @@@AP@@ @;@@AT!@@@! J@B!@C@@AFA@@qB@@AB@B@@AC@@B@C@  ,  !Ұ  n:>  n:y@AA@!!@@  ,  !װ  n:O@AA@!!@@  ,  !	@A)width_optQ*pad_option@@ @@ , m" - m+@@! _(char_setR(char_set@@ @@ 8 m- 9 m5@@! `@{  8 @@@A@@ @@@AT!@@@! I@A  8 @@@A@@ @@@AT"@@@" H@B!@C@@A?@>@-D@@ABC?@D@  ,  "
 S i T j@AA@""
@@  ,  " X j@AA@""@@  ,  "	@A'pad_optM:@@ @@ d hb| e hb@@"" ]%fmttyN4%fmtty@@ @@@ @@@ @@@ @@@ @@@ @@@ @@  hb  hb@@"F ^"A@@A(C@@@5D@@ABC@D@  ,  "O  g*.  g*a@AA@"M"L@@  ,  "T  g*?@A"A@"Q"P@@  ,  x"X	@$A/6$Ignored_format_arg_'gET  8 @@@A@@@A@"c@@@"e{6$Ignored_format_arg_'hFT  8 @@@A@@@A@"g@@@"i|6$Ignored_format_arg_'iGT  8 @@@A@@@A@"k@@@"m}6$Ignored_format_arg_'jHT  8 @@@A@@@A@"o@@@"q~6$Ignored_format_arg_'kIT  8 @@@A@@@A@"s@@@"u6$Ignored_format_arg_'lJT  8 @@@A@@@A@"w@@@"y @'pad_optK@@ @t@  f  f@@" [%fmttyLa+@@ @v,@@ @w-@@ @x.@@ @y/@@ @z0@@ @{@@ @u@  f   f%@@" \@0  8 @@@AM@@ @s@@AT"@@@" B@A;  8 @@@AD@@ @r@@AT"@@@" A@B"@@A:C@@@GD@@ABC@D@  ,  \"°! e!	 e@AA@""@@  ,  T"ǰ!
 e@AA@""@@  ,  L"˰! e! e@@$boolE@@T@pT@?W@@TTTTI@T@PT@gT@o@@T@nT@~A'pad_optD
@@ @;@!7 d!8 d@@" Z@z  8 @@@A@@ @:@@AT"@@@"z@A  8 @@@A@@ @9@@AT#@@@#y@B"@=@A;@C@@AB<@D@  ,  @#
H@A!#C@  ,  ,#
!S a'+!T cb@AA@##
@@  ,  $#!X b<B@AA@##@@  ,  #!\ cbp!] cb@ +@%floatD@@T@T@@@TTTT@T@T@T@@@T@T@A'pad_optBY@@ @@! `! `@@#A X(prec_optC S+prec_option@@ @@! `! `"@@#M Y@  8 @@@A@@ @
@@AT#S@@@#Ux@A  8 @@@A@@ @@@AT#Y@@@#[w@B#V@@A@*D@@A!C@@BC@F@  ,  #d! cb! cb@ T<OT@@@T@T@ <A=%#mE@  ,  #tg@@A@(#pD@  ,  #w! ^! _@AFA@#u#t@@  ,  #|! _@AJA@#y#x@@  ,  #! _! _@ @%int64M@@T@5T@@@TT]TT	@T@T@*T@@@T@2T@EiAo%iconv@@@ @@! ]! ]@@# V'pad_optA@@ @@! ]! ]@@# W@:  8 @@@AW@@ @@@AT#@@@#v@AE  8 @@@AN@@ @@@AT#@@@#u@B#@@'D@@AB@C@@AC@F@  ,  #U@A.#
D@  ,  #ϰ" [(," \=@AA@##@@  ,  #԰" \=C@AA@##@@  ,  #ذ" \=V" \=l@ @)nativeintK@@T@T@sd@@TTTT}@T@T@T@@@T@T@AǠ%iconv>>@@ @@"E Z"F Z@@$ T'pad_opt?%@@ @@"O Z"P Z#@@$
 U@  8 @@@A@@ @@@AT$@@@$t@A  8 @@@A@@ @@@AT$@@@$s@B$@U@'D@@ABU@C@@ACV@F@  ,  p$$U@A.$ 
D@  ,  T$'"m X"n Y@AA@$%$$@@  ,  L$,"r Y@AA@$)$(@@  ,  <$0"v Y"w Y@!E@%int32L@@T@T@@@TTETT@T@T@T@@@T@T@-A%iconv<@@ @@" W" W@@$[ R'pad_opt=}@@ @@" W" W@@$e S@  8 @@@A@@ @@@AT$k@@@$mr@A  8 @@@A@@ @@@AT$q@@@$sq@B$n@@'D@@AB@C@@AC@F@  ,  ,$|U@HA.$x
D@  ,  $" V48" V4@ANA@$}$|@@  ,  $" V4I@ARA@$$@@  ,  $" V4V" V4l@!@!@@T@T@[@@TTTTe@T@lT@T@v@@T@T@oAu%iconv:@@ @V@" U!" U&@@$ P'pad_opt;@@ @W@" U(" U/@@$ Q@@  8 @@@A]@@ @U@@AT$@@@$p@AK  8 @@@AT@@ @T@@AT$@@@$o@B$İ@@'D@@AB@C@@AC@F@  ,  $S@A.$
D@  ,  $հ# T

# T
@AA@$$@@  ,  $ڰ#  T

@AA@$$@@  ,  $ް#$ T

#% T
@!@"@@T@T@g@@TT-TT@T@T@T@@@T@
T@ĐAɠ'pad_opt9@@ @)@#G S

#H S

@@% O@  8 @@@A@@ @(@@AT%@@@%
n@A  8 @@@A@@ @'@@AT%@@@%m@B%@M@AK@C@@ABL@D@  ,  %E@A!%C@  ,  %#c R
p
t#d R
p
@AA@%%@@  ,  %"#h R
p
@AA@%%@@  ,  %&#l R
p
#m R
p
@";@j@@T@T@[@@TTTTe@T@lT@T@@@T@T@
A'pad_opt8f@@ @@# Q
R
e# Q
R
l@@%N N@  8 @@@A@@ @@@AT%T@@@%Vl@A  8 @@@A@@ @@@AT%Z@@@%\k@B%W@@A@C@@AB@D@  ,  %cF@/A!%_C@  ,  l%f# r5@A4A@%c%b@@  ,  d%j# r9@A8A@%g%f@@  ,  X%n@:A=@  8 @@@A@@ @g@@AT%u@@@%w M@A  8 @@@A@@ @f@@AT%{@@@%} L@B%x@B@B@  ,  P%# l# l@APA@%%~@@  ,  H%# l@ATA@%%@@  ,  <%	@VA["$0OT  8 @@@A@@@A@%@@@% C"$1PT  8 @@@A@@@A@%@@@% D@#  8 @@@A@@5@@ @@@ @@ @@@ @@ @@@AT%@@@% E@-  8 @@@AJ@@ @@@AT%@@@% G@A  8 @@@A<@@ @@@AT%@@@% F@BC%9B@  ,  4%# P
-
1# P
-
Q@AA@%%@@  ,  ,%$ P
-
B@AA@%%@@  ,   %	@A@G  8 @@@Ad@@ @@@AT%@@@%j@AR  8 @@@A[@@ @@@AT%@@@%i@B%SB@  ,  %Ұ$ N$ N
@AA@%%@@  ,  %װ$ N
	@AA@%%@@  ,  %	@A@a  8 @@@A~@@ @@@AT%@@@%h@Al  8 @@@Au@@ @@@AT%@@@%g@B%mB@  ,  %$2 L@@@%qB@  ,  %$6 %.%=@@A%$; ##@%fconv@$@ ##@@% %@'*match*B@@A
A@@B@@B@  ,  &$L $Q$a$M $Q$c@@A&B@  ,  t&$Q ##@@@&@@A@@A@  ,  l&$W ((@AA@&&
@@  ,  `&$[ ()$\ ()%@@@R@(S@(A%$h ((@)init_size@$m ((@@&* &%@	A@@A@@A@  ,  T&/@@&*A@  ,  8&1$w	*C*G$x	*C*k@@@Q@*/R@*E%$)_)_#@#buf@($)_)x@@&K (overhead@$)_)y$)_)@@&R #len*@@ @(R@(@$))$))@@&_  'min_len@@ @(R@(@$))$))@@&l à'new_len@@ @)R@(@$))$))@@&y Ġ'new_str$@@ @)R@)@$**!$**(@@& &@FB@@A:C@@/D@@AB#E@@F@@AHA@@BC@@F@  ,   &d$
*m*@@tA\&FA  ,  &$**+$**?@A{Ac&@@ABC@@E  ,  &$**@@Al&	EA  ,  &$))$)*@ABs&)'@'@A"@BC@@D  ,  &$))@@A|&	D@  ,  &%))@@A&
D@  ,  &%))@@A&:8@2@AB@@C@  ,  &ư%))@@@&ð@A@A9@B@@B@  ,  p&Ͱ%**%*+@|@@Q@*R@*|C&}z%!**@#bufz@%&**@@& Ǡ!cw@%,**%-**@@& &@B@@AA@@B@B@@A@B@  ,  T&%9**%:**@@@Q@*eR@*]ߐB&&B@  ,  D&@@@)&B@  ,  '%H++%I++@@@Q@+R@+
E&%W+]+]@#buf@%\+]+v@@' ʠ!s@%b+]+w%c+]+x@@'  ˠ'str_len@@ @*R@*@%o+{+%p+{+@@'- '(@B@@AA@@C@@AB@B@@A@C@  ,  '8%~++%++@@@Q@*R@**B6'=C@  ,  'D/@@.A9'@C@  ,  'G%+{+}3@@2@<'D@B@B@  ,  'M%,K,M?@@>@&%,1,1D@#buf@I%,1,H@@'Z 'U@	A@@A@@A@  ,  |'_%$-b-W@@VA'	%!,,\@%iconv@a%!,,@@'l 'g@	A@@A@@A@  ,  l'q%$-b-p%$-b-s@@iA'oA@  ,  \'v%#--V%#--Y@@nA't
A@  ,  L'{%#-->%#--A@@sA'yA@  ,  <'%#--&%#--)@@xA"'~A@  ,  ,'%",,%",,@@}A''A@  ,  '%!,,@@@+' A@  ,  '%-..@@A';Ɛ%(. . @%*opt* @@ @+@%(. .%(. .A@' ҠQ@+@%(. .@@' Ӡ%fconv@%(. .%(. .!@@' '@D@@AB@@BC@@A@@AC@@D@  ,  '&,..&,..@@A.'D@  ,  '&,..&,..@@A3'D@  ,  'Ű&+..&+..@@A8'D@  ,  'ʰ&+..&+..@@A='D@  ,  'ϰ&*.].}&*.].@@AB'#D@  ,  t'԰&*.].l&*.].o@@AG'(D@  ,  d'ٰ&).9.Y& ).9.\@@AL'-D@  ,  T'ް&$).9.H&%).9.K@@AQ'2D@  ,   '&)(. .$@@AU'@3@A21B@@C@  ,  '&0(. .L@@AZ'@:@A7@B@@B@  ,  '@A`%*sth*@@' '@D@AC@@C@AB@@C@  ,  '@@m'B@  ,  '&E4/k/	@@	A'
&J1//	@'counter
@	
&O1//#@@( (@	A@@A@@A@  ,  (&W3/R/g&X3/R/j@@	A(A@  ,  (&\2/9/N&]2/9/Q@@	A(
A@  ,  (&a1//&	@@	@(A@  ,  |(&el66&fp7e7h@@@Q@3NR@3	/A'"&y9//	=@#buf"@	B&~9//@@(; ٠(char_set@&9//&9//@@(B ڠ+print_start@&,@@ @1yR@,e@@ @.&R@,f@ @,gS@,_@&:/0&:/0@@(W ۠)print_out@R@,h@'-@@ @-R@,i@@ @2
R@,j@ @,k@ @,lS@,`@&B1P1V&B1P1_@@(o ܠ+print_first@-R@,m@R@,nR@,o@ @,p@ @,qS@,a@&F11&F11@@( ݠ,print_second@>R@,r@=@@ @0R@,s*R@,t@ @,u@ @,vS@,b@&K22&K22@@( ޠ(print_in@SR@,w@R@,x@A@@ @0R@,yBR@,z@ @,{@ @,|@ @,}S@,c@&^44&^44@@( ߠ*print_char@Q@2R@,~@/R@,TR@,@ @,@ @,S@,d@'f55'f55@@( (@B@@AA@@H@@AZE@@6G@@ABCuD@@OF@@AC@@BD@tD@@A&C@@&B@@AB@H@  ,  p(ذ'o7S7\'o7S7d@@	A(H@  ,  h(ݰ'#n77;'$n77P@Q@3JT@3F	A(&H@  ,  \('-n77"'.n779@@@S@3<T@34	B(2H@  ,  D('9n77 ':n77R@@	A(7H@  ,  <('>m66'?m67@@@S@3#T@3
B(CH@  ,  $)'Jk66'Kk66@@@Q@3 R@2
B)	OH@  ,  )
@@
A)RH@  ,  )'Y://
@@
@)US@BG@B@  ,  )'_g66,'`g66C@@@R@2tS@2l	-CamlinternalFormat.bprint_char_set.print_charB#bufQ@.!@'pf55'qf56@@). !iR@2:@'yf56'zf56@@)7 )2@B@@A!cC@@A@@AB@D@@AC@@'B@@AB@@@@ @@AB @@ @@A @@ @@ABCC@  ,  )T;'g66]@@4A2)QC@  ,  )X'h6^6k'h6^6@@@R@2S@2?B>)]+C@  ,  t)d'h6^6@@DAB)a/C@  ,  `)h'i66'i66@@IAH0'@@ @2V@'i66'i66@@)u )p>C@  ,  @)w'f56'f56@@@ @2K\A[)z@H@AC@BB<B@  ,  ,)'f56'i66@@e@c)B@  ,   )'e55'e55@@	+CamlinternalFormat.bprint_char_set.print_inAg#setJR@0&@'^44'^44@@) !iR@1-@'^44'^44@@) !j R@14@'^44'^44@@) )@B@@AA@@ C@@AB@~G@@AUF@@'E@@AB@C@@L @@AB'@@@h @@A@ @@ @@ABCC@  ,  )İ(
c55(c55@@;A:)C@  ,  )ɰ(b5y5(b5y5@iR@1R@1DBD)(C@  ,  )Ӱ(a5Q5W(a5Q5w@R@1MBM)1C@  ,  )ܰ("`595?(#`595O@R@1VBV):C@  ,  x)(+_457(,d55@@\A[)?C@  ,  p)(0_45
(1_451@'@@T@1gT@1U@1wjBj)NC@  ,  `)(?_45!(@_450@(@@U@1xU@1V@1xAx* \C@  ,  <*(M_44~@@}@|*`C@  ,  *(Q[44(R[44@1R@0	/CamlinternalFormat.bprint_char_set.print_secondB#setR@.V@(_K22(`K22@@* !iR@/@(gK22(hK22@@*% * @A@@B@@AB@J@@AI@@(H@@AB@F@@ @@ABC@@ @@A@@@ @@ABCB@  ,  *>(Z44(]44@@0A.*<B@  ,  *C(Y4l4t(Y4l4@@5A3*A@IC@@A$#B!C@  ,  *M(V4&4.(V4&4>@DR@0sBBA*OC@  ,  *V(U44(U44$@	R@/JBI*WC@  ,  p*^(W4@4^@@OAM*[C@  ,  h*b(T33(T34@x@@S@0S@0MT@0$\B[*i(C@  ,  X*p(T33(T34@(@@T@0%T@0KU@01jAi*w6C@  ,  <*~(T33@@oAm*{:C@  ,  *(O33
(O33@7R@/pR@.rxBw*De@d@(switcherD@@ABCgaD@  ,  *(P3!3<@@A*D@  ,  *(R33(R33@B*Vw@v@E@ABCysE@  ,  *(S33@@A*E@  ,  *(Q3=3X(Q3=3@@@S@/S@/T@/B*E@  ,  p*(Q3=3l(Q3=3@(@@T@/T@/U@/A*'E@  ,  T*Ű)Q3=3T@@A*+E@  ,  *ɰ)M22)M22@`@@ @/OA*B@  ,  *Ӱ)M22)Y4l4@@A*B@  ,   *ذ)L22)L22@@@R@/DS@/1АB*B@  ,  
*)*L22@) @@S@/2S@/BT@/>ݐA*B@  ,  
*)7L22@@@*B@  ,  
*);J2e2p)<J2e2@@	.CamlinternalFormat.bprint_char_set.print_firstAҠ#set@)DF11)EF11@@+ !iR@.@)MF11)NF11@@+ +@C@@AA@@B@@AB@M@@AL@@(K@@AB@oI@@@@@ABF@@ @@AC@@ @@ABCC@  ,  
+')mH22')nH229@@2A1+%@@D@@ABCD@  ,  
P+2)xI2;2N)yI2;2c@@=A<+0*'@&@E@ABC)#E@  ,  
+>)G12)G12@@@ @.MAM+A@87B5/B@  ,  
+J)G11)J2e2@@U@T+HB@  ,  +O)E11)E11@@	,CamlinternalFormat.bprint_char_set.print_outA,#setR@-@)B1P1`)B1P1c@@+] !iR@..@)B1P1d)B1P1e@@+e +`@A@@B@@AB@8P@@A O@@)AN@@AB@L@@C@@ABI@@"@@@AF@@: @@ABCB@  ,  +~)D1|1)D1|1@@/A.+|B@  ,  +)D1|1)D1|1@*@@R@.gS@.T:B:+(B@  ,  +)D1|1@)@@S@.US@.eT@.aGAG+5B@  ,  +)D1|1M@@LAK+9B@  ,  |+)C1h1lQ@@P@O+=B@  ,  H+)A117)A11N@@	.CamlinternalFormat.bprint_char_set.print_startA#setd@):/0):/0@@+ (is_alone@)@@ @-qS@,)y@@ @-^S@,@ @,S@,@*	;00 *
;00(@@+ +°@B@@A"A@@B@S@@A qR@@)Q@@AB@(O@@hF@@ABCL@@C@@A\I@@@@@ABCB@  ,  @+*&A11%*'A111@@@R@.S@.
BAB+#B@  ,  0+*2@1	1
*3@1	1@IBI+*B@  ,   +*9A11O@@NAM+.B@  ,   +*=?00*>?01@ @@R@-S@-T@-[B[+<B@  ,  ,@^A], >B@  ,  ,*M?00*N?00@@@S@-T@-iAi,JB@  ,  ,*Y?00!@@nAm,NB@  ,  ,*];00)*^>00AA	7CamlinternalFormat.bprint_char_set.print_start.is_aloneA@,,@@  ,  ,*c;00+@@x@v,@V@AUOA@  ,  ,#*i>00*j>00@)@@V@-V@-W@-B@!c@$*;00*@@,> &before@@ @,T@,@*<0-07*<0-0=@@,K %after
@@ @-&T@,@*<0-0?*<0-0D@@,W ;
<,T@DB@@A
E%C@@.A@@AB@*:B@@AC@@B@E@  ,  ,l*>00*>00@*.@@V@-V@-W@-^BI$;#.,v"E@  ,  ,}*=0t0z*=0t0@@@T@-`T@-vU@-pnBY4K3>,2E@  ,  ,u@@tA^9P8C,7E@  ,  ,*<0-0M*<0-0]@S|Ad*$Char,@?@A8@B7@B@  ,  d,*<0-0_*<0-0o@SA
,@A@A@@A@  ,  H,*<0-03@@@v,A@  ,  0,*y8,89
@@
A,[ *v77
@#buf @
*v77@@, %padty @+v77+v77@@, ,@B@@AA@@B@!iB@@A@B@  ,  $,ʰ+x88)+x88+@@
A,B@  ,  ,ϰ+w78+w78@@
A$,B@  ,  
,԰+v77
@@
@(,B@  ,  
,ذ+}88
@@
A, +$|88
@#buf  @
+)|88@@, (ign_flag @+/|88+0|88@@, ,@B@@AA@@B@!B@@A@B@  ,  
,+<}88@@@,B@  ,  
,+@99+A99 @@A, +G88@#buf @"+L88@@-	 'pad_opt @+R88+S88@@- -@B@@AA@@B@!B@@A@B@  ,  
-+_9!9I5@!@@S@4S@4%T@4!<A(%width @+n9!9*+o9!9/@@-, -'@C@@AB@C@  ,  
-2+x9!93N@@MA-/C@  ,  
l-6+|88R@@Q@;-3(B@  ,  
H-:+::+::@!@@V@5MW@5DbB, S  8 @@@A@@@A@n@@@-N  	U  8 @@@A@@@A@ q@@@@-R #buf
"T@@ @4@+99+99@@-] #pad+  @@ @4@@ @4@@ @4@+99+99@@-r "$0V  8 @@@A@@@A@-t@@@-v%padty!:@@ @4@+::+::@@-@  8 @@@A@*@@ @4@@ @4@ @4@@AV-@@@-@  8 @@@A(@@ @4@@AV-@@@-@AB-@GB@@A=A@@&C@@AB@!rD@@A"AB@@""C@@AB@C@  ,  
8-j@@Aa&-C@  ,  
-+:T:n+:T:@"@@W@5W@5.X@5)ҐAp%padty!{@@ @4@,::+,::0@@-!n
*@@ @4@,
::2,::3@@-@a  8 @@@Aj@@ @4@@AV-@@@-@A-Ͱ@=@AC@@>@"D@@ABC=@D@  ,  
-۰,!:8:<,":8:R@"@@V@5W@5B1-D@  ,  	-
,.:T:@@	A6 -D@  ,  	-,3::,4::@@A@  8 @@@A@@ @4@@AV-@@@-@A-ca@B^@B@  ,  	-,B99@@@-B@  ,  	. ,F;;,G;;@"v@@W@6W@6X@6/A-!KS  8 @@@A@@@A@:@@@.!IU  8 @@@A@@@A@!D=@@@@.#buf#@@ @60@,f;Y;_,g;Y;b@@.$$prec,{!g@@ @6C@@ @6D@@ @6B@,{;Y;c,|;Y;g@@.9!n+-@@ @6r@,;;,;;@@.C@  8 @@@A@@ @6q@@AV.H@@@.J@A.E@5B@@AC@@-A@@AB@"B@@A"C@@B@C@  ,  	.W,;;,;;@#@@V@6W@6BU.]C@  ,  	.d
,;;@@AZ$.bC@  ,  	h.i,;{;,;{;@@A_@<  8 @@@AE@@ @6^@@AV.r@@@.t@A.o@*@A'@B&@B@  ,  	P.y,<<@@Ao"$0V  8 @@@A@@@A@.@@@.@U  8 @@@A@+@@ @6@@ @6@ @6@@AV.@@@.@  8 @@@Ab@@ @6@@AV.@@@.@AB."B@  ,  	4.,;Y;k@@@.&B@  ,  	.,=c=@@A.P!ɐ,<y<y@#buf!@,<y<@@.%iconv!@,<y<,<y<@@..@B@@AA@@B@#YB@@A@B@  ,  	.- =E=K-=E=b@@A.B@  ,  .-<<-<=	@@A$.B@  ,  .İ-
<<-<<@@A).B@  ,  .ɰ-<y<@@@-.B@  ,  l.Ͱ->>@#c@@R@8R@8S@8A.!萰-%==@#buf!@-*==@@. (ign_flag !@-0==-1==@@.!%iconv!!@-7==-8==@@."#pad"!@->=> -?=>@@.#$prec#!@-E=>-F=>@@/$.@'E@@AC@@$D@@ABB@@A@@AC@":G@@"D@@AB"E@@"bF@@A#B@@#eC@@ABC@E@  ,  `/-b>>-c>>@#@@Q@8R@8~TBN/!#E@  ,  L/(-n>i>k-o>i>@#@@Q@8kR@8d`BZ/-/E@  ,  8/4-z>J>L-{>J>g@#@@Q@8QR@8JlBf/9;E@  ,  $/@->&>(->&>H@#@@Q@89R@82xBr/EGE@  ,  /L->>
->>$@#@@Q@8!R@8B~/QSE@  ,  /X@@@/TVE@  ,  /[-?@@#@@R@9R@9S@9A/"6-??@#buf&"6@-??+@@/v&(ign_flag'"3@-??,-??4@@/}'%iconv("1@-??5-??:@@/(#pad)"/@-??;-??>@@/)$prec*")@-???-??C@@/*!c+"#@-??D-??E@@/+/@.F@@A
A@@B#D@@-E@@A C@@B@@ABC@"G@@#^D@@AB#E@@"F@@A$QB@@#C@@ABC@F@  ,  /-??-??@$c@@Q@9qR@9jBX/%F@  ,  /.??.??@$o@@Q@9YR@9RBd/1F@  ,  /̰.??.??@${@@Q@9?R@98
Bp/=F@  ,  /ذ.??.??@$@@Q@9%R@9B|/IF@  ,  /.*?c?e.+?c?@$@@Q@9
R@9"B/UF@  ,  t/.6?H?J.7?H?a@$@@Q@8R@8.B/aF@  ,  `/3@@2@/dF@  ,  H/.EAA=@@<A/".K@y@yC@#buf."@H.P@y@@@0
-%fconv/"@.V@y@.W@y@@@0.0@
C@@AB@@A@@AB@$B@@A@C@  ,  00 .fABAR.gABAi@@^A"0C@  ,  0%.kA+A-c@@bA&0"@@A@B@B@  ,  0,.r@@.s@A@$@@Q@9R@9R@9rB703@
;C@@A$@#@AB"@C@  ,  0@@{A?0;C@  ,  0B.@@.@@@BF0BC@  ,  0I@AH0DC@  ,  0K.AA#.AA%@@AM0IC@  ,  0P.@@@@@Q0M+B@  ,  0T.BB@$@@R@:R@;S@;	B0".BB@#buf2"@.BB@@0n0(ign_flag3"@.BB.BB&@@0u1%fconv4"@.BB'.BB,@@0|2#pad5"@.BB-.BB0@@03$prec6"@.BB1.BB5@@040@'E@@AC@@$D@@ABB@@A@@AC@#G@@$MD@@AB$E@@#F@@A%@B@@$C@@ABC@E@  ,  0.BB.BB@%R@@Q@:R@:BN0#E@  ,  l0.BB.BB@%^@@Q@:R@:BZ0/E@  ,  X0/BwBy/BwB@%j@@Q@:R@:Bf0;E@  ,  D0ǰ/
BSBU/BSBu@%v@@Q@:R@:Br0GE@  ,  00Ӱ/B8B:/B8BQ@%@@Q@:wR@:oB~0SE@  ,  0߰"@@!@0VE@  ,  0/(DE
,@&stringO@@S@;nS@;T@;6B0"/:CC>@.formatting_lit9"@C/?CC@@06!c<$charB@@ @;<@/KDE/LDE@@1	91@B@@AA@@B@@B@  ,  1/VDEZ@@YA"1
	B@  ,  1/ZDD/[DD@@^A'#str;P@@ @;6@/eDD/fDD@@1#81@@B@@AB@@B@  ,  1)/oD
D)/pD
D,@@sA<#str:e@@ @;-@/zD
D/{D
D@@18713@-@B@@AB@@B@  ,  1>/DD/DD@@AP1<@6@A@@A@  ,  1E/DD/DD@@AW1CA@  ,  |1J/DpD/DpD@@A\1HA@  ,  l1O/DNDj/DNDo@@Aa1MA@  ,  \1T/D-DI/D-DM@@Af1RA@  ,  L1Y/CD/CD@@Ak1WA@  ,  <1^/CC/CC@@Ap1\ A@  ,  1c/CC@@@t1`$A@  ,  1g/EE/EE@@A1"#`/EcEc@#buf?#`@/EcE~@@1v;#chr@#]@/EcE/EcE@@1}<1x@B@@AA@@B@&&B@@A&C@@B@B@  ,  1/EE@@A 1
B@  ,  1/EcE@@@$1B@  ,  1/FjFn/FjF@&?@@Q@<]R@<AB1T#s/FF@#bufC#s@/FF;@@1>#strD#p@/FF</FF?@@1?!iE@@Q@<UQ@<XQ@<0@/FBFD@@1@1@B@@AC@@A@@AB@#B@@A@D@  ,  1ư0FjF6@&\@@S@<BS@<ZT@<T#B71D@  ,  p1C@&A91D@  ,  @1@(@:1а@@A@B@B@  ,   1ڰ0 ~^q^v6@@5A1#"0'NN=@#buf
#"@B0,NN$@@1#fmt#@02NN%03NN(@@1'fmtiter@#&!a @W!b @W!c @W!d @W!e @W!f @W@@ @W@1e@@ @W#:@@ @W~@ @W}@ @W@0eN+N50fN+N<@@2#2@DB@@A?A@@:C@@AB@$K@@A$$N@@&#F@@AB$L@@#P@@%G@@ABC%CJ@@%H@@A%I@@B$O@@&C@@A&D@@&ME@@AB#Q@@/'B@@A$UM@@BCDE@C@  ,  2L0N+N-@@@q2I+)@B&@B@  ,  t2R0FUU0FUV@@	%CamlinternalFormat.bprint_fmt.fmtiterAh
T  8 @@@A@@@A@E0|^V^o@@@@2ghV  8 @@@A@@@A@J@@@@2kgX  8 @@@A@@@A@N	@@@@2ofZ  8 @@@A@@@A@R
@@@@2se\  8 @@@A@@@A@V@@@@2wd^  8 @@@A@@@A@Z@@@@2{#fmt0##@@ @W#@@ @W$@@ @W%@@ @W&@@ @W'@@ @W@@ @W@0NN0NN@@2(ign_flag1@@ @X@0NN0NN@@2*$Custom_'aI_  8 @@@A@@@A@2@@@2*$Custom_'xJ_  8 @@@A@@@A@2@@@2%arityK/,custom_arity@@ @[D@@ @[EG@@ @[F@@ @[C@1AU5UC1AU5UH@@2$restL/#fmt@@ @[KV@@ @[LU@@ @[MT@@ @[NS@@ @[OR@@ @[P@@ @[J@17AU5UM18AU5UQ@@22@CD@@AB@@BXA@@-C@@AC@%K@@A$N@@&F@@A%]L@@BC$P@@&G@@A&J@@&H@@ABD&}I@@$O@@A2R@@'C@@A'D@@BC'"E@@$Q@@A/B@@%+M@@ABDE@2@@@AD@  ,  @3$1jDUU1kDUU@'@@`@da@dؐB٠"_i1@@`@ds@1{BUVU\1|EUU@@3934@E@@AE@E@ABDCCAF@  ,  (3A1CUU1CUU@'@@a@db@dB3FF@  ,  3M1CUU1CUU@'@@a@db@dB)3RF@  ,  3Y1DUU@@A-3V"F@  ,  3]1BUVUj1BUVU@2-@@`@dra@djA3brE@  ,  3i41FUV@@A3fvD@  ,  3m1n\o\u1n\o\@@A1$Ignored_param_'yu_  8 @@@A@@@A@3x@@@3zɱ1$Ignored_param_'xv_  8 @@@A@@@A@3|@@@3~ʠ#ignw0'ignored@@ @]@@ @]@@ @]@@ @]#@@ @]$@@ @]@@ @]@1l[\1l[\@@3$restxӠ@@ @]Ġ'@@ @]Š&@@ @]Ơ @@ @]Ǡ$@@ @]Ƞ#@@ @]@@ @]@2l[\2	l[\@@34$Param_format_EBB_'x`  8 @@@A@@@A@3@@@3$fmt'1U@@@ @jT@@ @j@ @jS@@ @jR@@ @jQ@@ @jP@@ @jO@@ @j@@ @j @24m\"\=25m\"\A@@33@
E@@A@0F@@AB}D@@@ZC@@ABC F@  ,  4 2Fm\"\D2Gm\"\k@0@@ @i`@i@@ @i`@i@@ @i`@i@@ @i`@i@@ @i`@i@@ @i`@i@@ @i֐B4'@5@6@AB54C2D@  ,  422xm\"\(2yn\o\@@A40	D@  ,  l472}j[[2~j[[@(@@_@i`@i{B#$28s_  8 @@@A@@@A@4F@@@4HǠ$resttw
@@ @]@@ @]@@ @]@@ @]@@ @]@@ @]@@ @]@2h[f[{2h[f[@@4k@  8 @@@A@q@@ @]&@@ @]@ @]@@A_4v@@@4x@A4s@@A@5C@@AB]C@  ,  P42i[[2i[[@).@@_@ij`@ib3BH4C@  ,  842i[[2i[[@);@@_@iQ`@iI@BU,4C@  ,  (4
2j[[@@FAZ14$C@  ,  42f[[2f[[J@)M@@_@i`@hRBR#$27p_  8 @@@A@@@A@4@@@4Š'counterq(@@ @]L@2dZZ2dZZ@@4$restr@@ @]N>@@ @]O=@@ @]P<@@ @]Q;@@ @]R:@@ @]S@@ @]M@3dZZ3 dZZ@@4 @Z  8 @@@A@1@@ @]K&@@ @]J@ @]I@@A_4@@@4@A4@?D@@A@B@7C@@ACD@  ,  439f[[1U@)@@a@ha@ib@iAV"4D@  ,  53GeZZ3HeZ[@)@@_@h`@hBc/5"D@  ,  53TeZZ3UeZZ@)@@_@h`@hBp<5/D@  ,  5
3ag[L[e@@AuA54D@  ,  5 3fbZPZt3gbZPZ@)@@_@h`@hԐBձ#$26l_  8 @@@A@@@A@51@@@53à)width_optmU@@ @]@3`YY3`YY@@5=(char_setnS@@ @]@3`YY3`YZ@@5G$restov!@@ @]@@ @]@@ @]@@ @]@@ @]@@ @]@@ @]@3`YZ3`YZ
@@5j@  8 @@@A@@@ @]&@@ @]@ @]@@A_5u@@@5w@A5r@?D@@A@B@7C@@ME@@ABC`E@  ,  x53bZPZV3bZPZr@*1@@_@hq`@ha6Bb#5E@  ,  `53aZZ.3aZZN@*>@@_@hN`@hFCBo05#E@  ,  H53aZZ3aZZ,@*K@@_@h5`@h-PB|=50E@  ,  85
3cZZ@@VAB55E@  ,  53IVgVm3IVgV@*]@@_@e5`@e-bBc"$9M_  8 @@@A@@@A@5@@@5#$10N_  8 @@@A@@@A@5@@@5#$11O_  8 @@@A@@@A@5@@@5$restP@@ @[M@@ @[L@@ @[@@ @[K@@ @[J@@ @[@@ @[@4/GVV40GVV"@@5@j  8 @@@A@8@@ @['@@ @[@ @[@@A_5@@@5@h  8 @@@A@@z@@ @[@@ @[@ @[+@@ @[@ @[@@A_6	@@@6@AB6@FC@@ABC@  ,   64WHV&VE4XHV&Ve@*@@_@e`@eŐBc/6C@  ,   64dHV&V,4eHV&VC@*@@_@e`@dҐBp<6$C@  ,   6+
4qIVgV@@AuA6)#C@  ,   604vz^8^>4wz^8^S@@Aݱ3$Formatting_gen_'e1{_  8 @@@A@@@A@69@@@6;˱3$Formatting_gen_'f1|_  8 @@@A@@@A@6=@@@6?̠*fmting_gen}3Q.formatting_gen@@ @^/@@ @^0@@ @^1@@ @^2#@@ @^3$@@ @^4@@ @^.@4s]].4s]]8@@6e$rest~@@ @^6@@ @^7@@ @^8 @@ @^9@@ @^:@@ @^;@@ @^5@4s]]:4s]]>@@6	6@@MD@@AB@)C@@ACnD@  ,   64x]^4x]^,@+A@@_@l`@k[`@kFBj#str@@ @k@4w]]4w]]@@66@E@@A$B@"@F@@ABCF@  ,   x64x]]4x]^@+b@@a@k|b@ktgB!6F@  ,   d6.@@kA$6F@  ,   <6°5v]]5	v]]@0qB#str+@@ @j@5u]e]5u]e]@@6
6Ͱ@E@@ANB@L@F@@ABCF@  ,   $6ݰ5#v]]5$v]]@+@@a@kKb@kCB 6F@  ,   6&@@A#6F@  ,   652t]C]I53z^8^T@@A6hD@  ,   657q\\58q\\@+@@_@ji`@jTB*fmting_lity)@@ @]@5Ip\\5Jp\\@@7$restz6@@ @]@@ @]@@ @]@@ @]@@ @]@@ @]@@ @]@5kp\\5lp\\@@7)7$@2@1D@@AB3@)C@@AC2D@  ,   725xq\\A@5@@a@jUa@jfb@jaAB78D@  ,   7?N5r\]@@AF7<D@  ,   x7C5@UU5@UU@+@@_@d1`@d)B"$6E_  8 @@@A@@@A@7T@@@7V"$7F_  8 @@@A@@@A@7X@@@7Z"$8G_  8 @@@A@@@A@7\@@@7^$restH
@@ @[@@ @[@@ @[
@@ @[@@ @[@@ @[@@ @[
@5>TT5>TT@@7@   8 @@@A@@!@@ @[@@ @[@ @[,@@ @[@ @[@@A_7@@@7@*  8 @@@A@@ @[@@A_7@@@7@,  8 @@@A@@ @[	@@A_7@@@7@ABC7*@HC@@ABC@  ,   `75?TT5?TU @,W@@_@d`@d\Be07C@  ,   H75?TT5?TT@,d@@_@c`@ciBr=7C@  ,   87°
6@UU4@@oAwB7#C@  ,   7ǰ6
=TzT6=TzT@,v@@_@c`@c{B}"$2@_  8 @@@A@@@A@7@@@7"$3A_  8 @@@A@@@A@7@@@7"$4B_  8 @@@A@@@A@7@@@7"$5C_  8 @@@A@@@A@7@@@7$restD
@@ @Z͠@@ @ZΠ@@ @ZϠk@@ @ZРj@@ @ZѠi@@ @Z@@ @Z@6N;T%T16O;T%T5@@8@  8 @@@A@@!@@ @Z@@@@ @Z%@@ @Z@ @Z@ @Z@	4@@ @Z@ @Z@ @Z@@A_8#@@@8%@2  8 @@@A@@ @Z@@A_8*@@@8,@4  8 @@@A@@ @Z@@A_81@@@83@ABC8.:@PC@@AB9C@  ,   896<T9TX6<T9Tx@,@@_@c`@cBr88?C@  ,   8F6<T9T?6<T9TV@,@@_@c`@cBE8LC@  ,   8S
6=TzT@@ AJ8Q#C@  ,   8X6]YqY6]YqY@-@@_@g`@gB0$Format_subst_'d`_  8 @@@A@@@A@8q@@@8s0$Format_subst_'aa_  8 @@@A@@@A@8u@@@8w#$19b_  8 @@@A@@@A@8y@@@8{#$20c_  8 @@@A@@@A@8}@@@8#$21d_  8 @@@A@@@A@8@@@8#$22e_  8 @@@A@@@A@8@@@8#$23f_  8 @@@A@@@A@8@@@8#$24g_  8 @@@A@@@A@8@@@8#$25h_  8 @@@A@@@A@8@@@8'pad_opti@@ @\@6ZXX6ZXX@@8%fmttyj5)fmtty_rel1@@ @\ˠ2@@ @\̠3@@ @\͠4@@ @\Π5@@ @\Ϡ6@@ @\Р7@@ @\ѠA@@ @\Ҡ@@@ @\Ӡ?@@ @\Ԡh@@ @\ՠi@@ @\@@ @\@7$ZXX7%ZXX@@8$restk@@ @\ؠe@@ @\٠d@@ @\ڠ @@ @\۠b@@ @\ܠa@@ @\@@ @\@7FZXX7GZXX@@9@  8 @@@A@6h@@ @\àg@@ @\Ġf@@ @\Še@@ @\Ơd@@ @\Ǡc@@ @\@@ @\b@@ @\@ @\@@A_9'@@@9)@A9$@2@D@@AB3@E@@APC@@BC4E@  ,   947z]YqY7{]YqY@-@@_@g`@gB;9:E@  ,   9A7]YqYw7]YqY@-@@_@g`@gBH9G#E@  ,   h9N7\Y6YX7\Y6Yo@-@@_@g`@gBU9T0E@  ,   P9[7\Y6Y<7\Y6YV@.
@@_@gw`@ggBb9a=E@  ,   89h7[XY7[XY4@.@@_@gT`@gLBo9nJE@  ,    9u7[XX7[XY@.$@@_@g;`@g3)B|9{WE@  ,   9
7^YY@@/A"9\E@  ,   97XX^X7XX^X@.6@@_@f`@f;BB#$12V_  8 @@@A@@@A@9@@@9#$13W_  8 @@@A@@@A@9@@@9#$14X_  8 @@@A@@@A@9@@@9#$15Y_  8 @@@A@@@A@9@@@9#$16Z_  8 @@@A@@@A@9@@@9#$17[_  8 @@@A@@@A@9@@@9#$18\_  8 @@@A@@@A@9@@@9'pad_opt]@@ @\q@8UWW8UWW@@9%fmtty^/@@ @\s0@@ @\t1@@ @\u2@@ @\v3@@ @\w4@@ @\x@@ @\r@8,UWW8-UWW@@9$rest_?@@ @\zn@@ @\{m@@ @\|l@@ @\}k@@ @\~j@@ @\@@ @\y@8OUWW8PUWW@@:
@  8 @@@A@7!N@@ @\kM@@ @\lL@@ @\mK@@ @\nJ@@ @\oI@@ @\p@@ @\j>@@ @\i@ @\h@@A_:0@@@:2@A:-@;@uD@@AB<@E@@AQC@@BC=E@  ,   :=8XX^X|8XX^X@.@@_@f`@fB;:CE@  ,   :J8XX^Xd8XX^Xz@.@@_@f`@fBH:P#E@  ,   :W8WX#XE8WX#X\@/@@_@f`@fBU:]0E@  ,   |:d8WX#X)8WX#XC@/@@_@fs`@fcBb:j=E@  ,   d:q8VWX8VWX!@/ @@_@fP`@fH%Bo:wJE@  ,   L:~8VWW8VWW@/-@@_@f7`@f/2B|:WE@  ,   <:
8YXX@@8A:\E@  ,   :8RWvW|8RWvW@/?@@_@e`@eDBB#chrT	@@ @\$@8QWTWh8QWTWk@@:$restU֠+@@ @\&*@@ @\')@@ @\((@@ @\)'@@ @\*&@@ @\+@@ @\%@9QWTWm9QWTWq@@::İ@2D@@A@B@)C@@ACD@  ,   :ҰB9SWW@@A::D@  ,   :ְ9OWW9OWW5@/@@_@e`@eB#strR@@ @[@9/NVW90NVW@@:$restSq@@ @[p@@ @[o@@ @[n@@ @[m@@ @[l@@ @[@@ @[@9QNVW	9RNVW
@@;;
@&C@@3D@@ABCD@  ,   ;A9]PW7WS@@A9;
D@  ,   ;9aKVV9bKVV@/@@_@ew`@eoϐB̠$restQU@@ @[@@ @[@@ @[@@ @[@@ @[ @@ @[@@ @[@9JVV9JVV@@;H;CO@&C@@ABN,C@  ,   |;N39LVV@@A+;KC@  ,   X;R99SS99ST	@0@@_@cI`@cA	B	($Bool_'a=_  8 @@@A@@@A@;a@@@;c#pad>8u@@ @Z@@@ @Z@@ @Z@ @Z@@ @Z@97SyS97SyS@@;{$rest?@@ @Z@@ @Z@@ @Z@@ @Z@@ @Z@@ @Z@@ @Z@97SyS97SyS@@;;%@?D@@A(C@@BCD@  ,   @;99SS99SS@0T@@_@c0`@c$	YBS;D@  ,   (;98SS98SS@0`@@_@c`@c		eB_;D@  ,   ;:8SS:8SS@0l@@_@b`@b	qBk;*D@  ,    ;ɰ::TT$@@	vAo;.D@  ,   ;Ͱ:.RR:.RRI@0|@@_@a`@a	E	)$Float_'y3_  8 @@@A@@@A@;@@@;)$Float_'a4_  8 @@@A@@@A@;@@@;%fconv58*float_conv@@ @Y@:3-QQ:4-QR@@;#pad69	u@@ @YԠ!@@ @Y@@ @Y@:F-QR:G-QR@@<$prec78@@ @Yנ@@@ @Y5@@ @Y@ @Y@@ @Y@:^-QR:_-QR@@<$rest8	K@@ @Yܠ	@@ @Yݠ	@@ @Yޠ	@@ @Yߠ	@@ @Y	@@ @Y@@ @Y@:-QR:-QR@@<><9@^F@@A	I@B	H@UE@@ACD@@-C@@ABC	K	)F@  ,   <K~:/RKRd@@	Av<HF@  ,   h<O:+QQ:+QQ@0@@_@a[`@aA
F
)$Int64_'y-_  8 @@@A@@@A@<a@@@<c)$Int64_'a._  8 @@@A@@@A@<e@@@<g%iconv/0@@ @Y@:*QtQ:*QtQ@@<qߠ#pad09	@@ @Y@@ @Y@@ @Y@:*QtQ:*QtQ@@<$prec19q@@ @Y@@@ @Y3@@ @Y@ @Y@@ @Y@:*QtQ:*QtQ@@<$rest2	ˠ@@ @Y
@@ @Y
@@ @Y
@@ @Y
@@ @Y
@@ @Y@@ @Y@; *QtQ;*QtQ@@<<@	@\F@@AB	@UE@@ACD@@-C@@ABC		F@  ,   ,<˰|;,QQ@@
xAt<F@  ,   <ϰ;(Q!Q';(Q!QX@1~@@_@``@`
F
-$Nativeint_'y'_  8 @@@A@@@A@<@@@<-$Nativeint_'a(_  8 @@@A@@@A@<@@@<%iconv)1,@@ @YJ@;3'PQ;4'PQ@@<۠#pad*:
u@@ @YL@@ @YM@@ @YK@;F'PQ
;G'PQ@@=ܠ$prec+9@@ @YO@)@@ @YR3@@ @YQ@ @YP@@ @YN@;^'PQ;_'PQ@@=ݠ$rest,
K@@ @YT
@@ @YU
@@ @YV
@@ @YW
@@ @YX
@@ @YY@@ @YS@;'PQ;'PQ@@=>=9@
G@\F@@AB
H@UE@@ACD@@-C@@ABC
K
)F@  ,   =K|;)QZQs@@
At=HF@  ,   =O;%PP;%PP@1@@_@`{`@`aF)$Int32_'y!_  8 @@@A@@@A@=a@@@=c)$Int32_'a"_  8 @@@A@@@A@=e@@@=g%iconv#1@@ @Y@;$PzP;$PzP@@=qנ#pad$:
@@ @Y@@ @Y	@@ @Y@;$PzP;$PzP@@=ؠ$prec%:q@@ @Y@Q@@ @Y3@@ @Y
@ @Y@@ @Y
@;$PzP;$PzP@@=٠$rest&
ˠ@@ @Y@@ @Y@@ @Y@@ @Y@@ @Y@@ @Y@@ @Y@< $PzP<$PzP@@==@
@\F@@AB
@UE@@ACD@@-C@@ABC

F@  ,   D=˰|<&PP@@xAt=F@  ,   =ϰ<"P.P4<"P.P^@2~@@_@``@_E'$Int_'y_  8 @@@A@@@A@=@@@='$Int_'a_  8 @@@A@@@A@=@@@=%iconv2,@@ @X@<3!PP<4!PP@@=Ӡ#pad;u@@ @XĠ@@ @X@@ @X@<F!PP<G!PP@@>Ԡ$prec:@@ @XǠ@y@@ @X3@@ @X@ @X@@ @X@<^!PP<_!PP#@@>ՠ$rest K@@ @X̠@@ @X͠@@ @XΠ@@ @XϠ@@ @XР@@ @X@@ @X@<!PP%<!PP)@@>>>9@G@\F@@ABH@UE@@ACD@@-C@@ABCK)F@  ,   >K|<#P`Py@@At>HF@  ,   >O<OO<OO@2@@_@_`@_B/$Caml_string_'a_  8 @@@A@@@A@>^@@@>`#pad;r@@ @X@!@@ @X@@ @X@ @X@@ @X@<OTOg<OTOj@@>xѠ$rest@@ @X@@ @X@@ @X@@ @X@@ @X@@ @X@@ @X@<OTOl<OTOp@@>>
"@?D@@A(C@@BCD@  ,   ><OO<OO@3Q@@_@_`@_VBS>D@  ,   p><OuO<OuO@3]@@_@_l`@_dbB_>D@  ,   X>= OuO{=OuO@3i@@_@_S`@_KnBk>*D@  ,   H>ư=OP@@sAo>.D@  ,   >ʰ=OO!=OO8@3y@@_@_`@_	~B}*$String_'a_  8 @@@A@@@A@>@@@>#pad;_@@ @XG@@@ @XJ@@ @XI@ @XH@@ @XF@=5NN=6NN@@>Ϡ$rest"@@ @XLv@@ @XMu@@ @XNt@@ @XOs@@ @XPr@@ @XQ@@ @XK@=WNN=XNN@@??
@?D@@A(C@@BCD@  ,   ?=cOO	=dOO@3@@_@^`@^ѐBS?"D@  ,   ?)=oNN=pNO@3@@_@^`@^ݐB_?.D@  ,   ?5={NN=|NN@3@@_@^`@^Bk?:*D@  ,   ?A=O:OS@@Ao?>.D@  ,   ?E=6SFSL=6SFSc@3@@_@b`@bB"$1;_  8 @@@A@@@A@?T@@@?V$rest<
@@ @ZL@@ @ZM@@ @ZN@@ @ZO@@ @ZP@@ @ZQ@@ @ZK@=4RR=4RS@@?y@  8 @@@A@@@ @ZJ&@@ @ZI@ @ZH@@A_?@@@?@A?@4C@@ABjC@  ,   ?=5SS$=5SSD@4;@@_@b`@b
@BG?C@  ,   h?=5SS=5SS"@4H@@_@b`@b|
MBT+?C@  ,   X?
=6SFSx@@
SAY0?#C@  ,   4?=3RR=3RR@4Z@@_@bB`@b:
_B
^"$09_  8 @@@A@@@A@?@@@?$rest:
@@ @Z
@@@ @Z
?@@ @Z
>@@ @Z
=@@ @Z
<@@ @Z@@ @Z@>!1RfRq>"1RfRu@@?@
\  8 @@@A@@@ @Z&@@ @Z@ @Z@@A_?@@@?@A?t@4C@@ABC@  ,   ?>82RyR>92RyR@4@@_@b)`@b!
BG?C@  ,   ?>E2RyR>F2RyR@4@@_@b`@b
BT+@C@  ,   @
>R3RR@@
AY0@
#C@  ,   @>W|^V^m
@@
A
@
}  8 @@@A
@@ @^d@@A_@@@@@@
  8 @@@A
@@ @^e@@A_@ @@@@"@AB@
)@B
&
B@  ,   d@&>lNN
@@
@
@#B@  ,   H@*>p^^>q^^@4@@Q@x>R@x6!B?1L>~^^!@#fmt1L@!>^^@@@@#buf5@@ @xR@x@>^^>^^@@@L@G@B@@AA@@B@1D@@A4C@@53B@@AB@B@  ,   8@Y/!@@!A&@UBA  ,   4@^>^^>^^@A!A-@]@@A@A
  ,   $@g>^^!@@!@4@dA@  ,    @k>    !@#exnG@@e@ e@ !A@F.;U  8 @@@A@@@A@!@@@@ʱ.9W  8 @@@A@@@A@.!@@@@@˱.8Y  8 @@@A@@@A@.!@@@@@̱.7[  8 @@@A@@@A@."!@@@@@ͱ.6]  8 @@@A@@@A@.&!@@@@@α.5_  8 @@@A@@@A@.*!@@@@@ϱ.ca  8 @@@A@@@A@.."@@@@@б.bc  8 @@@A@@@A@.2"@@@@@Ѡ#pad>.u@@ @ @@ @ @@ @ @>    >    @@@Ҡ%fmtty?.y>@@ @ @@@ @ A@@ @ B@@ @  C@@ @ !D@@ @ "@@ @ @?    ?     @@@@ذ@,A@@CB@@AB@.B@@A@B@  ,   @{@"MAp@	B@  ,   @?.  f  ?/  f  @A"RA@@@@@  ,   @?3  f  ?4  f  @A"WA@@@@@  ,    @
@"YA"$0d  8 @@@A@@@A@@@@@@ֱ"$1d  8 @@@A@@@A@@@@@@٠%padty4@@ @ @?K  f  v?L  f  {@@A	ݠ$restl@@ @ %T@@ @ &S@@ @ 'R@@ @ (Q@@ @ )P@@ @ *@@ d +@@ @ $@?w  f  ?x  f  @@A5@z  8 @@@A@>S@@ @ 0@@ @ @ @ @@AdAA@@@AC@A  8 @@@A@@@ @ V@@ @ @ @ @@AdAM@@@AO@  8 @@@A@@ @ @@AdAT@@@AV@ABAQ@z@Ax@]D@@ATC@@BC{@D@  ,   A_?    6?    e@A"A@A]A\@@  ,   Ad?    I?    ^@A"A@AbAa@@  ,   Ai
@"A%padty50@@ @ @?    &?    +@@Av۠!w>@@ @ @?    -?    .@@A@  8 @@@A@@ @ @@AdA@@@A@AA@@A@!D@@AC@@BC@D@  ,   dA?    ?    @A"A@AA@@  ,   TA@"A @  8 @@@A@@ @ g@@AdA@@@A@AAB@  ,   <A?    #	@@#@+AB@  ,   ,A?    #@8@@g@ g@ #AA/U  8 @@@A@@@A@#(@@@A/W  8 @@@A@@@A@.#+@@@@A/Y  8 @@@A@@@A@/#/@@@@A/[  8 @@@A@@@A@/#3@@@@A/]  8 @@@A@@@A@/
#7@@@@A/_  8 @@@A@@@A@/#;@@@@A/Ta  8 @@@A@@@A@/#?@@@@A/Sc  8 @@@A@@@A@/#C@@@@A/Je  8 @@@A@@@A@/#G@@@@A#pad@2/j@@ @ @@ @ @@ @ @@2    !@3    $@@A$prec@G/n'@@ @ (@@ @ @@ @ @@G    %@H    )@@B%fmtty@\/vW@@ @ @Y@@ @ AZ@@ @ B[@@ @ C\@@ @ D]@@ @ E@@ @ ?@@p    *@q    /@@B.6$Padding_fmtty_EBB_'y3f  8 @@@A@@@A@B0@@@B2B-@'*match*D@@A5A@@B`C@@MB@@AC@0 B@@A0C@@B@D@  ,   (BC@#AB>D@  ,    BE@    @    &@A#A@BCBB@@  ,   BJ@    @    @A#A@BHBG@@  ,   BO
@#A6$Padding_fmtty_EBB_'y1f  8 @@@A@@@A@BV@@@BX!p?L@@ @ &@@    @    @@Bb#pad=3\@@ @ K@@ @ L@@ @ J@@    @    @@Bu	$rest=2@@ @ Nn@@ @ Om@@ @ Pl@@ @ Qk@@ @ Rj@@ @ S@@ @ M@@    @    @@B
@  8 @@@A@@ @ %@@AfB@@@B@ABlh@KG@@ABBFk@j@3E@@ABCk@G@  ,   B@    @    @A$A@BB@@  ,   B@$A5$Padding_fmtty_EBB_'yf  8 @@@A@@@A@B@@@B#pad=@@ @ @@ @ @@ @ @A  [  A
  [  @@B$rest=@@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @A.  [  A/  [  @@B@  8 @@@A@@ @ @@AfB@@@B@AB?F@@0E@@ABC@F@  ,   BAB  b  fAC  b  @A$kA@BB@@  ,   C@$mA["$0f  8 @@@A@@@A@C	@@@C6$Padding_fmtty_EBB_'y2f  8 @@@A@@@A@C
@@@C"$1f  8 @@@A@@@A@C@@@C#pad=
@@ @ @@ @ @@ @ @Ah  '  MAi  '  P@@C&$rest
 @@ @  @@ @ @@ @ @@ @ @@ @ @@ @  @@ f @@ @ @A  '  YA  '  ]@@CR@Z  8 @@@A@@@ @ V@@ @ @ @ @@AfC]@@@C_ @  8 @@@Af@@ @ @@AfCd@@@Cf@H  8 @@@A@0@@ @ B@@ @ @ @ @@AfCp@@@Cr@ABCCm@vEC@A@@BgGA@@@XF@@ABCA@G@  ,   CA    ?A    U@1#}@@ @ f@ b~@@ @ f@ c@@ @ f@ d@@ @ f@ e@@ @ f@ f@@ @ f@ g@@ @ u%B C@v@AutBr@C@  ,   CA    3% @@%@CC@  ,   CA     %)@!.Y}a@@k@ ^k@ ^l@ ^o.^~c@@k@ ^k@ ^l@ ^p.ce@@k@ ^k@ ^l@ ^q.hg@@k@ ^k@ ^l@ ^r.mi@@k@ ^k@ ^l@ ^s.rk@@k@ ^k@ ^l@ ^t@@l@ ^%hACԱ.wU  8 @@@A@@@A@%{@@@D		.xW  8 @@@A@@@A@.{%~@@@@D

.yY  8 @@@A@@@A@.%@@@@D.z[  8 @@@A@@@A@.%@@@@D.{]  8 @@@A@@@A@.%@@@@D
.|_  8 @@@A@@@A@.%@@@@D[  8 @@@A@@@A@.%@@@@D T  8 @@@A@@@A@.%@@@@D#M  8 @@@A@@@A@.%@@@@D&F  8 @@@A@@@A@.%@@@@D)?  8 @@@A@@@A@.%@@@@D,8  8 @@@A@@@A@.%@@@@D/#fmtB.3@@ @ ]Ӡ5@@ @ ]Ԡ6@@ @ ]ՠ7@@ @ ]֠8@@ @ ]נ9@@ @ ]@@ @ ]@B    B    @@DX%fmttyB.\@@ @ ^^@@ @ ^_@@ @ ^`@@ @ ^a@@ @ ^b@@ @ ^ @@ @ ^!@@ @ ^"@@ @ ^#@@ @ ^$@@ @ ^%@@ @ ^&@@ @ ^@B    B     @@DD@tB@@ALA@@B@5sB@@A1C@@B@B@  ,   DB     !B     -@ߠ֠͠^@@l@ ^l@ ^v_@@l@ ^l@ ^w`@@l@ ^l@ ^xa@@l@ ^l@ ^yb@@l@ ^l@ ^zc@@l@ ^l@ ^{@@m@ ^m@ ^m@ ^&PADAB@  ,   DC(     &V@@&U@DEB@  ,   DC,B    &_@@&^AD/]C9&    &l@%padty/]@&qC>&    @@D%width/Z@CD&    CE&    @@E#str/W@CK&    CL&    @@E	#len@@ @ `T@ `@CW'     CX'     	@@E%width9@@ @ `T@ `@Cd(  !  'Ce(  !  ,@@E"%padty/T@ `@Cl(  !  .Cm(  !  3@@E*#resCa@@ @ `T@ `@Cx5  u  }Cy5  u  ր@@E6!9 :E3@4D@@AG"ENC@@I@@ABDA@@H5!FRB@@AC@@I@  ,   EOC@  ؘ  ؞C@  ؘ  @: @@S@ dT@ a5T@ d&АEs'F&9EX%I@  ,   \E_@&Aw+J*=E\)I@  ,   TEcC>  Q  WC>  Q  ؈@T@ d&ߐE6U5HEg4I@  ,    EnC=  2  8C=  2  O@:@@U@ cV@ c&CDcCVEuBI@  ,   E|C=  2  H@:@@W@ cW@ cX@ c&BSrReEQI@  ,   E'@@'AXwWjEVI@  ,   EC<     C<    '@$charB@@X@ c'BgfyEeI@  ,   EC<    C<    @@@X@ c'BsrEqI@  ,   EC<    C<    @@@W@ cN'(B~E}I@  ,   lEC<    C<    .@@'0AEI@  ,   dED;  ש  ׯD;  ש  @oT@ b':EEI@  ,   EɰD:  ׊  אD:  ׊  ק@:x@@U@ bV@ bf'HCEI@  ,    EװD:  ׊  נ@:m@@W@ bgW@ bX@ b}'WBEI@  ,   E'@@']AEI@  ,   ED19  9  xD29  9  @[@@X@ b?'hBEI@  ,   ED=9  9  gD>9  9  n@g@@X@ b'tBEI@  ,   FDI9  9  VDJ9  9  ]@s@@W@ a'B#FI@  ,   |FDU9  9  JDV9  9  ׆@@'A*FI@  ,   tFD\8    D]8    8@T@ ah'E5FI@  ,   0F!@'A9FI@  ,   (F%Dk7    Dl7    @'EBF'I@  ,   F.	@'AFF+I@  ,   F2Dx6  ּ  '@@'AL F1IA  ,   F:D5  u  փD5  u  ָ@A'BU
)	F;@BC@@H
  ,   FFD5  u  ִD5  u  ַ@@'A`4'FFH@  ,   FMD5  u  ֫D5  u  ֮@@'Ag;.FMH@  ,   FTD5  u  y'@@'Am"A!4FSH@  ,   FZD4  U  lD4  U  o@@'At)H(;FZH@  ,   FaD4  U  W'@@'Az/N.AF`%H@  ,   tFgD)  6  :D)  6  C@Q'AFg40@B*@$@AC@@E@  ,   \FrD3  ,  LD3  ,  Q@@'AFp=6@B3	C@@D@  ,   PFzD3  ,  BD3  ,  F@@'AFxD@  ,   DFD(  !  #'@@'AF|D@  ,   4FD'     '@@'@F@F@ACB@@C@  ,   FDX    (	@@(AFa0אDE  >  >(@$prec0@(DE  >  X@@F #str0@DE  >  YDE  >  \@@F!$prec@@ @ dT@ d@DF  _  eDF  _  i@@F"#len@@ @ dT@ d@DG  x  ~DG  x  ف@@F#F@!cE@@AD@@B!C0B@@,A@@AC@@E@  ,   FȰEU    EU    @;w@@S@ hT@ hg(MEG#resE
@@ @ h<T@ h,@E!T  ۞  ۦE"T  ۞  ۩@@F'Fڰ& @F@@A@BC@@F@  ,   FE,V    
@@(dAF	FA  ,   FE2T  ۞  ۬E3T  ۞  ۿ@A(kBdF7E  ,   FE9T  ۞  ۢ@@(qAiF<E@  ,   FE=S  b  ېE>S  b  ۚ@@(vAnFAE@  ,   xFEBL  "  &ECL  "  V@;@@S@ f[T@ f(E|Jw@@ @ eW@ e@ETI  ٮ  ٲEUI  ٮ  @@G$#resEI@@ @ eT@ e@E`J    EaJ    @@G%Ge_@F@@A^@BC@@F@  ,   (G%EkK    ElK     @;@@S@ eT@ e(C)G*F@  ,   G1EwM  X  v@@(A-G.FA  ,   G7E}J    E~J    @A(B4G6E  ,   G>EJ    @@(A9G;E@  ,   GBEI  ٮ  EI  ٮ  @@(A>G@E@  ,   GGEQ  
  EQ  
  A@;@@S@ h	T@ g(̐EƠ#resE@@ @ g=T@ g-@EO    EO    @@G^&GY@G@@A@#F@@ABC@@G@  ,   LGhEP    EP    @<@@S@ gT@ gr(C!GmG@  ,   <GtEP    @<
@@U@ gsU@ gV@ g(B.Gz!G@  ,   0GER  C  a@@(A2G~%GA  ,   ,GEO    EO    @A)BG@+BC@@F  ,   GEO    @@)AGF@  ,   GEN  w  ڳEN  w  ں@@@V@ g)BGF@  ,   GEN  w  ڢEN  w  ک@@@V@ f)"BGF@  ,   GEN  w  ڄEN  w  @@)(A G!F@  ,   GEH  ٙ  ١EH  ٙ  ٨@@@ @ e)1B*G@@AB@@D@  ,   GFH  ٙ  ٛ):@@)9A1GD@  ,   GFG  x  z)>@@)=A4G@@A@B@@CA  ,   GȰFF  _  lFF  _  t@A)GA>Gǰ@@A
@B@@B  ,   lGҰFF  _  a)Q@@)P@FGB@  ,   HGְF_    F_    
@<@@S@ i-T@ i)aEG2F,[  `  `)k@#str2@)pF1[  `  }@@G)#strE@@ @ hT@ h@F=\  ܀  ܆F>\  ܀  ܉@@G*!l @@ @ hT@ h@FI]  ܢ  ܨFJ]  ܢ  ܩ@@H+#resF>@@ @ hT@ h@FU^    FV^    @@H,H@C@@AD@@,B4A@@AB@@D@  ,   0HH)@@)A?HDA  ,   ,H#Fi^    Fj^    @A)BFH"@@A@B@@C  ,   H-Fs^    )@@)ANH*C@  ,    H1Fw]  ܢ  ܤ)@@)AQH.@@A@@BA  ,   H9F\  ܀  ܌F\  ܀  ܞ@A)AZH8@$@A@@A
  ,   HBF\  ܀  ܂)@@)@aH?A@  ,   HFFj  ދ  ޡ)@@)AH2^Fd  ݂  ݂)@HG@(A@@A@@AM  ,   HTFf    Ff    @@)AHRA  ,   HZFe  ݡ  ݷFe  ݡ  ݻ@@)AHXA
  ,   H`Fi  g  ޅFi  g  ފ@@)AH^A  ,   HfFi  g  tFi  g  x@@)A!HdA  ,   HlFh  C  aFh  C  f@@)A'Hj#A  ,   xHrFh  C  PFh  C  T@@)A-Hp)A%  ,   hHxFg    =Fg    B@@*A3Hv/A+  ,   XH~Fg    ,Fg    0@@*	A9H|5A1  ,   HHFf    Ff    @@*A?H;A7  ,   8HFf    Ff    @@*AEHAA=  ,   (HFe  ݡ  Fe  ݡ  @@*AKHGAC  ,   HFe  ݡ  Fe  ݡ  @@*!AQHMAI  ,   H*'A*$@THPAL  ,   HFr  ߽  *0@@*/AHu2Fl  ާ  ާ*4@H@)>A@@A@@AM  ,   HFn  	  Fn  	  $@@*>AHA  ,   HFm    Fm    @@*DAHA
  ,   HFq  ߗ  ߶G q  ߗ  ߼@@*JAHA  ,   |HGq  ߗ  ߤGq  ߗ  ߩ@@*PA!HA  ,   lHŰGp  q  ߐGp  q  ߖ@@*VA'H#A  ,   \H˰Gp  q  ~Gp  q  ߃@@*\A-H)A%  ,   LHѰGo  K  jGo  K  p@@*bA3H/A+  ,   <HװGo  K  XGo  K  ]@@*hA9H5A1  ,   ,HݰG#n  	  DG$n  	  J@@*nA?H;A7  ,   HG)n  	  1G*n  	  7@@*tAEHAA=  ,   HG/m    G0m    @@*zAKHGAC  ,   HG5m    G6m    @@*AQHMAI  ,   H*A*@THPAL  ,   HG>z    *@@*AH2搰GBt    *@H@)A@@A@@AM  ,   IGLv  <  RGMv  <  W@@*AIA  ,   IGRu    GSu    @@*AI
A
  ,   pIGXy    GYy    @@*AIA  ,   `IG^y    G_y    @@*A!IA  ,   PIGdx    Gex    @@*A'I#A  ,   @I$Gjx    Gkx    @@*A-I")A%  ,   0I*Gpw  ~  Gqw  ~  @@*A3I(/A+  ,    I0Gvw  ~  Gww  ~  @@*A9I.5A1  ,   I6G|v  <  wG}v  <  }@@*A?I4;A7  ,    I<Gv  <  dGv  <  j@@*AEI:AA=  ,   IBGu    5Gu    ;@@*AKI@GAC  ,   IHGu    "Gu    (@@*AQIFMAI  ,   IN*A*@TIIPAL  ,   IQG  #  9*@@*AI)3*G|  
  
*@IR@)A@@A@@AM  ,   tI_G~  o  G~  o  @@*AI]A  ,   dIeG}  -  CG}  -  H@@+AIcA
  ,   TIkG    G    "@@+AIiA  ,   DIqG    
G    @@+A!IoA  ,   4IwG    G    @@+A'Iu#A  ,   $I}G    G    @@+A-I{)A%  ,   IG    G    @@+ A3I/A+  ,   IG    G    @@+&A9I5A1  ,   IG~  o  G~  o  @@+,A?I;A7  ,   IG~  o  G~  o  @@+2AEIAA=  ,   IG}  -  hG}  -  n@@+8AKIGAC  ,   IG}  -  UG}  -  [@@+>AQIMAI  ,   xI+DA+A@TIPAL  ,   dIG    G    @>Y@@S@ kT@ k+SBI3{H    +^@%fconv3{@+cH    @@I2$prec3q@H    H
    @@I3$prec@@ @ jT@ j@H    H    @@I4$symb>@@ @ jT@ j@H$    H%    @@I5#buf>@@ @ kT@ k@H0    H1    @@I6I@E@@A7B@@B+C4A@@#D@@AC@<}G@@A>C@@>D@@AB>bE@@>B@@A>8F@@BC@E@  ,   TJHM  i  mHN  i  @>@@S@ kT@ k{+B]J#E@  ,   DJHY  i  @>@@U@ k|U@ kV@ k+AjJ0E@  ,   0J Hf  L  PHg  L  g@>@@S@ kjT@ ka+ɐBvJ%<E@  ,   J,Hr  +  /Hs  +  J@>@@S@ kPT@ kD+ՐBJ1HE@  ,   J8H~    H    )@>@@S@ k/T@ k&+BJ=TE@  ,   JD+@@+AJ@WEA  ,   JIH    H    
@A+AJH@]@A\YBW@D  ,   JSH    +@@+AJPDA  ,   JYH    H    @A+BJXk@Bf@C
  ,   JbH    ,@@,AJ_CA  ,   JhH    H    @A,AJgx@Bu@B
  ,   JqH    ,@@,@JnB@  ,   JuH    ,@@,AJQ4H    ,$@%iconv4@,)H    @@J8!s4@H    H    @@J9J@B@@AA@@B@@B@  ,   JH  l  pH  l  @@,:A"&digitsIh@@ @ llU@ k@H  #  +H  #  1@@J:#buf$,@@ @ lzU@ lp@H    H    @@J=#pos/#refI@@ @ lU@ l@@ @ lU@ l@I  ,  4I  ,  7@@J>#put@?]@@ @ lU@ l/@@ @ mU@ l@ @ lU@ l@I  C  KI  C  N@@J?$left*$@@ @ m@U@ m+@@ @ m0U@ m'@I/  u  }I0  u  @@JAJ@MD@@AZC@@Bf@G@@AGE@@B4F@@l@ACD@@G@  ,   LJIB    IIC    N@?@@U@ nXV@ nA,At!i*@@U@ mU@ mU@ m@IY    IZ  b  j@@KB!c@@ @ mY@ m@If    Ig    @@K$CK@7@J@@AB8@$H@@AC95@@ %K@@ABCD@@K@  ,   @K37@,A-K.K@  ,   4K5I{    >9@@,A1K2K@  ,   (K9I    )I    0@?@@W@ n	X@ n,A=K>K@  ,   KEI    (I    <@@,ABKC$K@  ,    KJI    N@@,AFKG(K@  ,   KNI  O  \I  O  a@TV@ nQ,AO!c=@@ @ m@I  O  WI  O  X@@K`DK[@s@L>@ABu=C;D@@L@  ,   Ki@-AKd	L@  ,   KkI    @@-AfKh~FB}D@@I@  ,   Kr_@@-AKnG@  ,   KuI  u  I  u  @A-A@KsKr@@  ,   dKzI  u  y@@-"AKw@@ABC@@F@  ,   `KI  C  OI  C  qAA	(CamlinternalFormat.transform_int_alt.putA@KK@@  ,   PKI  C  G@@-0AK@@A @BC@@E@  ,   LKI  ,  :I  ,  ?@A-9A@KK@@  ,   DKI  ,  0@@-=A K@@AC@@DA  ,   @KI    I    (@A-GA
K@@AB@@C  ,   KI    @@-PAKC@  ,   KI    I    @@-UA9!nJ@@ @ kV@ k@@ @ kV@ k@J  4  >J  4  ?@@K;K@8@AC@@9@AB@@C@  ,   KɰJ    J    @@-rA!i@@V@ lV@ lV@ l	@J  K  QJ    @@K<Kְ@%&F@@AD@@V@AB@V@!W'G@@ABC@@G@  ,   KJ/    J0    @@-A KG@  ,   KJ4  u  }@@-A$K@@Ag@B/.C@@E@  ,   \KI@@-AHK5C@  ,   XKJ?  4  BJ@  4  G@A-A@KK@@  ,   LKJD  #  'm@@-AKvB@  ,   <LJH    -@@-@KzB@  ,   LJL  C  SJM  C  g@@@@U@ mV@ lC|L@!cK@J]  C  P@@L@L@	A@@A@{B@@ApC@@B@A@  ,   L#@@@L
A@  ,   L&Jl    -@5T@ nU@ n-ِBL	5Jx    -@%iconv5@-J}    @@L:F!n5@J    J    @@LAGL<@B@@AA@@B@6_B@@A5C@@B@B@  ,   LLJ    J    .@A@@U@ nU@ nV@ n.A*LSC@  ,   LZJ    .	@@.@.LWB@  ,   L^J  N  h.@5T@ nU@ n.BLB5̐J  2  2.@%iconv5@.$J  2  I@@LrI!n5@J  2  JJ  2  K@@LyJLt@B@@AA@@B@6mB@@A6C@@B@B@  ,   LJ  N  vJ  N  @A@@U@ nU@ nV@ n.AA*LC@  ,   LJ  N  P.G@@.F@.LB@  ,   LJ    .Q@5T@ oCU@ o0.UBL{5搰J    .]@%iconv5@.bJ    @@LL!n5@J    J    @@LML@B@@AA@@B@6B@@A6WC@@B@B@  ,   LK    K    @B@@U@ o2U@ o@V@ o<.A*LC@  ,   tLʰK    .@@.@.LB@  ,   XLΰK    0.@5T@ oU@ ow.BL6 K     .@%iconv6 @.K%    @@LO!n5@K+    K,    @@LPL@B@@AA@@B@6B@@A6C@@B@B@  ,   PLK:    >K;    V@B2@@U@ oyU@ oV@ o.A*LC@  ,   @MKH    .@@.@.LB@  ,   ,MKL  |  .@5S@ q.ϐBL6KZ    .@%fconv6@.K_    @@MR$prec6@Ke    Kf    @@M#S!x6@Kl    Km    @@M*T#hex@Kk@@ @ oT@ oBB@@ @ oT@ o@ @ oT@ o@K    K    @@M?U1add_dot_if_needed@_@@ @ pT@ oT@ o@ @ oT@ o@K  x  ~K  x  @@MRW0caml_special_val@L*@@ @ pT@ pT@ p@ @ pT@ p@K    K    @@Md\M_@'h(G@@A,E@@F@@ABXC@@GD@@AVB@@QA@@ABC@78B@@A@G@  ,   $MxK  |  K  |  @C'@@U@ qU@ qV@ q/GBxM H@  ,   M@/JAzM"G@  ,   MK    K    @6uS@ q7U@ qHV@ qA/VAM/G@  ,   MK    
@@/[AM3G@  ,   MK  s  K  s  @K@@U@ qU@ q,V@ q%/iAMBG@  ,   MK  s  @@/nAMFG@  ,   MK  ]  lK  ]  r@@/sAMKG@  ,   MK    -K    D@6S@ qU@ qV@ q/A#strC_@@ @ q\U@ qL@L    L    @@M^Mİe^][@H@@A\@BCD[@H@  ,   MѰL     @@/AM
HA  ,   MװL    L    @A/BMwG  ,   MްL$    L%    @C@@V@ q^V@ q|W@ qr/BMH@  ,   ML2    ;@@/AMG@  ,   `ML6  F  H/@@/AM@BC@F@  ,   \ML=    L>  -  BAA	1CamlinternalFormat.convert_float.caml_special_valA@MM@@  ,   PMLC    /@@/AM@@ABC@E@  ,   LNLK  x  LL  S  |AA	2CamlinternalFormat.convert_float.add_dot_if_neededA@NN@@  ,   @NLQ  x  z/@@/AN@BC@D@  ,   <NLX    LY  R  tAA	$CamlinternalFormat.convert_float.hexA@NN@@  ,   $NL^    /@@/@N@@AB@C@  ,   NLe  R  V
@
C@$signBg@@ @ oV@ o@Lu    Lv    @@N3VN.@.A@@B@@AB@&B@@A!C@@D@@AB@B@  ,   NA"@,AN<B@  ,   NCL  "  :L  "  =@@1A"NA@(I-B@@A@B@B@  ,   NML    L    !@@;A,NK
B@  ,   NRL  >  KL  >  N@@@A1NPB@  ,   NWL    E@@D@5NT@&@A"@A@  ,   N]L  S  sX@@WAU#Y^@#str"@cL  x  @@NkX#len'K@@ @ pU@ o@L    L    @@NwY(is_valid@C1@@ @ peU@ p
M@@ @ p%U@ p@ @ pV@ p	@L    L    @@NZN@C@@A(B@@0A@@AB@@C@  ,   tNL  S  jL  S  m@@A;NC@  ,   lNL  S  ZL  S  d@BC@@T@ p~U@ pyAGNC@  ,   `NL  S  W@@AKNC@  ,   LNL    @@ANN@@A@B@@B@  ,   <NL    @@@TN@#@A@@A@  ,   0NL    +M     /@@	;CamlinternalFormat.convert_float.add_dot_if_needed.is_validA_!iC@M    M    @@N[N@(*B@@A
A@@B@bC@@jB@@AB@Z@@@AB@  ,   NӰM  0  ?M  0  O@@ANB@  ,   NذM    M    @	H@@ @ p6#B#N۰@@AA@  ,   NM*    @@*A)NA@  ,   tNM.    M/    @@/A.NA@  ,   `NM3    @@3@2NA@  ,   PNM7    "M8    ,@@A@#str@MA    @@N]N@))B@@AA@@B@B@@A@B@  ,   @OMN    MO    @@AO
B@  ,   $O
MS    @@AO
B@  ,   OMW    MX    @@A OB@  ,   OM\  -  =@@A$OB@  ,   OM`    Ma    @4'fpclass@@ @ p)A0O@#@A"@A@  ,   O(Mn    1@@0@6O%A@  ,   O,Mr  v  xMs  v  @C@@S@ rfT@ rT0EO8M    1	@!c8@1M    @@OD`#str&stringO@@ @ qT@ q@M    M    @@OSa!l(3@@ @ qT@ q@M  0  6M  0  7@@O_b#resM@@ @ rT@ r@M  O  UM  O  X@@OkcOf@1A@@AC@@D@@A0B@@BC@@D@  ,   OvJ1B@@1AAAOrDA  ,   O{M  O  [M  O  r@A1HBHOz@@AB@@C  ,   OM  O  Q1R@@1QAPOC@  ,   |OM  0  21V@@1UASO@@@AB@@BA  ,   xOM    M    ,@A1_A]O@*@A@@A
  ,   dOM    1h@@1g@dOA@  ,   TOM    M    2@DN@@S@ rT@ r1xBO8oM    1@%fmtty8o@1M    @@Oe#bufD@@ @ rT@ r@N     N    @@OfO@B@@AA@@B@AD@@AD+C@@DB@@AB@B@  ,   DOΰ/1@@1A&OBA  ,   @OӰN    N    @A1A-OҰ@@A@A
  ,   0OܰN"    1@@1@4OA@  ,   $ON&  1@@1@O5ԐN+  1@!x55@1N0  @@OO@06A@@B@@AB@@B@  ,   ON; ;w ;y1@@1AO4NB : :1@#fmt-44{4v4q4n4k@@ @ (@NP : ;NQ : ;
@@P#buf4@@ @ (U@ (@N\ ; ;N] ; ;@@P!k@LN^@@ @ (4@@ @ (@@ @ (U@ (@ @ (@ @ (U@ (@Nv ;3 ;9Nw ;3 ;:@@P4P/@*C@@A;B@@"D@@A0A@@BC@8B@@A4C@@B@D@  ,    PDN ;3 ;;N ;3 ;sAA	%CamlinternalFormat.failwith_message.kA@PCPB@@  ,   PJN ;3 ;52)@@2(ATPG@@AB@CA  ,   PSN ; ;N ; ;/@A22A^PR@"@A@B@B  ,   P]N ; ;2<@@2;AfPZBA  ,   Pc2BA2?@iP^@)@A'@A  ,   ߸PhN ;3 ;^$@@@V@ ) V@ )W@ )
,A~[-2@#accZ@7N ;3 ;>@@P~Py@	A@@A@uC@@59B@@AB@A@  ,   ߤPN ;3 ;AN ;3 ;S@E6@@U@ (V@ (IBPA@  ,   ߔPN@@M@ PA@  ,   ߌPN A{ A2{@A2zA@PP@@  ,   ߀P@2|AP5N <e <e2@#str5@2N <e <@@P#len)@@ @ )uT@ )k@O  < <O < <@@P+invalid_box@N@@ @ )~T@ ){@ @ )T@ )|@ @ )}T@ )z@O < <O < <@@P,parse_spaces@[@@ @ *MT@ )T@ )@ @ )U@ )@O& = =#O' = =/@@P+parse_lword@@ @ *YT@ )@*@@ @ *T@ )T@ )@ @ )@ @ )U@ )@O> = =O? = =@@P)parse_int@@ @ +T@ )@*@@ @ +tT@ )T@ )@ @ )@ @ )U@ )@OV >; >COW >; >L@@Q&wstart@@ @ +T@ +@Ob > >Oc > >@@Q Ơ$wend*@@ @ +T@ +@On > >Oo > ? @@Q,Ǡ(box_nameO@@ @ +T@ +@O{ ?  ?(O| ?  ?0@@Q9Ƞ&nstart@@ @ +T@ +@O ?\ ?dO ?\ ?j@@QEɠ$nend*@@ @ +T@ +@O ? ?O ? ?@@QQʠ&indentP @@ @ ,T@ , @O ? ?O ? ?@@Q]ˠ'exp_end@@ @ ,vT@ ,n@O @N @VO @N @]@@Qi̠(box_type5@@ @ ,T@ ,@O @ @O @ @@@QuQp@PI@@AN@@"M@@AB/L@@C@@ACB@@AK@@ANJ@@F@@ABDE@@D@@AA@@qH@@A~G@@BCE@6B@@A@N@  ,   tQO @ @O @ @@@3{AQ@#@!@AB CDE
@M@  ,   lQO AU AiO AU Aw@9T@ ,3A
QM@  ,   \Q	@3AQM@  ,   PQO @ @O @ @@@3AQM@  ,   DQO A7 AKO A7 AT@@3AQM@  ,   8QO A A.O A A6@@3AQ M@  ,   ,QP @ AP @ A@@3A#Q%M@  ,   ބQP @ @3@@3A'Q)M@  ,   ބQİP
 @u @P @u @@Fu@@S@ ,T@ ,T@ ,3A5Q7M@  ,   tQ@3A7Q9M@  ,   dQ԰P @u @y3@@3A;Q=MA  ,   \QڰP  @N @`P! @N @q@A3ABQٰ@h@AdcBa`CZYDQ@L
  ,   PQP, @N @R3@@3ALQ
L@  ,   4QP0 @" @<P1 @" @J@T@ ,\3ҐATQ@{@A#exnL@@y@ABxwCqpn@#tagM@@Ap@p@ABCDo@M@  ,   $R@3AfQM@  ,   RPK ? ?PL ? @!@U@ ,3AoR@@A@BCD@O@  ,   RPY ? ?@!1@@U@ ,U@ ,SV@ ,34 CRO@  ,   ݼR!Pg ? ?7@@4ARK@  ,   ݰR%Pk ? ?Pl ? ?@@4
AR#K@  ,   ݠR*Pp ? ?4@@4AR' KA  ,   ݜR0Pv ? ?Pw ? ?@A4BR/(@@A@BCD@J
  ,   ݐR<P ? ?4!@@4 AR9
JA  ,   ݌RBP ?\ ?mP ?\ ?~@A4'ARA:@@ACD@I  ,   ݄RMP ?\ ?`42@@41ARJ	IA  ,   ݀RSP ?  ?3P ?  ?X@A48CRR@@ABD@H  ,   \R^P ?  ?$4C@@4BAR[	HA  ,   XRdP > ?P > ?@A4IBRc@@ABC@G  ,   LRoP > >4T@@4SARl	GA  ,   HRuP > >P > >@A4ZARt"@@@ABC@F  ,   <RP > >4e@@4dAR}	F@  ,    RP = =4i@@4hAR.@@AB@C@  ,   RP < <P < =AA	1CamlinternalFormat.open_box_of_string.invalid_boxA@RR@@  ,   RP < <4v@@4uAR@@A	@B@B@  ,   RP < <4}@@4|AR@@A
@A@  ,   RP < <P < <@@4ARA@  ,   RP < <P < <@FJ@@S@ )bT@ )_4BRA@  ,   RP < <4@@4@
RA@  ,   ܸRP < <(@@'@&+@R@3QA@@A@7HB@@AC@@B@A@  ,   ܜR°Q > >Q	 > >@@	/CamlinternalFormat.open_box_of_string.parse_intA&!i@Q >; >MQ >; >N@@RĠ!jT@ +	@Q >; >OQ >; >P@@RRҰ@,C@@AB@@A@@AB@/C@@7B@@AB@@@@A @@ @@ABC@  ,   ܐRQ1 > >Q2 > >@@)A(RC@  ,   PRQ6 >p >~Q7 >p >@
`@@ @ +02B2R@@A@BB@  ,   @RQC >p >x@@:A9RB@  ,   4SQG >S >iQH >S >j@@?A>RB@  ,    SQL >S >Y@@C@BSB@  ,   S
QP = >QQ = >)@@	1CamlinternalFormat.open_box_of_string.parse_lwordAn!i(@QY = =QZ = =@@S !j$T@ *]@Qa = =Qb = =@@SS@-"C@@AB@@A@@(D@@ABC@zF@@E@@AB@5C@@AN@@@b @@ABD@  ,   S6Q| >* >9Q} >* >:@@,A+S4D@  ,   S;Q = =Q = =@
@@ @ *5B5S>@"@A @BB@  ,   ۼSHQ = =@@=A<SEB@  ,   ۰SLQ = =Q = =@@BAASJB@  ,   ۘSQQ = =@@F@ESNB@  ,   tSUQ =l =Q =l =@@	2CamlinternalFormat.open_box_of_string.parse_spacesA!i@Q = =0Q = =1@@SaS\@-dB@@A
A@@B@I@@H@@AB@rF@@AC@@@@@ABB@  ,   hSsQ = =Q = =@@ASqB@  ,   HSxQ =Q =_Q =Q =f@
@@ @ *&'B'S{@@AA@  ,   4SQ =Q =Y@@.A-SA@  ,   (SQ =4 =JQ =4 =K@@3A2SA@  ,   SQ =4 =:@@7@6SA@  ,   SQ C C5|@A5{A@SS@@  ,    SQ C CQ C C@A5A@SS@@  ,   S	@5AS7U  8 @@@A@@@A@5@@@Sϱ7W  8 @@@A@@@A@75@@@@SР#padQ7ܠ@@ @ -y@@ @ -z@@ @ -x@Q C C!R  C C$@@SѠ#fmtR77W@ -7W@ -7W@ -7W@ -7W@ -7W@ -@@ @ -@R C C%R C C(@@Sұ"$0X  8 @@@A@@@A@S@@@Sՠ!sG@@ @ -@R& C CR' C C@@S@4  8 @@@A@&d@@ @ -@@ @ -@ @ -@@AXS@@@S@  8 @@@A@@@ @ -@@AXS@@@S@ABS@?A@@AUB@@%C@@AB@@C@  ,   TRG Cw CRH Cw C@A5A@SS@@  ,   TRL Cw CRM Cw C@A5A@TT@@  ,   T
@5Aq!sG@@ @ -@RZ Cw CR[ Cw C@@Tؠ!wQ3@@ @ -@Rd Cw CRe Cw C@@T"@m  8 @@@Av@@ @ -@@AXT'@@@T)@AT$@1@A0@!D@@AC@@BC@@D@  ,   ڬT2Rx C; CURy C; Cv@A6A@T0T/@@  ,   ڜT7@6A@  8 @@@A@@ @ -@@AXT=@@@T?@AT:@F@F@AB@@B@  ,   ڄTDR C C,6/@@6.@TAB@  ,   pTHR El ER El E@A68A@TFTE@@  ,   hTMR El ER El E@A6=A@TKTJ@@  ,   \TR
@6?ATI8EU  8 @@@A@@@A@6I@@@T[8CW  8 @@@A@@@A@86L@@@@T_$precR8V@@ @ /f@@ @ /g@@ @ /e@R E ER E E@@Tt#fmtR8Z8[W@ /u8ZW@ /v8XW@ /w8XW@ /x8WW@ /y8UW@ /z@@ @ /@R E ER E E@@T!pQ@@ @ /@R El E~R El E@@T@+  8 @@@A4@@ @ /@@AXT@@@T@AT@.A@@AC@@FB@@AB@@C@  ,   HTR E/ EFR E/ Ek@A6A@TT@@  ,   8T@6AY@A  8 @@@AJ@@ @ /@@AXT@@@T@AT@@@AB@@B@  ,   0TR E E6@A6A@TT@@  ,    T@6Ak"$0X  8 @@@A@@@A@T@@@T@\  8 @@@A@&B@@ @ /@@ @ /@ @ /@@AXT@@@T@  8 @@@Ah@@ @ /@@AXT@@@T@ABT#B@  ,   TٰS E E6@@6@T'B@  ,   TݰS# H) HC6@A6A@TT@@  ,   TS' H) HTS( H) Ha@A6A@TT@@  ,   T	@6AT8U  8 @@@A@@@A@6@@@T8W  8 @@@A@@@A@8l6@@@@T8Y  8 @@@A@@@A@8p6@@@@U 8[  8 @@@A@@@A@8t6@@@@U#padS[8@@ @ 1q@@ @ 1r@@ @ 1p@S[ G, G0S\ G, G3@@U$precSp8 '@@ @ 1(@@ @ 1@@ @ 1@Sp G, G4Sq G, G8@@U.#fmtS8Ơ8[@ 18[@ 18[@ 18[@ 18[@ 18[@ 1@@ @ 1@S G, G9S G, G<@@UG2$Precision_fmt_EBB\  8 @@@A@@@A@UI@@@UK5$Precision_fmt_EBB_'a\  8 @@@A@@@A@UM@@@UO5$Precision_fmt_EBB_'d\  8 @@@A@@@A@UQ@@@US$precNl@@ @ 1@8[@ 1{[@ 1[@ 1[@ 1 @@ @ 1@ @ 1@@ @ 1@S G@ GYS G@ G]@@Uq$fmt'Nr@@ @ 19[@ 1[@ 1[@ 1[@ 19[@ 1[@ 1[@ 1[@ 1 ?@@ @ 19[@ 1[@ 1[@ 1[@ 1à9[@ 1[@ 1[@ 1[@ 1@@ @ 1@S G@ G_S G@ Gc@@U"$0]  8 @@@A@@@A@U@@@U!sIl@@ @ 2J@S H) H9S H) H:@@U@  8 @@@A@(2@@ @ 2H@@ @ 2G@ @ 2F@@A]U@@@U@  8 @@@A@@ @ 2I@@A]U@@@U@ABU@/D@@AA@@^E@@ABC@@FB@@.G@@ABC@9B@@A@G@  ,   UڰT  G GT! G H(@A7A@UU@@  ,   ټU߰T% G H	T& G H@A7A@UU@@  ,   ٨U
@7A!sI@@ @ 2/@T3 G GT4 G G@@U !wS@@ @ 20@T= G GT> G G@@U@  8 @@@A@@ @ 2.@@A]V @@@V@AU<5@5@A H@@G@@ABC3@H@  ,   ٌVTQ G GTR G G@A8 A@V	V@@  ,   xV@8A(@   8 @@@A	@@ @ 2@@A]V@@@V@AVRK@J@ACE@F@  ,   dVTc G G8@@8A6VF@  ,   PV!Tg G@ GgTh G@ G@9Ƞ@@ @ 18B@V)@e@Ab@_@AB\@C@  ,   @V4Tz G@ GB8)@@8(@HV1C@  ,   V8T~ 7 <82@@81AVO9ɐT If If8W@9J9@@ @ 3@T If I}T If I@@Vi#str9@T If IT If I@@Vp	/legacy_behavior9S@ 3@T M MT M M@@Vx
6invalid_format_message@1@@ @ 4T@ 3@1U@@ @ 4T@ 3@ @ 3@ @ 3T@ 3@ @ 3T@ 3@T# P PT# P P@@V8unexpected_end_of_format @2@@ @ 4T@ 4@ @ 4@ @ 4T@ 4@T+ Q QT+ Q Q@@V:invalid_nonnull_char_width@2@@ @ 5T@ 4@ @ 4@ @ 4T@ 4@T1 Rl RrT1 Rl R@@V6invalid_format_without@2)@@ @ 5T@ 5@@@ @ 5T@ 5@1@@ @ 6"T@ 5&@ @ 5'@ @ 5(T@ 5 @ @ 5!T@ 5@ @ 5T@ 5@U7 SY S_U7 SY Su@@V2expected_character@2M@@ @ 6T@ 6@@1@@ @ 7 T@ 6G@x@@ @ 7LT@ 6N@ @ 6O@ @ 6PT@ 6H@ @ 6IT@ 6A@ @ 6BT@ 6?@UA? TR TXUB? TR Tj@@V%parse@Va@@ @ 7@Vg@@ @ 7:\@ @ MT@ 7@ @ NT@ 7!e @ 7!f @ 7@@ @ 7@ @ 7@ @ 7@UkF UM UWUlF UM U\@@W)-parse_literal@V@@ @ 7@V@@ @ 7@V@@ @ 7OP1T@ 7.T@ 7!e @ 7!f @ 7@@ @ 7@ @ 7@ @ 7@ @ 7@UJ V VUJ V V'@@WT,parse_format@V@@ @ 7@V@@ @ 7OuVT@ 7֠ST@ 7נ!e @ 7ڠ!f @ 7@@ @ 7@ @ 7@ @ 7@UX XY X_UX XY Xk@@Wy)parse_ign@V@@ @ 7@V@@ @ 7@V@@ @ 7OT@ 7~T@ 7!e @ 7!f @ 7@@ @ 8@ @ 8 @ @ 7@ @ 7@U[ X XU[ X X@@W+parse_flags@W@@ @ 8"@W@@ @ 8!@W@@ @ 8 @W@@ @ 8OѠT@ 8T@ 8!e @ 8#!f @ 8$@@ @ 8)@ @ 8(@ @ 8'@ @ 8&@ @ 8%@Vb Z Z!Vb Z Z,@@W-parse_padding@W7@@ @ 8^@W=@@ @ 8]@WC@@ @ 8\@W9@@ @ 8[@W?@@ @ 8Z@WE@@ @ 8Y@WK@@ @ 8X@WQ@@ @ 8W@WW@@ @ 8VP T@ 8TT@ 8U!e @ 8_!f @ 8`@@ @ 8j@ @ 8i@ @ 8h@ @ 8g@ @ 8f@ @ 8e@ @ 8d@ @ 8c@ @ 8b@ @ 8a@Vf ^ ^Vg ^ ^@@X$ 3parse_after_padding@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@V'padding!x @ 8Uj @ 8@@ @ 8PwXT@ 8UT@ 8!e @ 8!f @ 8@@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@V d dV d e@@X{!/parse_precision@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W@@ @ 8@W'padding!x @ 8YT@ 8@@ @ 8PϠT@ 8T@ 8!e @ 8!f @ 8@@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@ @ 8@W g; gAW g; gP@@X"5parse_after_precision@X5@@ @ 9A@X;@@ @ 9@@XA@@ @ 9?@X7@@ @ 9>@X=@@ @ 9=@XC@@ @ 9<@XI@@ @ 9;@XO@@ @ 9:@W\'padding!x @ 9B!y @ 9C@@ @ 9T@Wm)precision!z @ 9D!t @ 9E@@ @ 9SQ:T@ 96T@ 97!e @ 9F!f @ 9G@@ @ 9R@ @ 9Q@ @ 9P@ @ 9O@ @ 9N@ @ 9M@ @ 9L@ @ 9K@ @ 9J@ @ 9I@ @ 9H@W m mW m m@@Y>#0parse_conversion@X@@ @ 9@X@@ @ 9@X@@ @ 9@X@@ @ 9@X@@ @ 9@X@@ @ 9@X@@ @ 9@W'padding!x @ 9!y @ 9@@ @ 9@W)precision!z @ 9!t @ 9@@ @ 9@W'padding!u @ 9!v @ 9@@ @ 9@X@@ @ 9QT@ 9T@ 9!e @ 9!f @ 9@@ @ 9@ @ 9@ @ 9@ @ 9@ @ 9@ @ 9@ @ 9@ @ 9@ @ 9@ @ 9@ @ 9@ @ 9@W s sW s s&@@Y$.parse_after_at@Y@@ @ 9@Y"@@ @ 9Q۠T@ 9РT@ 9Ѡ!e @ 9/* -*- buffer-read-only: t -*-
   !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
   This file is built by regen/regcomp.pl from regcomp.sym.
   Any changes made here will be lost!
 */

#if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD)

/* Regops and State definitions */

#define REGNODE_MAX           	110
#define REGMATCH_STATE_MAX    	150

/* -- For regexec.c to switch on target being utf8 (t8) or not (tb, b='byte'); */
#define with_t_UTF8ness(op, t_utf8) (((op) << 1) + (cBOOL(t_utf8)))
/* -- same, but also with pattern (p8, pb) -- */
#define with_tp_UTF8ness(op, t_utf8, p_utf8)                        \
		(((op) << 2) + (cBOOL(t_utf8) << 1) + cBOOL(p_utf8))

/* The #defines below give both the basic regnode and the expanded version for
   switching on utf8ness */
#define END                           0        /* 0x00 End of program. */
#define END_tb                           0     /*      0x000 */
#define END_t8                           1     /*      0x001 */
#define END_tb_pb                           0  /*      0x000 */
#define END_tb_p8                           1  /*      0x001 */
#define END_t8_pb                           2  /*      0x002 */
#define END_t8_p8                           3  /*      0x003 */

#define SUCCEED                       1        /* 0x01 Return from a
                                                  subroutine, basically. */
#define SUCCEED_tb                       2     /*      0x002 */
#define SUCCEED_t8                       3     /*      0x003 */
#define SUCCEED_tb_pb                       4  /*      0x004 */
#define SUCCEED_tb_p8                       5  /*      0x005 */
#define SUCCEED_t8_pb                       6  /*      0x006 */
#define SUCCEED_t8_p8                       7  /*      0x007 */

#define SBOL                          2        /* 0x02 Match "" at beginning
                                                  of line: /^/, /\A/ */
#define SBOL_tb                          4     /*      0x004 */
#define SBOL_t8                          5     /*      0x005 */
#define SBOL_tb_pb                          8  /*      0x008 */
#define SBOL_tb_p8                          9  /*      0x009 */
#define SBOL_t8_pb                         10  /*      0x00a */
#define SBOL_t8_p8                         11  /*      0x00b */

#define BOL                           2        /* 0x02 Match "" at beginning
                                                  of line: /^/, /\A/ */
#define BOL_tb                           4     /*      0x004 */
#define BOL_t8                           5     /*      0x005 */
#define BOL_tb_pb                           8  /*      0x008 */
#define BOL_tb_p8                           9  /*      0x009 */
#define BOL_t8_pb                          10  /*      0x00a */
#define BOL_t8_p8                          11  /*      0x00b */

#define MBOL                          3        /* 0x03 Same, assuming
                                                  multiline: /^/m */
#define MBOL_tb                          6     /*      0x006 */
#define MBOL_t8                          7     /*      0x007 */
#define MBOL_tb_pb                         12  /*      0x00c */
#define MBOL_tb_p8                         13  /*      0x00d */
#define MBOL_t8_pb                         14  /*      0x00e */
#define MBOL_t8_p8                         15  /*      0x00f */

#define SEOL                          4        /* 0x04 Match "" at end of
                                                  line: /$/ */
#define SEOL_tb                          8     /*      0x008 */
#define SEOL_t8                          9     /*      0x009 */
#define SEOL_tb_pb                         16  /*      0x010 */
#define SEOL_tb_p8                         17  /*      0x011 */
#define SEOL_t8_pb                         18  /*      0x012 */
#define SEOL_t8_p8                         19  /*      0x013 */

#define EOL                           4        /* 0x04 Match "" at end of
                                                  line: /$/ */
#define EOL_tb                           8     /*      0x008 */
#define EOL_t8                           9     /*      0x009 */
#define EOL_tb_pb                          16  /*      0x010 */
#define EOL_tb_p8                          17  /*      0x011 */
#define EOL_t8_pb                          18  /*      0x012 */
#define EOL_t8_p8                          19  /*      0x013 */

#define MEOL                          5        /* 0x05 Same, assuming
                                                  multiline: /$/m */
#define MEOL_tb                         10     /*      0x00a */
#define MEOL_t8                         11     /*      0x00b */
#define MEOL_tb_pb                         20  /*      0x014 */
#define MEOL_tb_p8                         21  /*      0x015 */
#define MEOL_t8_pb                         22  /*      0x016 */
#define MEOL_t8_p8                         23  /*      0x017 */

#define EOS                           6        /* 0x06 Match "" at end of
                                                  string: /\z/ */
#define EOS_tb                          12     /*      0x00c */
#define EOS_t8                          13     /*      0x00d */
#define EOS_tb_pb                          24  /*      0x018 */
#define EOS_tb_p8                          25  /*      0x019 */
#define EOS_t8_pb                          26  /*      0x01a */
#define EOS_t8_p8                          27  /*      0x01b */

#define GPOS                          7        /* 0x07 Matches where last m//g
                                                  left off. */
#define GPOS_tb                         14     /*      0x00e */
#define GPOS_t8                         15     /*      0x00f */
#define GPOS_tb_pb                         28  /*      0x01c */
#define GPOS_tb_p8                         29  /*      0x01d */
#define GPOS_t8_pb                         30  /*      0x01e */
#define GPOS_t8_p8                         31  /*      0x01f */

#define BOUND                         8        /* 0x08 Like BOUNDA for
                                                  non-utf8, otherwise like
                                                  BOUNDU */
#define BOUND_tb                        16     /*      0x010 */
#define BOUND_t8                        17     /*      0x011 */
#define BOUND_tb_pb                        32  /*      0x020 */
#define BOUND_tb_p8                        33  /*      0x021 */
#define BOUND_t8_pb                        34  /*      0x022 */
#define BOUND_t8_p8                        35  /*      0x023 */

#define BOUNDL                        9        /* 0x09 Like BOUND/BOUNDU, but
                                                  \w and \W are defined by
                                                  current locale */
#define BOUNDL_tb                       18     /*      0x012 */
#define BOUNDL_t8                       19     /*      0x013 */
#define BOUNDL_tb_pb                       36  /*      0x024 */
#define BOUNDL_tb_p8                       37  /*      0x025 */
#define BOUNDL_t8_pb                       38  /*      0x026 */
#define BOUNDL_t8_p8                       39  /*      0x027 */

#define BOUNDU                       10        /* 0x0a Match "" at any
                                                  boundary of a given type
                                                  using /u rules. */
#define BOUNDU_tb                       20     /*      0x014 */
#define BOUNDU_t8                       21     /*      0x015 */
#define BOUNDU_tb_pb                       40  /*      0x028 */
#define BOUNDU_tb_p8                       41  /*      0x029 */
#define BOUNDU_t8_pb                       42  /*      0x02a */
#define BOUNDU_t8_p8                       43  /*      0x02b */

#define BOUNDA                       11        /* 0x0b Match "" at any
                                                  boundary between \w\W or
                                                  \W\w, where \w is
                                                  [_a-zA-Z0-9] */
#define BOUNDA_tb                       22     /*      0x016 */
#define BOUNDA_t8                       23     /*      0x017 */
#define BOUNDA_tb_pb                       44  /*      0x02c */
#define BOUNDA_tb_p8                       45  /*      0x02d */
#define BOUNDA_t8_pb                       46  /*      0x02e */
#define BOUNDA_t8_p8                       47  /*      0x02f */

#define NBOUND                       12        /* 0x0c Like NBOUNDA for
                                                  non-utf8, otherwise like
                                                  BOUNDU */
#define NBOUND_tb                       24     /*      0x018 */
#define NBOUND_t8                       25     /*      0x019 */
#define NBOUND_tb_pb                       48  /*      0x030 */
#define NBOUND_tb_p8                       49  /*      0x031 */
#define NBOUND_t8_pb                       50  /*      0x032 */
#define NBOUND_t8_p8                       51  /*      0x033 */

#define NBOUNDL                      13        /* 0x0d Like NBOUND/NBOUNDU,
                                                  but \w and \W are defined by
                                                  current locale */
#define NBOUNDL_tb                      26     /*      0x01a */
#define NBOUNDL_t8                      27     /*      0x01b */
#define NBOUNDL_tb_pb                      52  /*      0x034 */
#define NBOUNDL_tb_p8                      53  /*      0x035 */
#define NBOUNDL_t8_pb                      54  /*      0x036 */
#define NBOUNDL_t8_p8                      55  /*      0x037 */

#define NBOUNDU                      14        /* 0x0e Match "" at any
                                                  non-boundary of a given type
                                                  using using /u rules. */
#define NBOUNDU_tb                      28     /*      0x01c */
#define NBOUNDU_t8                      29     /*      0x01d */
#define NBOUNDU_tb_pb                      56  /*      0x038 */
#define NBOUNDU_tb_p8                      57  /*      0x039 */
#define NBOUNDU_t8_pb                      58  /*      0x03a */
#define NBOUNDU_t8_p8                      59  /*      0x03b */

#define NBOUNDA                      15        /* 0x0f Match "" betweeen any
                                                  \w\w or \W\W, where \w is
                                                  [_a-zA-Z0-9] */
#define NBOUNDA_tb                      30     /*      0x01e */
#define NBOUNDA_t8                      31     /*      0x01f */
#define NBOUNDA_tb_pb                      60  /*      0x03c */
#define NBOUNDA_tb_p8                      61  /*      0x03d */
#define NBOUNDA_t8_pb                      62  /*      0x03e */
#define NBOUNDA_t8_p8                      63  /*      0x03f */

#define REG_ANY                      16        /* 0x10 Match any one character
                                                  (except newline). */
#define REG_ANY_tb                      32     /*      0x020 */
#define REG_ANY_t8                      33     /*      0x021 */
#define REG_ANY_tb_pb                      64  /*      0x040 */
#define REG_ANY_tb_p8                      65  /*      0x041 */
#define REG_ANY_t8_pb                      66  /*      0x042 */
#define REG_ANY_t8_p8                      67  /*      0x043 */

#define SANY                         17        /* 0x11 Match any one
                                                  character. */
#define SANY_tb                         34     /*      0x022 */
#define SANY_t8                         35     /*      0x023 */
#define SANY_tb_pb                         68  /*      0x044 */
#define SANY_tb_p8                         69  /*      0x045 */
#define SANY_t8_pb                         70  /*      0x046 */
#define SANY_t8_p8                         71  /*      0x047 */

#define ANYOF                        18        /* 0x12 Match character in (or
                                                  not in) this class, single
                                                  char match only */
#define ANYOF_tb                        36     /*      0x024 */
#define ANYOF_t8                        37     /*      0x025 */
#define ANYOF_tb_pb                        72  /*      0x048 */
#define ANYOF_tb_p8                        73  /*      0x049 */
#define ANYOF_t8_pb                        74  /*      0x04a */
#define ANYOF_t8_p8                        75  /*      0x04b */

#define ANYOFD                       19        /* 0x13 Like ANYOF, but /d is
                                                  in effect */
#define ANYOFD_tb                       38     /*      0x026 */
#define ANYOFD_t8                       39     /*      0x027 */
#define ANYOFD_tb_pb                       76  /*      0x04c */
#define ANYOFD_tb_p8                       77  /*      0x04d */
#define ANYOFD_t8_pb                       78  /*      0x04e */
#define ANYOFD_t8_p8                       79  /*      0x04f */

#define ANYOFL                       20        /* 0x14 Like ANYOF, but /l is
                                                  in effect */
#define ANYOFL_tb                       40     /*      0x028 */
#define ANYOFL_t8                       41     /*      0x029 */
#define ANYOFL_tb_pb                       80  /*      0x050 */
#define ANYOFL_tb_p8                       81  /*      0x051 */
#define ANYOFL_t8_pb                       82  /*      0x052 */
#define ANYOFL_t8_p8                       83  /*      0x053 */

#define ANYOFPOSIXL                  21        /* 0x15 Like ANYOFL, but
                                                  matches [[:posix:]] classes
                                               */
#define ANYOFPOSIXL_tb                  42     /*      0x02a */
#define ANYOFPOSIXL_t8                  43     /*      0x02b */
#define ANYOFPOSIXL_tb_pb                  84  /*      0x054 */
#define ANYOFPOSIXL_tb_p8                  85  /*      0x055 */
#define ANYOFPOSIXL_t8_pb                  86  /*      0x056 */
#define ANYOFPOSIXL_t8_p8                  87  /*      0x057 */

#define ANYOFH                       22        /* 0x16 Like ANYOF, but only
                                                  has "High" matches, none in
                                                  the bitmap; the flags field
                                                  contains the lowest
                                                  matchable UTF-8 start byte
                                               */
#define ANYOFH_tb                       44     /*      0x02c */
#define ANYOFH_t8                       45     /*      0x02d */
#define ANYOFH_tb_pb                       88  /*      0x058 */
#define ANYOFH_tb_p8                       89  /*      0x059 */
#define ANYOFH_t8_pb                       90  /*      0x05a */
#define ANYOFH_t8_p8                       91  /*      0x05b */

#define ANYOFHb                      23        /* 0x17 Like ANYOFH, but all
                                                  matches share the same UTF-8
                                                  start byte, given in the
                                                  flags field */
#define ANYOFHb_tb                      46     /*      0x02e */
#define ANYOFHb_t8                      47     /*      0x02f */
#define ANYOFHb_tb_pb                      92  /*      0x05c */
#define ANYOFHb_tb_p8                      93  /*      0x05d */
#define ANYOFHb_t8_pb                      94  /*      0x05e */
#define ANYOFHb_t8_p8                      95  /*      0x05f */

#define ANYOFHr                      24        /* 0x18 Like ANYOFH, but the
                                                  flags field contains packed
                                                  bounds for all matchable
                                                  UTF-8 start bytes. */
#define ANYOFHr_tb                      48     /*      0x030 */
#define ANYOFHr_t8                      49     /*      0x031 */
#define ANYOFHr_tb_pb                      96  /*      0x060 */
#define ANYOFHr_tb_p8                      97  /*      0x061 */
#define ANYOFHr_t8_pb                      98  /*      0x062 */
#define ANYOFHr_t8_p8                      99  /*      0x063 */

#define ANYOFHs                      25        /* 0x19 Like ANYOFHb, but has a
                                                  string field that gives the
                                                  leading matchable UTF-8
                                                  bytes; flags field is len */
#define ANYOFHs_tb                      50     /*      0x032 */
#define ANYOFHs_t8                      51     /*      0x033 */
#define ANYOFHs_tb_pb                     100  /*      0x064 */
#define ANYOFHs_tb_p8                     101  /*      0x065 */
#define ANYOFHs_t8_pb                     102  /*      0x066 */
#define ANYOFHs_t8_p8                     103  /*      0x067 */

#define ANYOFR                       26        /* 0x1a Matches any character
                                                  in the range given by its
                                                  packed args: upper 12 bits
                                                  is the max delta from the
                                                  base lower 20; the flags
                                                  field contains the lowest
                                                  matchable UTF-8 start byte
                                               */
#define ANYOFR_tb                       52     /*      0x034 */
#define ANYOFR_t8                       53     /*      0x035 */
#define ANYOFR_tb_pb                      104  /*      0x068 */
#define ANYOFR_tb_p8                      105  /*      0x069 */
#define ANYOFR_t8_pb                      106  /*      0x06a */
#define ANYOFR_t8_p8                      107  /*      0x06b */

#define ANYOFRb                      27        /* 0x1b Like ANYOFR, but all
                                                  matches share the same UTF-8
                                                  start byte, given in the
                                                  flags field */
#define ANYOFRb_tb                      54     /*      0x036 */
#define ANYOFRb_t8                      55     /*      0x037 */
#define ANYOFRb_tb_pb                     108  /*      0x06c */
#define ANYOFRb_tb_p8                     109  /*      0x06d */
#define ANYOFRb_t8_pb                     110  /*      0x06e */
#define ANYOFRb_t8_p8                     111  /*      0x06f */

#define ANYOFM                       28        /* 0x1c Like ANYOF, but matches
                                                  an invariant byte as
                                                  determined by the mask and
                                                  arg */
#define ANYOFM_tb                       56     /*      0x038 */
#define ANYOFM_t8                       57     /*      0x039 */
#define ANYOFM_tb_pb                      112  /*      0x070 */
#define ANYOFM_tb_p8                      113  /*      0x071 */
#define ANYOFM_t8_pb                      114  /*      0x072 */
#define ANYOFM_t8_p8                      115  /*      0x073 */

#define NANYOFM                      29        /* 0x1d complement of ANYOFM */
#define NANYOFM_tb                      58     /*      0x03a */
#define NANYOFM_t8                      59     /*      0x03b */
#define NANYOFM_tb_pb                     116  /*      0x074 */
#define NANYOFM_tb_p8                     117  /*      0x075 */
#define NANYOFM_t8_pb                     118  /*      0x076 */
#define NANYOFM_t8_p8                     119  /*      0x077 */

#define POSIXD                       30        /* 0x1e Some [[:class:]] under
                                                  /d; the FLAGS field gives
                                                  which one */
#define POSIXD_tb                       60     /*      0x03c */
#define POSIXD_t8                       61     /*      0x03d */
#define POSIXD_tb_pb                      120  /*      0x078 */
#define POSIXD_tb_p8                      121  /*      0x079 */
#define POSIXD_t8_pb                      122  /*      0x07a */
#define POSIXD_t8_p8                      123  /*      0x07b */

#define POSIXL                       31        /* 0x1f Some [[:class:]] under
                                                  /l; the FLAGS field gives
                                                  which one */
#define POSIXL_tb                       62     /*      0x03e */
#define POSIXL_t8                       63     /*      0x03f */
#define POSIXL_tb_pb                      124  /*      0x07c */
#define POSIXL_tb_p8                      125  /*      0x07d */
#define POSIXL_t8_pb                      126  /*      0x07e */
#define POSIXL_t8_p8                      127  /*      0x07f */

#define POSIXU                       32        /* 0x20 Some [[:class:]] under
                                                  /u; the FLAGS field gives
                                                  which one */
#define POSIXU_tb                       64     /*      0x040 */
#define POSIXU_t8                       65     /*      0x041 */
#define POSIXU_tb_pb                      128  /*      0x080 */
#define POSIXU_tb_p8                      129  /*      0x081 */
#define POSIXU_t8_pb                      130  /*      0x082 */
#define POSIXU_t8_p8                      131  /*      0x083 */

#define POSIXA                       33        /* 0x21 Some [[:class:]] under
                                                  /a; the FLAGS field gives
                                                  which one */
#define POSIXA_tb                       66     /*      0x042 */
#define POSIXA_t8                       67     /*      0x043 */
#define POSIXA_tb_pb                      132  /*      0x084 */
#define POSIXA_tb_p8                      133  /*      0x085 */
#define POSIXA_t8_pb                      134  /*      0x086 */
#define POSIXA_t8_p8                      135  /*      0x087 */

#define NPOSIXD                      34        /* 0x22 complement of POSIXD,
                                                  [[:^class:]] */
#define NPOSIXD_tb                      68     /*      0x044 */
#define NPOSIXD_t8                      69     /*      0x045 */
#define NPOSIXD_tb_pb                     136  /*      0x088 */
#define NPOSIXD_tb_p8                     137  /*      0x089 */
#define NPOSIXD_t8_pb                     138  /*      0x08a */
#define NPOSIXD_t8_p8                     139  /*      0x08b */

#define NPOSIXL                      35        /* 0x23 complement of POSIXL,
                                                  [[:^class:]] */
#define NPOSIXL_tb                      70     /*      0x046 */
#define NPOSIXL_t8                      71     /*      0x047 */
#define NPOSIXL_tb_pb                     140  /*      0x08c */
#define NPOSIXL_tb_p8                     141  /*      0x08d */
#define NPOSIXL_t8_pb                     142  /*      0x08e */
#define NPOSIXL_t8_p8                     143  /*      0x08f */

#define NPOSIXU                      36        /* 0x24 complement of POSIXU,
                                                  [[:^class:]] */
#define NPOSIXU_tb                      72     /*      0x048 */
#define NPOSIXU_t8                      73     /*      0x049 */
#define NPOSIXU_tb_pb                     144  /*      0x090 */
#define NPOSIXU_tb_p8                     145  /*      0x091 */
#define NPOSIXU_t8_pb                     146  /*      0x092 */
#define NPOSIXU_t8_p8                     147  /*      0x093 */

#define NPOSIXA                      37        /* 0x25 complement of POSIXA,
                                                  [[:^class:]] */
#define NPOSIXA_tb                      74     /*      0x04a */
#define NPOSIXA_t8                      75     /*      0x04b */
#define NPOSIXA_tb_pb                     148  /*      0x094 */
#define NPOSIXA_tb_p8                     149  /*      0x095 */
#define NPOSIXA_t8_pb                     150  /*      0x096 */
#define NPOSIXA_t8_p8                     151  /*      0x097 */

#define CLUMP                        38        /* 0x26 Match any extended
                                                  grapheme cluster sequence */
#define CLUMP_tb                        76     /*      0x04c */
#define CLUMP_t8                        77     /*      0x04d */
#define CLUMP_tb_pb                       152  /*      0x098 */
#define CLUMP_tb_p8                       153  /*      0x099 */
#define CLUMP_t8_pb                       154  /*      0x09a */
#define CLUMP_t8_p8                       155  /*      0x09b */

#define BRANCH                       39        /* 0x27 Match this alternative,
                                                  or the next... */
#define BRANCH_tb                       78     /*      0x04e */
#define BRANCH_t8                       79     /*      0x04f */
#define BRANCH_tb_pb                      156  /*      0x09c */
#define BRANCH_tb_p8                      157  /*      0x09d */
#define BRANCH_t8_pb                      158  /*      0x09e */
#define BRANCH_t8_p8                      159  /*      0x09f */

#define EXACT                        40        /* 0x28 Match this string
                                                  (flags field is the length).
                                               */
#define EXACT_tb                        80     /*      0x050 */
#define EXACT_t8                        81     /*      0x051 */
#define EXACT_tb_pb                       160  /*      0x0a0 */
#define EXACT_tb_p8                       161  /*      0x0a1 */
#define EXACT_t8_pb                       162  /*      0x0a2 */
#define EXACT_t8_p8                       163  /*      0x0a3 */

#define LEXACT                       41        /* 0x29 Match this long string
                                                  (preceded by length; flags
                                                  unused). */
#define LEXACT_tb                       82     /*      0x052 */
#define LEXACT_t8                       83     /*      0x053 */
#define LEXACT_tb_pb                      164  /*      0x0a4 */
#define LEXACT_tb_p8                      165  /*      0x0a5 */
#define LEXACT_t8_pb                      166  /*      0x0a6 */
#define LEXACT_t8_p8                      167  /*      0x0a7 */

#define EXACTL                       42        /* 0x2a Like EXACT, but /l is
                                                  in effect (used so
                                                  locale-related warnings can
                                                  be checked for) */
#define EXACTL_tb                       84     /*      0x054 */
#define EXACTL_t8                       85     /*      0x055 */
#define EXACTL_tb_pb                      168  /*      0x0a8 */
#define EXACTL_tb_p8                      169  /*      0x0a9 */
#define EXACTL_t8_pb                      170  /*      0x0aa */
#define EXACTL_t8_p8                      171  /*      0x0ab */

#define EXACTF                       43        /* 0x2b Like EXACT, but match
                                                  using /id rules; (string not
                                                  UTF-8, ASCII folded;
                                                  non-ASCII not) */
#define EXACTF_tb                       86     /*      0x056 */
#define EXACTF_t8                       87     /*      0x057 */
#define EXACTF_tb_pb                      172  /*      0x0ac */
#define EXACTF_tb_p8                      173  /*      0x0ad */
#define EXACTF_t8_pb                      174  /*      0x0ae */
#define EXACTF_t8_p8                      175  /*      0x0af */

#define EXACTFL                      44        /* 0x2c Like EXACT, but match
                                                  using /il rules; (string not
                                                  likely to be folded) */
#define EXACTFL_tb                      88     /*      0x058 */
#define EXACTFL_t8                      89     /*      0x059 */
#define EXACTFL_tb_pb                     176  /*      0x0b0 */
#define EXACTFL_tb_p8                     177  /*      0x0b1 */
#define EXACTFL_t8_pb                     178  /*      0x0b2 */
#define EXACTFL_t8_p8                     179  /*      0x0b3 */

#define EXACTFU                      45        /* 0x2d Like EXACT, but match
                                                  using /iu rules; (string
                                                  folded) */
#define EXACTFU_tb                      90     /*      0x05a */
#define EXACTFU_t8                      91     /*      0x05b */
#define EXACTFU_tb_pb                     180  /*      0x0b4 */
#define EXACTFU_tb_p8                     181  /*      0x0b5 */
#define EXACTFU_t8_pb                     182  /*      0x0b6 */
#define EXACTFU_t8_p8                     183  /*      0x0b7 */

#define EXACTFAA                     46        /* 0x2e Like EXACT, but match
                                                  using /iaa rules; (string
                                                  folded except MICRO in
                                                  non-UTF8 patterns; doesn't
                                                  contain SHARP S unless
                                                  UTF-8; folded length <=
                                                  unfolded) */
#define EXACTFAA_tb                     92     /*      0x05c */
#define EXACTFAA_t8                     93     /*      0x05d */
#define EXACTFAA_tb_pb                    184  /*      0x0b8 */
#define EXACTFAA_tb_p8                    185  /*      0x0b9 */
#define EXACTFAA_t8_pb                    186  /*      0x0ba */
#define EXACTFAA_t8_p8                    187  /*      0x0bb */

#define EXACTFAA_NO_TRIE             47        /* 0x2f Like EXACTFAA, (string
                                                  not UTF-8, folded except:
                                                  MICRO, SHARP S; folded
                                                  length <= unfolded, not
                                                  currently trie-able) */
#define EXACTFAA_NO_TRIE_tb             94     /*      0x05e */
#define EXACTFAA_NO_TRIE_t8             95     /*      0x05f */
#define EXACTFAA_NO_TRIE_tb_pb            188  /*      0x0bc */
#define EXACTFAA_NO_TRIE_tb_p8            189  /*      0x0bd */
#define EXACTFAA_NO_TRIE_t8_pb            190  /*      0x0be */
#define EXACTFAA_NO_TRIE_t8_p8            191  /*      0x0bf */

#define EXACTFUP                     48        /* 0x30 Like EXACT, but match
                                                  using /iu rules; (string not
                                                  UTF-8, folded except MICRO:
                                                  hence Problematic) */
#define EXACTFUP_tb                     96     /*      0x060 */
#define EXACTFUP_t8                     97     /*      0x061 */
#define EXACTFUP_tb_pb                    192  /*      0x0c0 */
#define EXACTFUP_tb_p8                    193  /*      0x0c1 */
#define EXACTFUP_t8_pb                    194  /*      0x0c2 */
#define EXACTFUP_t8_p8                    195  /*      0x0c3 */

#define EXACTFLU8                    49        /* 0x31 Like EXACTFU, but use
                                                  /il, UTF-8, (string is
                                                  folded, and everything in it
                                                  is above 255 */
#define EXACTFLU8_tb                    98     /*      0x062 */
#define EXACTFLU8_t8                    99     /*      0x063 */
#define EXACTFLU8_tb_pb                   196  /*      0x0c4 */
#define EXACTFLU8_tb_p8                   197  /*      0x0c5 */
#define EXACTFLU8_t8_pb                   198  /*      0x0c6 */
#define EXACTFLU8_t8_p8                   199  /*      0x0c7 */

#define EXACT_REQ8                   50        /* 0x32 Like EXACT, but only
                                                  UTF-8 encoded targets can
                                                  match */
#define EXACT_REQ8_tb                  100     /*      0x064 */
#define EXACT_REQ8_t8                  101     /*      0x065 */
#define EXACT_REQ8_tb_pb                  200  /*      0x0c8 */
#define EXACT_REQ8_tb_p8                  201  /*      0x0c9 */
#define EXACT_REQ8_t8_pb                  202  /*      0x0ca */
#define EXACT_REQ8_t8_p8                  203  /*      0x0cb */

#define LEXACT_REQ8                  51        /* 0x33 Like LEXACT, but only
                                                  UTF-8 encoded targets can
                                                  match */
#define LEXACT_REQ8_tb                 102     /*      0x066 */
#define LEXACT_REQ8_t8                 103     /*      0x067 */
#define LEXACT_REQ8_tb_pb                 204  /*      0x0cc */
#define LEXACT_REQ8_tb_p8                 205  /*      0x0cd */
#define LEXACT_REQ8_t8_pb                 206  /*      0x0ce */
#define LEXACT_REQ8_t8_p8                 207  /*      0x0cf */

#define EXACTFU_REQ8                 52        /* 0x34 Like EXACTFU, but only
                                                  UTF-8 encoded targets can
                                                  match */
#define EXACTFU_REQ8_tb                104     /*      0x068 */
#define EXACTFU_REQ8_t8                105     /*      0x069 */
#define EXACTFU_REQ8_tb_pb                208  /*      0x0d0 */
#define EXACTFU_REQ8_tb_p8                209  /*      0x0d1 */
#define EXACTFU_REQ8_t8_pb                210  /*      0x0d2 */
#define EXACTFU_REQ8_t8_p8                211  /*      0x0d3 */

#define EXACTFU_S_EDGE               53        /* 0x35 /di rules, but nothing
                                                  in it precludes /ui, except
                                                  begins and/or ends with
                                                  [Ss]; (string not UTF-8;
                                                  compile-time only) */
#define EXACTFU_S_EDGE_tb              106     /*      0x06a */
#define EXACTFU_S_EDGE_t8              107     /*      0x06b */
#define EXACTFU_S_EDGE_tb_pb              212  /*      0x0d4 */
#define EXACTFU_S_EDGE_tb_p8              213  /*      0x0d5 */
#define EXACTFU_S_EDGE_t8_pb              214  /*      0x0d6 */
#define EXACTFU_S_EDGE_t8_p8              215  /*      0x0d7 */

#define LNBREAK                      54        /* 0x36 generic newline pattern
                                               */
#define LNBREAK_tb                     108     /*      0x06c */
#define LNBREAK_t8                     109     /*      0x06d */
#define LNBREAK_tb_pb                     216  /*      0x0d8 */
#define LNBREAK_tb_p8                     217  /*      0x0d9 */
#define LNBREAK_t8_pb                     218  /*      0x0da */
#define LNBREAK_t8_p8                     219  /*      0x0db */

#define TRIE                         55        /* 0x37 Match many
                                                  EXACT(F[ALU]?)? at once.
                                                  flags==type */
#define TRIE_tb                        110     /*      0x06e */
#define TRIE_t8                        111     /*      0x06f */
#define TRIE_tb_pb                        220  /*      0x0dc */
#define TRIE_tb_p8                        221  /*      0x0dd */
#define TRIE_t8_pb                        222  /*      0x0de */
#define TRIE_t8_p8                        223  /*      0x0df */

#define TRIEC                        56        /* 0x38 Same as TRIE, but with
                                                  embedded charclass data */
#define TRIEC_tb                       112     /*      0x070 */
#define TRIEC_t8                       113     /*      0x071 */
#define TRIEC_tb_pb                       224  /*      0x0e0 */
#define TRIEC_tb_p8                       225  /*      0x0e1 */
#define TRIEC_t8_pb                       226  /*      0x0e2 */
#define TRIEC_t8_p8                       227  /*      0x0e3 */

#define AHOCORASICK                  57        /* 0x39 Aho Corasick stclass.
                                                  flags==type */
#define AHOCORASICK_tb                 114     /*      0x072 */
#define AHOCORASICK_t8                 115     /*      0x073 */
#define AHOCORASICK_tb_pb                 228  /*      0x0e4 */
#define AHOCORASICK_tb_p8                 229  /*      0x0e5 */
#define AHOCORASICK_t8_pb                 230  /*      0x0e6 */
#define AHOCORASICK_t8_p8                 231  /*      0x0e7 */

#define AHOCORASICKC                 58        /* 0x3a Same as AHOCORASICK,
                                                  but with embedded charclass
                                                  data */
#define AHOCORASICKC_tb                116     /*      0x074 */
#define AHOCORASICKC_t8                117     /*      0x075 */
#define AHOCORASICKC_tb_pb                232  /*      0x0e8 */
#define AHOCORASICKC_tb_p8                233  /*      0x0e9 */
#define AHOCORASICKC_t8_pb                234  /*      0x0ea */
#define AHOCORASICKC_t8_p8                235  /*      0x0eb */

#define NOTHING                      59        /* 0x3b Match empty string. */
#define NOTHING_tb                     118     /*      0x076 */
#define NOTHING_t8                     119     /*      0x077 */
#define NOTHING_tb_pb                     236  /*      0x0ec */
#define NOTHING_tb_p8                     237  /*      0x0ed */
#define NOTHING_t8_pb                     238  /*      0x0ee */
#define NOTHING_t8_p8                     239  /*      0x0ef */

#define TAIL                         60        /* 0x3c Match empty string. Can
                                                  jump here from outside. */
#define TAIL_tb                        120     /*      0x078 */
#define TAIL_t8                        121     /*      0x079 */
#define TAIL_tb_pb                        240  /*      0x0f0 */
#define TAIL_tb_p8                        241  /*      0x0f1 */
#define TAIL_t8_pb                        242  /*      0x0f2 */
#define TAIL_t8_p8                        243  /*      0x0f3 */

#define STAR                         61        /* 0x3d Match this (simple)
                                                  thing 0 or more times. */
#define STAR_tb                        122     /*      0x07a */
#define STAR_t8                        123     /*      0x07b */
#define STAR_tb_pb                        244  /*      0x0f4 */
#define STAR_tb_p8                        245  /*      0x0f5 */
#define STAR_t8_pb                        246  /*      0x0f6 */
#define STAR_t8_p8                        247  /*      0x0f7 */

#define PLUS                         62        /* 0x3e Match this (simple)
                                                  thing 1 or more times. */
#define PLUS_tb                        124     /*      0x07c */
#define PLUS_t8                        125     /*      0x07d */
#define PLUS_tb_pb                        248  /*      0x0f8 */
#define PLUS_tb_p8                        249  /*      0x0f9 */
#define PLUS_t8_pb                        250  /*      0x0fa */
#define PLUS_t8_p8                        251  /*      0x0fb */

#define CURLY                        63        /* 0x3f Match this simple thing
                                                  {n,m} times. */
#define CURLY_tb                       126     /*      0x07e */
#define CURLY_t8                       127     /*      0x07f */
#define CURLY_tb_pb                       252  /*      0x0fc */
#define CURLY_tb_p8                       253  /*      0x0fd */
#define CURLY_t8_pb                       254  /*      0x0fe */
#define CURLY_t8_p8                       255  /*      0x0ff */

#define CURLYN                       64        /* 0x40 Capture next-after-this
                                                  simple thing */
#define CURLYN_tb                      128     /*      0x080 */
#define CURLYN_t8                      129     /*      0x081 */
#define CURLYN_tb_pb                      256  /*      0x100 */
#define CURLYN_tb_p8                      257  /*      0x101 */
#define CURLYN_t8_pb                      258  /*      0x102 */
#define CURLYN_t8_p8                      259  /*      0x103 */

#define CURLYM                       65        /* 0x41 Capture this
                                                  medium-complex thing {n,m}
                                                  times. */
#define CURLYM_tb                      130     /*      0x082 */
#define CURLYM_t8                      131     /*      0x083 */
#define CURLYM_tb_pb                      260  /*      0x104 */
#define CURLYM_tb_p8                      261  /*      0x105 */
#define CURLYM_t8_pb                      262  /*      0x106 */
#define CURLYM_t8_p8                      263  /*      0x107 */

#define CURLYX                       66        /* 0x42 Match this complex
                                                  thing {n,m} times. */
#define CURLYX_tb                      132     /*      0x084 */
#define CURLYX_t8                      133     /*      0x085 */
#define CURLYX_tb_pb                      264  /*      0x108 */
#define CURLYX_tb_p8                      265  /*      0x109 */
#define CURLYX_t8_pb                      266  /*      0x10a */
#define CURLYX_t8_p8                      267  /*      0x10b */

#define WHILEM                       67        /* 0x43 Do curly processing and
                                                  see if rest matches. */
#define WHILEM_tb                      134     /*      0x086 */
#define WHILEM_t8                      135     /*      0x087 */
#define WHILEM_tb_pb                      268  /*      0x10c */
#define WHILEM_tb_p8                      269  /*      0x10d */
#define WHILEM_t8_pb                      270  /*      0x10e */
#define WHILEM_t8_p8                      271  /*      0x10f */

#define OPEN                         68        /* 0x44 Mark this point in
                                                  input as start of #n. */
#define OPEN_tb                        136     /*      0x088 */
#define OPEN_t8                        137     /*      0x089 */
#define OPEN_tb_pb                        272  /*      0x110 */
#define OPEN_tb_p8                        273  /*      0x111 */
#define OPEN_t8_pb                        274  /*      0x112 */
#define OPEN_t8_p8                        275  /*      0x113 */

#define CLOSE                        69        /* 0x45 Close corresponding
                                                  OPEN of #n. */
#define CLOSE_tb                       138     /*      0x08a */
#define CLOSE_t8                       139     /*      0x08b */
#define CLOSE_tb_pb                       276  /*      0x114 */
#define CLOSE_tb_p8                       277  /*      0x115 */
#define CLOSE_t8_pb                       278  /*      0x116 */
#define CLOSE_t8_p8                       279  /*      0x117 */

#define SROPEN                       70        /* 0x46 Same as OPEN, but for
                                                  script run */
#define SROPEN_tb                      140     /*      0x08c */
#define SROPEN_t8                      141     /*      0x08d */
#define SROPEN_tb_pb                      280  /*      0x118 */
#define SROPEN_tb_p8                      281  /*      0x119 */
#define SROPEN_t8_pb                      282  /*      0x11a */
#define SROPEN_t8_p8                      283  /*      0x11b */

#define SRCLOSE                      71        /* 0x47 Close preceding SROPEN
                                               */
#define SRCLOSE_tb                     142     /*      0x08e */
#define SRCLOSE_t8                     143     /*      0x08f */
#define SRCLOSE_tb_pb                     284  /*      0x11c */
#define SRCLOSE_tb_p8                     285  /*      0x11d */
#define SRCLOSE_t8_pb                     286  /*      0x11e */
#define SRCLOSE_t8_p8                     287  /*      0x11f */

#define REF                          72        /* 0x48 Match some already
                                                  matched string */
#define REF_tb                         144     /*      0x090 */
#define REF_t8                         145     /*      0x091 */
#define REF_tb_pb                         288  /*      0x120 */
#define REF_tb_p8                         289  /*      0x121 */
#define REF_t8_pb                         290  /*      0x122 */
#define REF_t8_p8                         291  /*      0x123 */

#define REFF                         73        /* 0x49 Match already matched
                                                  string, using /di rules. */
#define REFF_tb                        146     /*      0x092 */
#define REFF_t8                        147     /*      0x093 */
#define REFF_tb_pb                        292  /*      0x124 */
#define REFF_tb_p8                        293  /*      0x125 */
#define REFF_t8_pb                        294  /*      0x126 */
#define REFF_t8_p8                        295  /*      0x127 */

#define REFFL                        74        /* 0x4a Match already matched
                                                  string, using /li rules. */
#define REFFL_tb                       148     /*      0x094 */
#define REFFL_t8                       149     /*      0x095 */
#define REFFL_tb_pb                       296  /*      0x128 */
#define REFFL_tb_p8                       297  /*      0x129 */
#define REFFL_t8_pb                       298  /*      0x12a */
#define REFFL_t8_p8                       299  /*      0x12b */

#define REFFU                        75        /* 0x4b Match already matched
                                                  string, usng /ui. */
#define REFFU_tb                       150     /*      0x096 */
#define REFFU_t8                       151     /*      0x097 */
#define REFFU_tb_pb                       300  /*      0x12c */
#define REFFU_tb_p8                       301  /*      0x12d */
#define REFFU_t8_pb                       302  /*      0x12e */
#define REFFU_t8_p8                       303  /*      0x12f */

#define REFFA                        76        /* 0x4c Match already matched
                                                  string, using /aai rules. */
#define REFFA_tb                       152     /*      0x098 */
#define REFFA_t8                       153     /*      0x099 */
#define REFFA_tb_pb                       304  /*      0x130 */
#define REFFA_tb_p8                       305  /*      0x131 */
#define REFFA_t8_pb                       306  /*      0x132 */
#define REFFA_t8_p8                       307  /*      0x133 */

#define REFN                         77        /* 0x4d Match some already
                                                  matched string */
#define REFN_tb                        154     /*      0x09a */
#define REFN_t8                        155     /*      0x09b */
#define REFN_tb_pb                        308  /*      0x134 */
#define REFN_tb_p8                        309  /*      0x135 */
#define REFN_t8_pb                        310  /*      0x136 */
#define REFN_t8_p8                        311  /*      0x137 */

#define REFFN                        78        /* 0x4e Match already matched
                                                  string, using /di rules. */
#define REFFN_tb                       156     /*      0x09c */
#define REFFN_t8                       157     /*      0x09d */
#define REFFN_tb_pb                       312  /*      0x138 */
#define REFFN_tb_p8                       313  /*      0x139 */
#define REFFN_t8_pb                       314  /*      0x13a */
#define REFFN_t8_p8                       315  /*      0x13b */

#define REFFLN                       79        /* 0x4f Match already matched
                                                  string, using /li rules. */
#define REFFLN_tb                      158     /*      0x09e */
#define REFFLN_t8                      159     /*      0x09f */
#define REFFLN_tb_pb                      316  /*      0x13c */
#define REFFLN_tb_p8                      317  /*      0x13d */
#define REFFLN_t8_pb                      318  /*      0x13e */
#define REFFLN_t8_p8                      319  /*      0x13f */

#define REFFUN                       80        /* 0x50 Match already matched
                                                  string, using /ui rules. */
#define REFFUN_tb                      160     /*      0x0a0 */
#define REFFUN_t8                      161     /*      0x0a1 */
#define REFFUN_tb_pb                      320  /*      0x140 */
#define REFFUN_tb_p8                      321  /*      0x141 */
#define REFFUN_t8_pb                      322  /*      0x142 */
#define REFFUN_t8_p8                      323  /*      0x143 */

#define REFFAN                       81        /* 0x51 Match already matched
                                                  string, using /aai rules. */
#define REFFAN_tb                      162     /*      0x0a2 */
#define REFFAN_t8                      163     /*      0x0a3 */
#define REFFAN_tb_pb                      324  /*      0x144 */
#define REFFAN_tb_p8                      325  /*      0x145 */
#define REFFAN_t8_pb                      326  /*      0x146 */
#define REFFAN_t8_p8                      327  /*      0x147 */

#define LONGJMP                      82        /* 0x52 Jump far away. */
#define LONGJMP_tb                     164     /*      0x0a4 */
#define LONGJMP_t8                     165     /*      0x0a5 */
#define LONGJMP_tb_pb                     328  /*      0x148 */
#define LONGJMP_tb_p8                     329  /*      0x149 */
#define LONGJMP_t8_pb                     330  /*      0x14a */
#define LONGJMP_t8_p8                     331  /*      0x14b */

#define BRANCHJ                      83        /* 0x53 BRANCH with long
                                                  offset. */
#define BRANCHJ_tb                     166     /*      0x0a6 */
#define BRANCHJ_t8                     167     /*      0x0a7 */
#define BRANCHJ_tb_pb                     332  /*      0x14c */
#define BRANCHJ_tb_p8                     333  /*      0x14d */
#define BRANCHJ_t8_pb                     334  /*      0x14e */
#define BRANCHJ_t8_p8                     335  /*      0x14f */

#define IFMATCH                      84        /* 0x54 Succeeds if the
                                                  following matches; non-zero
                                                  flags "f", next_off "o"
                                                  means lookbehind assertion
                                                  starting "f..(f-o)"
                                                  characters before current */
#define IFMATCH_tb                     168     /*      0x0a8 */
#define IFMATCH_t8                     169     /*      0x0a9 */
#define IFMATCH_tb_pb                     336  /*      0x150 */
#define IFMATCH_tb_p8                     337  /*      0x151 */
#define IFMATCH_t8_pb                     338  /*      0x152 */
#define IFMATCH_t8_p8                     339  /*      0x153 */

#define UNLESSM                      85        /* 0x55 Fails if the following
                                                  matches; non-zero flags "f",
                                                  next_off "o" means
                                                  lookbehind assertion
                                                  starting "f..(f-o)"
                                                  characters before current */
#define UNLESSM_tb                     170     /*      0x0aa */
#define UNLESSM_t8                     171     /*      0x0ab */
#define UNLESSM_tb_pb                     340  /*      0x154 */
#define UNLESSM_tb_p8                     341  /*      0x155 */
#define UNLESSM_t8_pb                     342  /*      0x156 */
#define UNLESSM_t8_p8                     343  /*      0x157 */

#define SUSPEND                      86        /* 0x56 "Independent" sub-RE.
                                               */
#define SUSPEND_tb                     172     /*      0x0ac */
#define SUSPEND_t8                     173     /*      0x0ad */
#define SUSPEND_tb_pb                     344  /*      0x158 */
#define SUSPEND_tb_p8                     345  /*      0x159 */
#define SUSPEND_t8_pb                     346  /*      0x15a */
#define SUSPEND_t8_p8                     347  /*      0x15b */

#define IFTHEN                       87        /* 0x57 Switch, should be
                                                  preceded by switcher. */
#define IFTHEN_tb                      174     /*      0x0ae */
#define IFTHEN_t8                      175     /*      0x0af */
#define IFTHEN_tb_pb                      348  /*      0x15c */
#define IFTHEN_tb_p8                      349  /*      0x15d */
#define IFTHEN_t8_pb                      350  /*      0x15e */
#define IFTHEN_t8_p8                      351  /*      0x15f */

#define GROUPP                       88        /* 0x58 Whether the group
                                                  matched. */
#define GROUPP_tb                      176     /*      0x0b0 */
#define GROUPP_t8                      177     /*      0x0b1 */
#define GROUPP_tb_pb                      352  /*      0x160 */
#define GROUPP_tb_p8                      353  /*      0x161 */
#define GROUPP_t8_pb                      354  /*      0x162 */
#define GROUPP_t8_p8                      355  /*      0x163 */

#define EVAL                         89        /* 0x59 Execute some Perl code.
                                               */
#define EVAL_tb                        178     /*      0x0b2 */
#define EVAL_t8                        179     /*      0x0b3 */
#define EVAL_tb_pb                        356  /*      0x164 */
#define EVAL_tb_p8                        357  /*      0x165 */
#define EVAL_t8_pb                        358  /*      0x166 */
#define EVAL_t8_p8                        359  /*      0x167 */

#define MINMOD                       90        /* 0x5a Next operator is not
                                                  greedy. */
#define MINMOD_tb                      180     /*      0x0b4 */
#define MINMOD_t8                      181     /*      0x0b5 */
#define MINMOD_tb_pb                      360  /*      0x168 */
#define MINMOD_tb_p8                      361  /*      0x169 */
#define MINMOD_t8_pb                      362  /*      0x16a */
#define MINMOD_t8_p8                      363  /*      0x16b */

#define LOGICAL                      91        /* 0x5b Next opcode should set
                                                  the flag only. */
#define LOGICAL_tb                     182     /*      0x0b6 */
#define LOGICAL_t8                     183     /*      0x0b7 */
#define LOGICAL_tb_pb                     364  /*      0x16c */
#define LOGICAL_tb_p8                     365  /*      0x16d */
#define LOGICAL_t8_pb                     366  /*      0x16e */
#define LOGICAL_t8_p8                     367  /*      0x16f */

#define RENUM                        92        /* 0x5c Group with
                                                  independently numbered
                                                  parens. */
#define RENUM_tb                       184     /*      0x0b8 */
#define RENUM_t8                       185     /*      0x0b9 */
#define RENUM_tb_pb                       368  /*      0x170 */
#define RENUM_tb_p8                       369  /*      0x171 */
#define RENUM_t8_pb                       370  /*      0x172 */
#define RENUM_t8_p8                       371  /*      0x173 */

#define GOSUB                        93        /* 0x5d recurse to paren arg1
                                                  at (signed) ofs arg2 */
#define GOSUB_tb                       186     /*      0x0ba */
#define GOSUB_t8                       187     /*      0x0bb */
#define GOSUB_tb_pb                       372  /*      0x174 */
#define GOSUB_tb_p8                       373  /*      0x175 */
#define GOSUB_t8_pb                       374  /*      0x176 */
#define GOSUB_t8_p8                       375  /*      0x177 */

#define GROUPPN                      94        /* 0x5e Whether the group
                                                  matched. */
#define GROUPPN_tb                     188     /*      0x0bc */
#define GROUPPN_t8                     189     /*      0x0bd */
#define GROUPPN_tb_pb                     376  /*      0x178 */
#define GROUPPN_tb_p8                     377  /*      0x179 */
#define GROUPPN_t8_pb                     378  /*      0x17a */
#define GROUPPN_t8_p8                     379  /*      0x17b */

#define INSUBP                       95        /* 0x5f Whether we are in a
                                                  specific recurse. */
#define INSUBP_tb                      190     /*      0x0be */
#define INSUBP_t8                      191     /*      0x0bf */
#define INSUBP_tb_pb                      380  /*      0x17c */
#define INSUBP_tb_p8                      381  /*      0x17d */
#define INSUBP_t8_pb                      382  /*      0x17e */
#define INSUBP_t8_p8                      383  /*      0x17f */

#define DEFINEP                      96        /* 0x60 Never execute directly.
                                               */
#define DEFINEP_tb                     192     /*      0x0c0 */
#define DEFINEP_t8                     193     /*      0x0c1 */
#define DEFINEP_tb_pb                     384  /*      0x180 */
#define DEFINEP_tb_p8                     385  /*      0x181 */
#define DEFINEP_t8_pb                     386  /*      0x182 */
#define DEFINEP_t8_p8                     387  /*      0x183 */

#define ENDLIKE                      97        /* 0x61 Used only for the type
                                                  field of verbs */
#define ENDLIKE_tb                     194     /*      0x0c2 */
#define ENDLIKE_t8                     195     /*      0x0c3 */
#define ENDLIKE_tb_pb                     388  /*      0x184 */
#define ENDLIKE_tb_p8                     389  /*      0x185 */
#define ENDLIKE_t8_pb                     390  /*      0x186 */
#define ENDLIKE_t8_p8                     391  /*      0x187 */

#define OPFAIL                       98        /* 0x62 Same as (?!), but with
                                                  verb arg */
#define OPFAIL_tb                      196     /*      0x0c4 */
#define OPFAIL_t8                      197     /*      0x0c5 */
#define OPFAIL_tb_pb                      392  /*      0x188 */
#define OPFAIL_tb_p8                      393  /*      0x189 */
#define OPFAIL_t8_pb                      394  /*      0x18a */
#define OPFAIL_t8_p8                      395  /*      0x18b */

#define ACCEPT                       99        /* 0x63 Accepts the current
                                                  matched string, with verbar
                                               */
#define ACCEPT_tb                      198     /*      0x0c6 */
#define ACCEPT_t8                      199     /*      0x0c7 */
#define ACCEPT_tb_pb                      396  /*      0x18c */
#define ACCEPT_tb_p8                      397  /*      0x18d */
#define ACCEPT_t8_pb                      398  /*      0x18e */
#define ACCEPT_t8_p8                      399  /*      0x18f */

#define VERB                        100        /* 0x64 Used only for the type
                                                  field of verbs */
#define VERB_tb                        200     /*      0x0c8 */
#define VERB_t8                        201     /*      0x0c9 */
#define VERB_tb_pb                        400  /*      0x190 */
#define VERB_tb_p8                        401  /*      0x191 */
#define VERB_t8_pb                        402  /*      0x192 */
#define VERB_t8_p8                        403  /*      0x193 */

#define PRUNE                       101        /* 0x65 Pattern fails at this
                                                  startpoint if
                                                  no-backtracking through this
                                               */
#define PRUNE_tb                       202     /*      0x0ca */
#define PRUNE_t8                       203     /*      0x0cb */
#define PRUNE_tb_pb                       404  /*      0x194 */
#define PRUNE_tb_p8                       405  /*      0x195 */
#define PRUNE_t8_pb                       406  /*      0x196 */
#define PRUNE_t8_p8                       407  /*      0x197 */

#define MARKPOINT                   102        /* 0x66 Push the current
                                                  location for rollback by
                                                  cut. */
#define MARKPOINT_tb                   204     /*      0x0cc */
#define MARKPOINT_t8                   205     /*      0x0cd */
#define MARKPOINT_tb_pb                   408  /*      0x198 */
#define MARKPOINT_tb_p8                   409  /*      0x199 */
#define MARKPOINT_t8_pb                   410  /*      0x19a */
#define MARKPOINT_t8_p8                   411  /*      0x19b */

#define SKIP                        103        /* 0x67 On failure skip forward
                                                  (to the mark) before
                                                  retrying */
#define SKIP_tb                        206     /*      0x0ce */
#define SKIP_t8                        207     /*      0x0cf */
#define SKIP_tb_pb                        412  /*      0x19c */
#define SKIP_tb_p8                        413  /*      0x19d */
#define SKIP_t8_pb                        414  /*      0x19e */
#define SKIP_t8_p8                        415  /*      0x19f */

#define COMMIT                      104        /* 0x68 Pattern fails outright
                                                  if backtracking through this
                                               */
#define COMMIT_tb                      208     /*      0x0d0 */
#define COMMIT_t8                      209     /*      0x0d1 */
#define COMMIT_tb_pb                      416  /*      0x1a0 */
#define COMMIT_tb_p8                      417  /*      0x1a1 */
#define COMMIT_t8_pb                      418  /*      0x1a2 */
#define COMMIT_t8_p8                      419  /*      0x1a3 */

#define CUTGROUP                    105        /* 0x69 On failure go to the
                                                  next alternation in the
                                                  group */
#define CUTGROUP_tb                    210     /*      0x0d2 */
#define CUTGROUP_t8                    211     /*      0x0d3 */
#define CUTGROUP_tb_pb                    420  /*      0x1a4 */
#define CUTGROUP_tb_p8                    421  /*      0x1a5 */
#define CUTGROUP_t8_pb                    422  /*      0x1a6 */
#define CUTGROUP_t8_p8                    423  /*      0x1a7 */

#define KEEPS                       106        /* 0x6a $& begins here. */
#define KEEPS_tb                       212     /*      0x0d4 */
#define KEEPS_t8                       213     /*      0x0d5 */
#define KEEPS_tb_pb                       424  /*      0x1a8 */
#define KEEPS_tb_p8                       425  /*      0x1a9 */
#define KEEPS_t8_pb                       426  /*      0x1aa */
#define KEEPS_t8_p8                       427  /*      0x1ab */

#define LOOKBEHIND_END              107        /* 0x6b Return from lookbehind
                                                  (IFMATCH/UNLESSM) and
                                                  validate position */
#define LOOKBEHIND_END_tb              214     /*      0x0d6 */
#define LOOKBEHIND_END_t8              215     /*      0x0d7 */
#define LOOKBEHIND_END_tb_pb              428  /*      0x1ac */
#define LOOKBEHIND_END_tb_p8              429  /*      0x1ad */
#define LOOKBEHIND_END_t8_pb              430  /*      0x1ae */
#define LOOKBEHIND_END_t8_p8              431  /*      0x1af */

#define OPTIMIZED                   108        /* 0x6c Placeholder for dump.
                                               */
#define OPTIMIZED_tb                   216     /*      0x0d8 */
#define OPTIMIZED_t8                   217     /*      0x0d9 */
#define OPTIMIZED_tb_pb                   432  /*      0x1b0 */
#define OPTIMIZED_tb_p8                   433  /*      0x1b1 */
#define OPTIMIZED_t8_pb                   434  /*      0x1b2 */
#define OPTIMIZED_t8_p8                   435  /*      0x1b3 */

#define PSEUDO                      109        /* 0x6d Pseudo opcode for
                                                  internal use. */
#define PSEUDO_tb                      218     /*      0x0da */
#define PSEUDO_t8                      219     /*      0x0db */
#define PSEUDO_tb_pb                      436  /*      0x1b4 */
#define PSEUDO_tb_p8                      437  /*      0x1b5 */
#define PSEUDO_t8_pb                      438  /*      0x1b6 */
#define PSEUDO_t8_p8                      439  /*      0x1b7 */

#define REGEX_SET                   110        /* 0x6e Regex set, temporary
                                                  node used in
                                                  pre-optimization compilation
                                               */
#define REGEX_SET_tb                   220     /*      0x0dc */
#define REGEX_SET_t8                   221     /*      0x0dd */
#define REGEX_SET_tb_pb                   440  /*      0x1b8 */
#define REGEX_SET_tb_p8                   441  /*      0x1b9 */
#define REGEX_SET_t8_pb                   442  /*      0x1ba */
#define REGEX_SET_t8_p8                   443  /*      0x1bb */

	/* ------------ States ------------- */
#define TRIE_next                   111        /* 0x6f state for TRIE */
#define TRIE_next_tb                   222     /*      0x0de */
#define TRIE_next_t8                   223     /*      0x0df */
#define TRIE_next_tb_pb                   444  /*      0x1bc */
#define TRIE_next_tb_p8                   445  /*      0x1bd */
#define TRIE_next_t8_pb                   446  /*      0x1be */
#define TRIE_next_t8_p8                   447  /*      0x1bf */

#define TRIE_next_fail              112        /* 0x70 state for TRIE */
#define TRIE_next_fail_tb              224     /*      0x0e0 */
#define TRIE_next_fail_t8              225     /*      0x0e1 */
#define TRIE_next_fail_tb_pb              448  /*      0x1c0 */
#define TRIE_next_fail_tb_p8              449  /*      0x1c1 */
#define TRIE_next_fail_t8_pb              450  /*      0x1c2 */
#define TRIE_next_fail_t8_p8              451  /*      0x1c3 */

#define EVAL_B                      113        /* 0x71 state for EVAL */
#define EVAL_B_tb                      226     /*      0x0e2 */
#define EVAL_B_t8                      227     /*      0x0e3 */
#define EVAL_B_tb_pb                      452  /*      0x1c4 */
#define EVAL_B_tb_p8                      453  /*      0x1c5 */
#define EVAL_B_t8_pb                      454  /*      0x1c6 */
#define EVAL_B_t8_p8                      455  /*      0x1c7 */

#define EVAL_B_fail                 114        /* 0x72 state for EVAL */
#define EVAL_B_fail_tb                 228     /*      0x0e4 */
#define EVAL_B_fail_t8                 229     /*      0x0e5 */
#define EVAL_B_fail_tb_pb                 456  /*      0x1c8 */
#define EVAL_B_fail_tb_p8                 457  /*      0x1c9 */
#define EVAL_B_fail_t8_pb                 458  /*      0x1ca */
#define EVAL_B_fail_t8_p8                 459  /*      0x1cb */

#define EVAL_postponed_AB           115        /* 0x73 state for EVAL */
#define EVAL_postponed_AB_tb           230     /*      0x0e6 */
#define EVAL_postponed_AB_t8           231     /*      0x0e7 */
#define EVAL_postponed_AB_tb_pb           460  /*      0x1cc */
#define EVAL_postponed_AB_tb_p8           461  /*      0x1cd */
#define EVAL_postponed_AB_t8_pb           462  /*      0x1ce */
#define EVAL_postponed_AB_t8_p8           463  /*      0x1cf */

#define EVAL_postponed_AB_fail      116        /* 0x74 state for EVAL */
#define EVAL_postponed_AB_fail_tb      232     /*      0x0e8 */
#define EVAL_postponed_AB_fail_t8      233     /*      0x0e9 */
#define EVAL_postponed_AB_fail_tb_pb      464  /*      0x1d0 */
#define EVAL_postponed_AB_fail_tb_p8      465  /*      0x1d1 */
#define EVAL_postponed_AB_fail_t8_pb      466  /*      0x1d2 */
#define EVAL_postponed_AB_fail_t8_p8      467  /*      0x1d3 */

#define CURLYX_end                  117        /* 0x75 state for CURLYX */
#define CURLYX_end_tb                  234     /*      0x0ea */
#define CURLYX_end_t8                  235     /*      0x0eb */
#define CURLYX_end_tb_pb                  468  /*      0x1d4 */
#define CURLYX_end_tb_p8                  469  /*      0x1d5 */
#define CURLYX_end_t8_pb                  470  /*      0x1d6 */
#define CURLYX_end_t8_p8                  471  /*      0x1d7 */

#define CURLYX_end_fail             118        /* 0x76 state for CURLYX */
#define CURLYX_end_fail_tb             236     /*      0x0ec */
#define CURLYX_end_fail_t8             237     /*      0x0ed */
#define CURLYX_end_fail_tb_pb             472  /*      0x1d8 */
#define CURLYX_end_fail_tb_p8             473  /*      0x1d9 */
#define CURLYX_end_fail_t8_pb             474  /*      0x1da */
#define CURLYX_end_fail_t8_p8             475  /*      0x1db */

#define WHILEM_A_pre                119        /* 0x77 state for WHILEM */
#define WHILEM_A_pre_tb                238     /*      0x0ee */
#define WHILEM_A_pre_t8                239     /*      0x0ef */
#define WHILEM_A_pre_tb_pb                476  /*      0x1dc */
#define WHILEM_A_pre_tb_p8                477  /*      0x1dd */
#define WHILEM_A_pre_t8_pb                478  /*      0x1de */
#define WHILEM_A_pre_t8_p8                479  /*      0x1df */

#define WHILEM_A_pre_fail           120        /* 0x78 state for WHILEM */
#define WHILEM_A_pre_fail_tb           240     /*      0x0f0 */
#define WHILEM_A_pre_fail_t8           241     /*      0x0f1 */
#define WHILEM_A_pre_fail_tb_pb           480  /*      0x1e0 */
#define WHILEM_A_pre_fail_tb_p8           481  /*      0x1e1 */
#define WHILEM_A_pre_fail_t8_pb           482  /*      0x1e2 */
#define WHILEM_A_pre_fail_t8_p8           483  /*      0x1e3 */

#define WHILEM_A_min                121        /* 0x79 state for WHILEM */
#define WHILEM_A_min_tb                242     /*      0x0f2 */
#define WHILEM_A_min_t8                243     /*      0x0f3 */
#define WHILEM_A_min_tb_pb                484  /*      0x1e4 */
#define WHILEM_A_min_tb_p8                485  /*      0x1e5 */
#define WHILEM_A_min_t8_pb                486  /*      0x1e6 */
#define WHILEM_A_min_t8_p8                487  /*      0x1e7 */

#define WHILEM_A_min_fail           122        /* 0x7a state for WHILEM */
#define WHILEM_A_min_fail_tb           244     /*      0x0f4 */
#define WHILEM_A_min_fail_t8           245     /*      0x0f5 */
#define WHILEM_A_min_fail_tb_pb           488  /*      0x1e8 */
#define WHILEM_A_min_fail_tb_p8           489  /*      0x1e9 */
#define WHILEM_A_min_fail_t8_pb           490  /*      0x1ea */
#define WHILEM_A_min_fail_t8_p8           491  /*      0x1eb */

#define WHILEM_A_max                123        /* 0x7b state for WHILEM */
#define WHILEM_A_max_tb                246     /*      0x0f6 */
#define WHILEM_A_max_t8                247     /*      0x0f7 */
#define WHILEM_A_max_tb_pb                492  /*      0x1ec */
#define WHILEM_A_max_tb_p8                493  /*      0x1ed */
#define WHILEM_A_max_t8_pb                494  /*      0x1ee */
#define WHILEM_A_max_t8_p8                495  /*      0x1ef */

#define WHILEM_A_max_fail           124        /* 0x7c state for WHILEM */
#define WHILEM_A_max_fail_tb           248     /*      0x0f8 */
#define WHILEM_A_max_fail_t8           249     /*      0x0f9 */
#define WHILEM_A_max_fail_tb_pb           496  /*      0x1f0 */
#define WHILEM_A_max_fail_tb_p8           497  /*      0x1f1 */
#define WHILEM_A_max_fail_t8_pb           498  /*      0x1f2 */
#define WHILEM_A_max_fail_t8_p8           499  /*      0x1f3 */

#define WHILEM_B_min                125        /* 0x7d state for WHILEM */
#define WHILEM_B_min_tb                250     /*      0x0fa */
#define WHILEM_B_min_t8                251     /*      0x0fb */
#define WHILEM_B_min_tb_pb                500  /*      0x1f4 */
#define WHILEM_B_min_tb_p8                501  /*      0x1f5 */
#define WHILEM_B_min_t8_pb                502  /*      0x1f6 */
#define WHILEM_B_min_t8_p8                503  /*      0x1f7 */

#define WHILEM_B_min_fail           126        /* 0x7e state for WHILEM */
#define WHILEM_B_min_fail_tb           252     /*      0x0fc */
#define WHILEM_B_min_fail_t8           253     /*      0x0fd */
#define WHILEM_B_min_fail_tb_pb           504  /*      0x1f8 */
#define WHILEM_B_min_fail_tb_p8           505  /*      0x1f9 */
#define WHILEM_B_min_fail_t8_pb           506  /*      0x1fa */
#define WHILEM_B_min_fail_t8_p8           507  /*      0x1fb */

#define WHILEM_B_max                127        /* 0x7f state for WHILEM */
#define WHILEM_B_max_tb                254     /*      0x0fe */
#define WHILEM_B_max_t8                255     /*      0x0ff */
#define WHILEM_B_max_tb_pb                508  /*      0x1fc */
#define WHILEM_B_max_tb_p8                509  /*      0x1fd */
#define WHILEM_B_max_t8_pb                510  /*      0x1fe */
#define WHILEM_B_max_t8_p8                511  /*      0x1ff */

#define WHILEM_B_max_fail           128        /* 0x80 state for WHILEM */
#define WHILEM_B_max_fail_tb           256     /*      0x100 */
#define WHILEM_B_max_fail_t8           257     /*      0x101 */
#define WHILEM_B_max_fail_tb_pb           512  /*      0x200 */
#define WHILEM_B_max_fail_tb_p8           513  /*      0x201 */
#define WHILEM_B_max_fail_t8_pb           514  /*      0x202 */
#define WHILEM_B_max_fail_t8_p8           515  /*      0x203 */

#define BRANCH_next                 129        /* 0x81 state for BRANCH */
#define BRANCH_next_tb                 258     /*      0x102 */
#define BRANCH_next_t8                 259     /*      0x103 */
#define BRANCH_next_tb_pb                 516  /*      0x204 */
#define BRANCH_next_tb_p8                 517  /*      0x205 */
#define BRANCH_next_t8_pb                 518  /*      0x206 */
#define BRANCH_next_t8_p8                 519  /*      0x207 */

#define BRANCH_next_fail            130        /* 0x82 state for BRANCH */
#define BRANCH_next_fail_tb            260     /*      0x104 */
#define BRANCH_next_fail_t8            261     /*      0x105 */
#define BRANCH_next_fail_tb_pb            520  /*      0x208 */
#define BRANCH_next_fail_tb_p8            521  /*      0x209 */
#define BRANCH_next_fail_t8_pb            522  /*      0x20a */
#define BRANCH_next_fail_t8_p8            523  /*      0x20b */

#define CURLYM_A                    131        /* 0x83 state for CURLYM */
#define CURLYM_A_tb                    262     /*      0x106 */
#define CURLYM_A_t8                    263     /*      0x107 */
#define CURLYM_A_tb_pb                    524  /*      0x20c */
#define CURLYM_A_tb_p8                    525  /*      0x20d */
#define CURLYM_A_t8_pb                    526  /*      0x20e */
#define CURLYM_A_t8_p8                    527  /*      0x20f */

#define CURLYM_A_fail               132        /* 0x84 state for CURLYM */
#define CURLYM_A_fail_tb               264     /*      0x108 */
#define CURLYM_A_fail_t8               265     /*      0x109 */
#define CURLYM_A_fail_tb_pb               528  /*      0x210 */
#define CURLYM_A_fail_tb_p8               529  /*      0x211 */
#define CURLYM_A_fail_t8_pb               530  /*      0x212 */
#define CURLYM_A_fail_t8_p8               531  /*      0x213 */

#define CURLYM_B                    133        /* 0x85 state for CURLYM */
#define CURLYM_B_tb                    266     /*      0x10a */
#define CURLYM_B_t8                    267     /*      0x10b */
#define CURLYM_B_tb_pb                    532  /*      0x214 */
#define CURLYM_B_tb_p8                    533  /*      0x215 */
#define CURLYM_B_t8_pb                    534  /*      0x216 */
#define CURLYM_B_t8_p8                    535  /*      0x217 */

#define CURLYM_B_fail               134        /* 0x86 state for CURLYM */
#define CURLYM_B_fail_tb               268     /*      0x10c */
#define CURLYM_B_fail_t8               269     /*      0x10d */
#define CURLYM_B_fail_tb_pb               536  /*      0x218 */
#define CURLYM_B_fail_tb_p8               537  /*      0x219 */
#define CURLYM_B_fail_t8_pb               538  /*      0x21a */
#define CURLYM_B_fail_t8_p8               539  /*      0x21b */

#define IFMATCH_A                   135        /* 0x87 state for IFMATCH */
#define IFMATCH_A_tb                   270     /*      0x10e */
#define IFMATCH_A_t8                   271     /*      0x10f */
#define IFMATCH_A_tb_pb                   540  /*      0x21c */
#define IFMATCH_A_tb_p8                   541  /*      0x21d */
#define IFMATCH_A_t8_pb                   542  /*      0x21e */
#define IFMATCH_A_t8_p8                   543  /*      0x21f */

#define IFMATCH_A_fail              136        /* 0x88 state for IFMATCH */
#define IFMATCH_A_fail_tb              272     /*      0x110 */
#define IFMATCH_A_fail_t8              273     /*      0x111 */
#define IFMATCH_A_fail_tb_pb              544  /*      0x220 */
#define IFMATCH_A_fail_tb_p8              545  /*      0x221 */
#define IFMATCH_A_fail_t8_pb              546  /*      0x222 */
#define IFMATCH_A_fail_t8_p8              547  /*      0x223 */

#define CURLY_B_min                 137        /* 0x89 state for CURLY */
#define CURLY_B_min_tb                 274     /*      0x112 */
#define CURLY_B_min_t8                 275     /*      0x113 */
#define CURLY_B_min_tb_pb                 548  /*      0x224 */
#define CURLY_B_min_tb_p8                 549  /*      0x225 */
#define CURLY_B_min_t8_pb                 550  /*      0x226 */
#define CURLY_B_min_t8_p8                 551  /*      0x227 */

#define CURLY_B_min_fail            138        /* 0x8a state for CURLY */
#define CURLY_B_min_fail_tb            276     /*      0x114 */
#define CURLY_B_min_fail_t8            277     /*      0x115 */
#define CURLY_B_min_fail_tb_pb            552  /*      0x228 */
#define CURLY_B_min_fail_tb_p8            553  /*      0x229 */
#define CURLY_B_min_fail_t8_pb            554  /*      0x22a */
#define CURLY_B_min_fail_t8_p8            555  /*      0x22b */

#define CURLY_B_max                 139        /* 0x8b state for CURLY */
#define CURLY_B_max_tb                 278     /*      0x116 */
#define CURLY_B_max_t8                 279     /*      0x117 */
#define CURLY_B_max_tb_pb                 556  /*      0x22c */
#define CURLY_B_max_tb_p8                 557  /*      0x22d */
#define CURLY_B_max_t8_pb                 558  /*      0x22e */
#define CURLY_B_max_t8_p8                 559  /*      0x22f */

#define CURLY_B_max_fail            140        /* 0x8c state for CURLY */
#define CURLY_B_max_fail_tb            280     /*      0x118 */
#define CURLY_B_max_fail_t8            281     /*      0x119 */
#define CURLY_B_max_fail_tb_pb            560  /*      0x230 */
#define CURLY_B_max_fail_tb_p8            561  /*      0x231 */
#define CURLY_B_max_fail_t8_pb            562  /*      0x232 */
#define CURLY_B_max_fail_t8_p8            563  /*      0x233 */

#define COMMIT_next                 141        /* 0x8d state for COMMIT */
#define COMMIT_next_tb                 282     /*      0x11a */
#define COMMIT_next_t8                 283     /*      0x11b */
#define COMMIT_next_tb_pb                 564  /*      0x234 */
#define COMMIT_next_tb_p8                 565  /*      0x235 */
#define COMMIT_next_t8_pb                 566  /*      0x236 */
#define COMMIT_next_t8_p8                 567  /*      0x237 */

#define COMMIT_next_fail            142        /* 0x8e state for COMMIT */
#define COMMIT_next_fail_tb            284     /*      0x11c */
#define COMMIT_next_fail_t8            285     /*      0x11d */
#define COMMIT_next_fail_tb_pb            568  /*      0x238 */
#define COMMIT_next_fail_tb_p8            569  /*      0x239 */
#define COMMIT_next_fail_t8_pb            570  /*      0x23a */
#define COMMIT_next_fail_t8_p8            571  /*      0x23b */

#define MARKPOINT_next              143        /* 0x8f state for MARKPOINT */
#define MARKPOINT_next_tb              286     /*      0x11e */
#define MARKPOINT_next_t8              287     /*      0x11f */
#define MARKPOINT_next_tb_pb              572  /*      0x23c */
#define MARKPOINT_next_tb_p8              573  /*      0x23d */
#define MARKPOINT_next_t8_pb              574  /*      0x23e */
#define MARKPOINT_next_t8_p8              575  /*      0x23f */

#define MARKPOINT_next_fail         144        /* 0x90 state for MARKPOINT */
#define MARKPOINT_next_fail_tb         288     /*      0x120 */
#define MARKPOINT_next_fail_t8         289     /*      0x121 */
#define MARKPOINT_next_fail_tb_pb         576  /*      0x240 */
#define MARKPOINT_next_fail_tb_p8         577  /*      0x241 */
#define MARKPOINT_next_fail_t8_pb         578  /*      0x242 */
#define MARKPOINT_next_fail_t8_p8         579  /*      0x243 */

#define SKIP_next                   145        /* 0x91 state for SKIP */
#define SKIP_next_tb                   290     /*      0x122 */
#define SKIP_next_t8                   291     /*      0x123 */
#define SKIP_next_tb_pb                   580  /*      0x244 */
#define SKIP_next_tb_p8                   581  /*      0x245 */
#define SKIP_next_t8_pb                   582  /*      0x246 */
#define SKIP_next_t8_p8                   583  /*      0x247 */

#define SKIP_next_fail              146        /* 0x92 state for SKIP */
#define SKIP_next_fail_tb              292     /*      0x124 */
#define SKIP_next_fail_t8              293     /*      0x125 */
#define SKIP_next_fail_tb_pb              584  /*      0x248 */
#define SKIP_next_fail_tb_p8              585  /*      0x249 */
#define SKIP_next_fail_t8_pb              586  /*      0x24a */
#define SKIP_next_fail_t8_p8              587  /*      0x24b */

#define CUTGROUP_next               147        /* 0x93 state for CUTGROUP */
#define CUTGROUP_next_tb               294     /*      0x126 */
#define CUTGROUP_next_t8               295     /*      0x127 */
#define CUTGROUP_next_tb_pb               588  /*      0x24c */
#define CUTGROUP_next_tb_p8               589  /*      0x24d */
#define CUTGROUP_next_t8_pb               590  /*      0x24e */
#define CUTGROUP_next_t8_p8               591  /*      0x24f */

#define CUTGROUP_next_fail          148        /* 0x94 state for CUTGROUP */
#define CUTGROUP_next_fail_tb          296     /*      0x128 */
#define CUTGROUP_next_fail_t8          297     /*      0x129 */
#define CUTGROUP_next_fail_tb_pb          592  /*      0x250 */
#define CUTGROUP_next_fail_tb_p8          593  /*      0x251 */
#define CUTGROUP_next_fail_t8_pb          594  /*      0x252 */
#define CUTGROUP_next_fail_t8_p8          595  /*      0x253 */

#define KEEPS_next                  149        /* 0x95 state for KEEPS */
#define KEEPS_next_tb                  298     /*      0x12a */
#define KEEPS_next_t8                  299     /*      0x12b */
#define KEEPS_next_tb_pb                  596  /*      0x254 */
#define KEEPS_next_tb_p8                  597  /*      0x255 */
#define KEEPS_next_t8_pb                  598  /*      0x256 */
#define KEEPS_next_t8_p8                  599  /*      0x257 */

#define KEEPS_next_fail             150        /* 0x96 state for KEEPS */
#define KEEPS_next_fail_tb             300     /*      0x12c */
#define KEEPS_next_fail_t8             301     /*      0x12d */
#define KEEPS_next_fail_tb_pb             600  /*      0x258 */
#define KEEPS_next_fail_tb_p8             601  /*      0x259 */
#define KEEPS_next_fail_t8_pb             602  /*      0x25a */
#define KEEPS_next_fail_t8_p8             603  /*      0x25b */


/* PL_regkind[] What type of regop or state is this. */

#ifndef DOINIT
EXTCONST U8 PL_regkind[];
#else
EXTCONST U8 PL_regkind[] = {
	END,      	/* END                    */
	END,      	/* SUCCEED                */
	BOL,      	/* SBOL                   */
	BOL,      	/* MBOL                   */
	EOL,      	/* SEOL                   */
	EOL,      	/* MEOL                   */
	EOL,      	/* EOS                    */
	GPOS,     	/* GPOS                   */
	BOUND,    	/* BOUND                  */
	BOUND,    	/* BOUNDL                 */
	BOUND,    	/* BOUNDU                 */
	BOUND,    	/* BOUNDA                 */
	NBOUND,   	/* NBOUND                 */
	NBOUND,   	/* NBOUNDL                */
	NBOUND,   	/* NBOUNDU                */
	NBOUND,   	/* NBOUNDA                */
	REG_ANY,  	/* REG_ANY                */
	REG_ANY,  	/* SANY                   */
	ANYOF,    	/* ANYOF                  */
	ANYOF,    	/* ANYOFD                 */
	ANYOF,    	/* ANYOFL                 */
	ANYOF,    	/* ANYOFPOSIXL            */
	ANYOF,    	/* ANYOFH                 */
	ANYOF,    	/* ANYOFHb                */
	ANYOF,    	/* ANYOFHr                */
	ANYOF,    	/* ANYOFHs                */
	ANYOFR,   	/* ANYOFR                 */
	ANYOFR,   	/* ANYOFRb                */
	ANYOFM,   	/* ANYOFM                 */
	ANYOFM,   	/* NANYOFM                */
	POSIXD,   	/* POSIXD                 */
	POSIXD,   	/* POSIXL                 */
	POSIXD,   	/* POSIXU                 */
	POSIXD,   	/* POSIXA                 */
	NPOSIXD,  	/* NPOSIXD                */
	NPOSIXD,  	/* NPOSIXL                */
	NPOSIXD,  	/* NPOSIXU                */
	NPOSIXD,  	/* NPOSIXA                */
	CLUMP,    	/* CLUMP                  */
	BRANCH,   	/* BRANCH                 */
	EXACT,    	/* EXACT                  */
	EXACT,    	/* LEXACT                 */
	EXACT,    	/* EXACTL                 */
	EXACT,    	/* EXACTF                 */
	EXACT,    	/* EXACTFL                */
	EXACT,    	/* EXACTFU                */
	EXACT,    	/* EXACTFAA               */
	EXACT,    	/* EXACTFAA_NO_TRIE       */
	EXACT,    	/* EXACTFUP               */
	EXACT,    	/* EXACTFLU8              */
	EXACT,    	/* EXACT_REQ8             */
	EXACT,    	/* LEXACT_REQ8            */
	EXACT,    	/* EXACTFU_REQ8           */
	EXACT,    	/* EXACTFU_S_EDGE         */
	LNBREAK,  	/* LNBREAK                */
	TRIE,     	/* TRIE                   */
	TRIE,     	/* TRIEC                  */
	TRIE,     	/* AHOCORASICK            */
	TRIE,     	/* AHOCORASICKC           */
	NOTHING,  	/* NOTHING                */
	NOTHING,  	/* TAIL                   */
	STAR,     	/* STAR                   */
	PLUS,     	/* PLUS                   */
	CURLY,    	/* CURLY                  */
	CURLY,    	/* CURLYN                 */
	CURLY,    	/* CURLYM                 */
	CURLY,    	/* CURLYX                 */
	WHILEM,   	/* WHILEM                 */
	OPEN,     	/* OPEN                   */
	CLOSE,    	/* CLOSE                  */
	SROPEN,   	/* SROPEN                 */
	SRCLOSE,  	/* SRCLOSE                */
	REF,      	/* REF                    */
	REF,      	/* REFF                   */
	REF,      	/* REFFL                  */
	REF,      	/* REFFU                  */
	REF,      	/* REFFA                  */
	REF,      	/* REFN                   */
	REF,      	/* REFFN                  */
	REF,      	/* REFFLN                 */
	REF,      	/* REFFUN                 */
	REF,      	/* REFFAN                 */
	LONGJMP,  	/* LONGJMP                */
	BRANCHJ,  	/* BRANCHJ                */
	BRANCHJ,  	/* IFMATCH                */
	BRANCHJ,  	/* UNLESSM                */
	BRANCHJ,  	/* SUSPEND                */
	BRANCHJ,  	/* IFTHEN                 */
	GROUPP,   	/* GROUPP                 */
	EVAL,     	/* EVAL                   */
	MINMOD,   	/* MINMOD                 */
	LOGICAL,  	/* LOGICAL                */
	BRANCHJ,  	/* RENUM                  */
	GOSUB,    	/* GOSUB                  */
	GROUPPN,  	/* GROUPPN                */
	INSUBP,   	/* INSUBP                 */
	DEFINEP,  	/* DEFINEP                */
	ENDLIKE,  	/* ENDLIKE                */
	ENDLIKE,  	/* OPFAIL                 */
	ENDLIKE,  	/* ACCEPT                 */
	VERB,     	/* VERB                   */
	VERB,     	/* PRUNE                  */
	VERB,     	/* MARKPOINT              */
	VERB,     	/* SKIP                   */
	VERB,     	/* COMMIT                 */
	VERB,     	/* CUTGROUP               */
	KEEPS,    	/* KEEPS                  */
	END,      	/* LOOKBEHIND_END         */
	NOTHING,  	/* OPTIMIZED              */
	PSEUDO,   	/* PSEUDO                 */
	REGEX_SET,	/* REGEX_SET              */
	/* ------------ States ------------- */
	TRIE,     	/* TRIE_next              */
	TRIE,     	/* TRIE_next_fail         */
	EVAL,     	/* EVAL_B                 */
	EVAL,     	/* EVAL_B_fail            */
	EVAL,     	/* EVAL_postponed_AB      */
	EVAL,     	/* EVAL_postponed_AB_fail */
	CURLYX,   	/* CURLYX_end             */
	CURLYX,   	/* CURLYX_end_fail        */
	WHILEM,   	/* WHILEM_A_pre           */
	WHILEM,   	/* WHILEM_A_pre_fail      */
	WHILEM,   	/* WHILEM_A_min           */
	WHILEM,   	/* WHILEM_A_min_fail      */
	WHILEM,   	/* WHILEM_A_max           */
	WHILEM,   	/* WHILEM_A_max_fail      */
	WHILEM,   	/* WHILEM_B_min           */
	WHILEM,   	/* WHILEM_B_min_fail      */
	WHILEM,   	/* WHILEM_B_max           */
	WHILEM,   	/* WHILEM_B_max_fail      */
	BRANCH,   	/* BRANCH_next            */
	BRANCH,   	/* BRANCH_next_fail       */
	CURLYM,   	/* CURLYM_A               */
	CURLYM,   	/* CURLYM_A_fail          */
	CURLYM,   	/* CURLYM_B               */
	CURLYM,   	/* CURLYM_B_fail          */
	IFMATCH,  	/* IFMATCH_A              */
	IFMATCH,  	/* IFMATCH_A_fail         */
	CURLY,    	/* CURLY_B_min            */
	CURLY,    	/* CURLY_B_min_fail       */
	CURLY,    	/* CURLY_B_max            */
	CURLY,    	/* CURLY_B_max_fail       */
	COMMIT,   	/* COMMIT_next            */
	COMMIT,   	/* COMMIT_next_fail       */
	MARKPOINT,	/* MARKPOINT_next         */
	MARKPOINT,	/* MARKPOINT_next_fail    */
	SKIP,     	/* SKIP_next              */
	SKIP,     	/* SKIP_next_fail         */
	CUTGROUP, 	/* CUTGROUP_next          */
	CUTGROUP, 	/* CUTGROUP_next_fail     */
	KEEPS,    	/* KEEPS_next             */
	KEEPS,    	/* KEEPS_next_fail        */
};
#endif

#ifdef REG_COMP_C

/* regarglen[] - How large is the argument part of the node (in regnodes) */

static const U8 regarglen[] = {
	0,                                   	/* END          */
	0,                                   	/* SUCCEED      */
	0,                                   	/* SBOL         */
	0,                                   	/* MBOL         */
	0,                                   	/* SEOL         */
	0,                                   	/* MEOL         */
	0,                                   	/* EOS          */
	0,                                   	/* GPOS         */
	0,                                   	/* BOUND        */
	0,                                   	/* BOUNDL       */
	0,                                   	/* BOUNDU       */
	0,                                   	/* BOUNDA       */
	0,                                   	/* NBOUND       */
	0,                                   	/* NBOUNDL      */
	0,                                   	/* NBOUNDU      */
	0,                                   	/* NBOUNDA      */
	0,                                   	/* REG_ANY      */
	0,                                   	/* SANY         */
	EXTRA_SIZE(struct regnode_charclass),	/* ANYOF        */
	EXTRA_SIZE(struct regnode_charclass),	/* ANYOFD       */
	EXTRA_SIZE(struct regnode_charclass),	/* ANYOFL       */
	EXTRA_SIZE(struct regnode_charclass_posixl),	/* ANYOFPOSIXL  */
	EXTRA_SIZE(struct regnode_1),        	/* ANYOFH       */
	EXTRA_SIZE(struct regnode_1),        	/* ANYOFHb      */
	EXTRA_SIZE(struct regnode_1),        	/* ANYOFHr      */
	EXTRA_SIZE(struct regnode_1),        	/* ANYOFHs      */
	EXTRA_SIZE(struct regnode_1),        	/* ANYOFR       */
	EXTRA_SIZE(struct regnode_1),        	/* ANYOFRb      */
	EXTRA_SIZE(struct regnode_1),        	/* ANYOFM       */
	EXTRA_SIZE(struct regnode_1),        	/* NANYOFM      */
	0,                                   	/* POSIXD       */
	0,                                   	/* POSIXL       */
	0,                                   	/* POSIXU       */
	0,                                   	/* POSIXA       */
	0,                                   	/* NPOSIXD      */
	0,                                   	/* NPOSIXL      */
	0,                                   	/* NPOSIXU      */
	0,                                   	/* NPOSIXA      */
	0,                                   	/* CLUMP        */
	0,                                   	/* BRANCH       */
	0,                                   	/* EXACT        */
	EXTRA_SIZE(struct regnode_1),        	/* LEXACT       */
	0,                                   	/* EXACTL       */
	0,                                   	/* EXACTF       */
	0,                                   	/* EXACTFL      */
	0,                                   	/* EXACTFU      */
	0,                                   	/* EXACTFAA     */
	0,                                   	/* EXACTFAA_NO_TRIE */
	0,                                   	/* EXACTFUP     */
	0,                                   	/* EXACTFLU8    */
	0,                                   	/* EXACT_REQ8   */
	EXTRA_SIZE(struct regnode_1),        	/* LEXACT_REQ8  */
	0,                                   	/* EXACTFU_REQ8 */
	0,                                   	/* EXACTFU_S_EDGE */
	0,                                   	/* LNBREAK      */
	EXTRA_SIZE(struct regnode_1),        	/* TRIE         */
	EXTRA_SIZE(struct regnode_charclass),	/* TRIEC        */
	EXTRA_SIZE(struct regnode_1),        	/* AHOCORASICK  */
	EXTRA_SIZE(struct regnode_charclass),	/* AHOCORASICKC */
	0,                                   	/* NOTHING      */
	0,                                   	/* TAIL         */
	0,                                   	/* STAR         */
	0,                                   	/* PLUS         */
	EXTRA_SIZE(struct regnode_2),        	/* CURLY        */
	EXTRA_SIZE(struct regnode_2),        	/* CURLYN       */
	EXTRA_SIZE(struct regnode_2),        	/* CURLYM       */
	EXTRA_SIZE(struct regnode_2),        	/* CURLYX       */
	0,                                   	/* WHILEM       */
	EXTRA_SIZE(struct regnode_1),        	/* OPEN         */
	EXTRA_SIZE(struct regnode_1),        	/* CLOSE        */
	0,                                   	/* SROPEN       */
	0,                                   	/* SRCLOSE      */
	EXTRA_SIZE(struct regnode_1),        	/* REF          */
	EXTRA_SIZE(struct regnode_1),        	/* REFF         */
	EXTRA_SIZE(struct regnode_1),        	/* REFFL        */
	EXTRA_SIZE(struct regnode_1),        	/* REFFU        */
	EXTRA_SIZE(struct regnode_1),        	/* REFFA        */
	EXTRA_SIZE(struct regnode_1),        	/* REFN         */
	EXTRA_SIZE(struct regnode_1),        	/* REFFN        */
	EXTRA_SIZE(struct regnode_1),        	/* REFFLN       */
	EXTRA_SIZE(struct regnode_1),        	/* REFFUN       */
	EXTRA_SIZE(struct regnode_1),        	/* REFFAN       */
	EXTRA_SIZE(struct regnode_1),        	/* LONGJMP      */
	EXTRA_SIZE(struct regnode_1),        	/* BRANCHJ      */
	EXTRA_SIZE(struct regnode_1),        	/* IFMATCH      */
	EXTRA_SIZE(struct regnode_1),        	/* UNLESSM      */
	EXTRA_SIZE(struct regnode_1),        	/* SUSPEND      */
	EXTRA_SIZE(struct regnode_1),        	/* IFTHEN       */
	EXTRA_SIZE(struct regnode_1),        	/* GROUPP       */
	EXTRA_SIZE(struct regnode_2L),       	/* EVAL         */
	0,                                   	/* MINMOD       */
	0,                                   	/* LOGICAL      */
	EXTRA_SIZE(struct regnode_1),        	/* RENUM        */
	EXTRA_SIZE(struct regnode_2L),       	/* GOSUB        */
	EXTRA_SIZE(struct regnode_1),        	/* GROUPPN      */
	EXTRA_SIZE(struct regnode_1),        	/* INSUBP       */
	EXTRA_SIZE(struct regnode_1),        	/* DEFINEP      */
	0,                                   	/* ENDLIKE      */
	EXTRA_SIZE(struct regnode_1),        	/* OPFAIL       */
	EXTRA_SIZE(struct regnode_2L),       	/* ACCEPT       */
	EXTRA_SIZE(struct regnode_1),        	/* VERB         */
	EXTRA_SIZE(struct regnode_1),        	/* PRUNE        */
	EXTRA_SIZE(struct regnode_1),        	/* MARKPOINT    */
	EXTRA_SIZE(struct regnode_1),        	/* SKIP         */
	EXTRA_SIZE(struct regnode_1),        	/* COMMIT       */
	EXTRA_SIZE(struct regnode_1),        	/* CUTGROUP     */
	0,                                   	/* KEEPS        */
	0,                                   	/* LOOKBEHIND_END */
	0,                                   	/* OPTIMIZED    */
	0,                                   	/* PSEUDO       */
	EXTRA_SIZE(struct regnode_p),        	/* REGEX_SET    */
};

/* reg_off_by_arg[] - Which argument holds the offset to the next node */

static const char reg_off_by_arg[] = {
	0,	/* END          */
	0,	/* SUCCEED      */
	0,	/* SBOL         */
	0,	/* MBOL         */
	0,	/* SEOL         */
	0,	/* MEOL         */
	0,	/* EOS          */
	0,	/* GPOS         */
	0,	/* BOUND        */
	0,	/* BOUNDL       */
	0,	/* BOUNDU       */
	0,	/* BOUNDA       */
	0,	/* NBOUND       */
	0,	/* NBOUNDL      */
	0,	/* NBOUNDU      */
	0,	/* NBOUNDA      */
	0,	/* REG_ANY      */
	0,	/* SANY         */
	0,	/* ANYOF        */
	0,	/* ANYOFD       */
	0,	/* ANYOFL       */
	0,	/* ANYOFPOSIXL  */
	0,	/* ANYOFH       */
	0,	/* ANYOFHb      */
	0,	/* ANYOFHr      */
	0,	/* ANYOFHs      */
	0,	/* ANYOFR       */
	0,	/* ANYOFRb      */
	0,	/* ANYOFM       */
	0,	/* NANYOFM      */
	0,	/* POSIXD       */
	0,	/* POSIXL       */
	0,	/* POSIXU       */
	0,	/* POSIXA       */
	0,	/* NPOSIXD      */
	0,	/* NPOSIXL      */
	0,	/* NPOSIXU      */
	0,	/* NPOSIXA      */
	0,	/* CLUMP        */
	0,	/* BRANCH       */
	0,	/* EXACT        */
	0,	/* LEXACT       */
	0,	/* EXACTL       */
	0,	/* EXACTF       */
	0,	/* EXACTFL      */
	0,	/* EXACTFU      */
	0,	/* EXACTFAA     */
	0,	/* EXACTFAA_NO_TRIE */
	0,	/* EXACTFUP     */
	0,	/* EXACTFLU8    */
	0,	/* EXACT_REQ8   */
	0,	/* LEXACT_REQ8  */
	0,	/* EXACTFU_REQ8 */
	0,	/* EXACTFU_S_EDGE */
	0,	/* LNBREAK      */
	0,	/* TRIE         */
	0,	/* TRIEC        */
	0,	/* AHOCORASICK  */
	0,	/* AHOCORASICKC */
	0,	/* NOTHING      */
	0,	/* TAIL         */
	0,	/* STAR         */
	0,	/* PLUS         */
	0,	/* CURLY        */
	0,	/* CURLYN       */
	0,	/* CURLYM       */
	0,	/* CURLYX       */
	0,	/* WHILEM       */
	0,	/* OPEN         */
	0,	/* CLOSE        */
	0,	/* SROPEN       */
	0,	/* SRCLOSE      */
	0,	/* REF          */
	0,	/* REFF         */
	0,	/* REFFL        */
	0,	/* REFFU        */
	0,	/* REFFA        */
	0,	/* REFN         */
	0,	/* REFFN        */
	0,	/* REFFLN       */
	0,	/* REFFUN       */
	0,	/* REFFAN       */
	1,	/* LONGJMP      */
	1,	/* BRANCHJ      */
	1,	/* IFMATCH      */
	1,	/* UNLESSM      */
	1,	/* SUSPEND      */
	1,	/* IFTHEN       */
	0,	/* GROUPP       */
	0,	/* EVAL         */
	0,	/* MINMOD       */
	0,	/* LOGICAL      */
	1,	/* RENUM        */
	0,	/* GOSUB        */
	0,	/* GROUPPN      */
	0,	/* INSUBP       */
	0,	/* DEFINEP      */
	0,	/* ENDLIKE      */
	0,	/* OPFAIL       */
	0,	/* ACCEPT       */
	0,	/* VERB         */
	0,	/* PRUNE        */
	0,	/* MARKPOINT    */
	0,	/* SKIP         */
	0,	/* COMMIT       */
	0,	/* CUTGROUP     */
	0,	/* KEEPS        */
	0,	/* LOOKBEHIND_END */
	0,	/* OPTIMIZED    */
	0,	/* PSEUDO       */
	0,	/* REGEX_SET    */
};

#endif /* REG_COMP_C */


/* reg_name[] - Opcode/state names in string form, for debugging */

#ifndef DOINIT
EXTCONST char * PL_reg_name[];
#else
EXTCONST char * const PL_reg_name[] = {
	"END",                   	/* 0000 */
	"SUCCEED",               	/* 0x01 */
	"SBOL",                  	/* 0x02 */
	"MBOL",                  	/* 0x03 */
	"SEOL",                  	/* 0x04 */
	"MEOL",                  	/* 0x05 */
	"EOS",                   	/* 0x06 */
	"GPOS",                  	/* 0x07 */
	"BOUND",                 	/* 0x08 */
	"BOUNDL",                	/* 0x09 */
	"BOUNDU",                	/* 0x0a */
	"BOUNDA",                	/* 0x0b */
	"NBOUND",                	/* 0x0c */
	"NBOUNDL",               	/* 0x0d */
	"NBOUNDU",               	/* 0x0e */
	"NBOUNDA",               	/* 0x0f */
	"REG_ANY",               	/* 0x10 */
	"SANY",                  	/* 0x11 */
	"ANYOF",                 	/* 0x12 */
	"ANYOFD",                	/* 0x13 */
	"ANYOFL",                	/* 0x14 */
	"ANYOFPOSIXL",           	/* 0x15 */
	"ANYOFH",                	/* 0x16 */
	"ANYOFHb",               	/* 0x17 */
	"ANYOFHr",               	/* 0x18 */
	"ANYOFHs",               	/* 0x19 */
	"ANYOFR",                	/* 0x1a */
	"ANYOFRb",               	/* 0x1b */
	"ANYOFM",                	/* 0x1c */
	"NANYOFM",               	/* 0x1d */
	"POSIXD",                	/* 0x1e */
	"POSIXL",                	/* 0x1f */
	"POSIXU",                	/* 0x20 */
	"POSIXA",                	/* 0x21 */
	"NPOSIXD",               	/* 0x22 */
	"NPOSIXL",               	/* 0x23 */
	"NPOSIXU",               	/* 0x24 */
	"NPOSIXA",               	/* 0x25 */
	"CLUMP",                 	/* 0x26 */
	"BRANCH",                	/* 0x27 */
	"EXACT",                 	/* 0x28 */
	"LEXACT",                	/* 0x29 */
	"EXACTL",                	/* 0x2a */
	"EXACTF",                	/* 0x2b */
	"EXACTFL",               	/* 0x2c */
	"EXACTFU",               	/* 0x2d */
	"EXACTFAA",              	/* 0x2e */
	"EXACTFAA_NO_TRIE",      	/* 0x2f */
	"EXACTFUP",              	/* 0x30 */
	"EXACTFLU8",             	/* 0x31 */
	"EXACT_REQ8",            	/* 0x32 */
	"LEXACT_REQ8",           	/* 0x33 */
	"EXACTFU_REQ8",          	/* 0x34 */
	"EXACTFU_S_EDGE",        	/* 0x35 */
	"LNBREAK",               	/* 0x36 */
	"TRIE",                  	/* 0x37 */
	"TRIEC",                 	/* 0x38 */
	"AHOCORASICK",           	/* 0x39 */
	"AHOCORASICKC",          	/* 0x3a */
	"NOTHING",               	/* 0x3b */
	"TAIL",                  	/* 0x3c */
	"STAR",                  	/* 0x3d */
	"PLUS",                  	/* 0x3e */
	"CURLY",                 	/* 0x3f */
	"CURLYN",                	/* 0x40 */
	"CURLYM",                	/* 0x41 */
	"CURLYX",                	/* 0x42 */
	"WHILEM",                	/* 0x43 */
	"OPEN",                  	/* 0x44 */
	"CLOSE",                 	/* 0x45 */
	"SROPEN",                	/* 0x46 */
	"SRCLOSE",               	/* 0x47 */
	"REF",                   	/* 0x48 */
	"REFF",                  	/* 0x49 */
	"REFFL",                 	/* 0x4a */
	"REFFU",                 	/* 0x4b */
	"REFFA",                 	/* 0x4c */
	"REFN",                  	/* 0x4d */
	"REFFN",                 	/* 0x4e */
	"REFFLN",                	/* 0x4f */
	"REFFUN",                	/* 0x50 */
	"REFFAN",                	/* 0x51 */
	"LONGJMP",               	/* 0x52 */
	"BRANCHJ",               	/* 0x53 */
	"IFMATCH",               	/* 0x54 */
	"UNLESSM",               	/* 0x55 */
	"SUSPEND",               	/* 0x56 */
	"IFTHEN",                	/* 0x57 */
	"GROUPP",                	/* 0x58 */
	"EVAL",                  	/* 0x59 */
	"MINMOD",                	/* 0x5a */
	"LOGICAL",               	/* 0x5b */
	"RENUM",                 	/* 0x5c */
	"GOSUB",                 	/* 0x5d */
	"GROUPPN",               	/* 0x5e */
	"INSUBP",                	/* 0x5f */
	"DEFINEP",               	/* 0x60 */
	"ENDLIKE",               	/* 0x61 */
	"OPFAIL",                	/* 0x62 */
	"ACCEPT",                	/* 0x63 */
	"VERB",                  	/* 0x64 */
	"PRUNE",                 	/* 0x65 */
	"MARKPOINT",             	/* 0x66 */
	"SKIP",                  	/* 0x67 */
	"COMMIT",                	/* 0x68 */
	"CUTGROUP",              	/* 0x69 */
	"KEEPS",                 	/* 0x6a */
	"LOOKBEHIND_END",        	/* 0x6b */
	"OPTIMIZED",             	/* 0x6c */
	"PSEUDO",                	/* 0x6d */
	"REGEX_SET",             	/* 0x6e */
	/* ------------ States ------------- */
	"TRIE_next",             	/* REGNODE_MAX +0x01 */
	"TRIE_next_fail",        	/* REGNODE_MAX +0x02 */
	"EVAL_B",                	/* REGNODE_MAX +0x03 */
	"EVAL_B_fail",           	/* REGNODE_MAX +0x04 */
	"EVAL_postponed_AB",     	/* REGNODE_MAX +0x05 */
	"EVAL_postponed_AB_fail",	/* REGNODE_MAX +0x06 */
	"CURLYX_end",            	/* REGNODE_MAX +0x07 */
	"CURLYX_end_fail",       	/* REGNODE_MAX +0x08 */
	"WHILEM_A_pre",          	/* REGNODE_MAX +0x09 */
	"WHILEM_A_pre_fail",     	/* REGNODE_MAX +0x0a */
	"WHILEM_A_min",          	/* REGNODE_MAX +0x0b */
	"WHILEM_A_min_fail",     	/* REGNODE_MAX +0x0c */
	"WHILEM_A_max",          	/* REGNODE_MAX +0x0d */
	"WHILEM_A_max_fail",     	/* REGNODE_MAX +0x0e */
	"WHILEM_B_min",          	/* REGNODE_MAX +0x0f */
	"WHILEM_B_min_fail",     	/* REGNODE_MAX +0x10 */
	"WHILEM_B_max",          	/* REGNODE_MAX +0x11 */
	"WHILEM_B_max_fail",     	/* REGNODE_MAX +0x12 */
	"BRANCH_next",           	/* REGNODE_MAX +0x13 */
	"BRANCH_next_fail",      	/* REGNODE_MAX +0x14 */
	"CURLYM_A",              	/* REGNODE_MAX +0x15 */
	"CURLYM_A_fail",         	/* REGNODE_MAX +0x16 */
	"CURLYM_B",              	/* REGNODE_MAX +0x17 */
	"CURLYM_B_fail",         	/* REGNODE_MAX +0x18 */
	"IFMATCH_A",             	/* REGNODE_MAX +0x19 */
	"IFMATCH_A_fail",        	/* REGNODE_MAX +0x1a */
	"CURLY_B_min",           	/* REGNODE_MAX +0x1b */
	"CURLY_B_min_fail",      	/* REGNODE_MAX +0x1c */
	"CURLY_B_max",           	/* REGNODE_MAX +0x1d */
	"CURLY_B_max_fail",      	/* REGNODE_MAX +0x1e */
	"COMMIT_next",           	/* REGNODE_MAX +0x1f */
	"COMMIT_next_fail",      	/* REGNODE_MAX +0x20 */
	"MARKPOINT_next",        	/* REGNODE_MAX +0x21 */
	"MARKPOINT_next_fail",   	/* REGNODE_MAX +0x22 */
	"SKIP_next",             	/* REGNODE_MAX +0x23 */
	"SKIP_next_fail",        	/* REGNODE_MAX +0x24 */
	"CUTGROUP_next",         	/* REGNODE_MAX +0x25 */
	"CUTGROUP_next_fail",    	/* REGNODE_MAX +0x26 */
	"KEEPS_next",            	/* REGNODE_MAX +0x27 */
	"KEEPS_next_fail",       	/* REGNODE_MAX +0x28 */
};
#endif /* DOINIT */

/* PL_reg_extflags_name[] - Opcode/state names in string form, for debugging */

#ifndef DOINIT
EXTCONST char * PL_reg_extflags_name[];
#else
EXTCONST char * const PL_reg_extflags_name[] = {
	/* Bits in extflags defined: 11111111111111110000111111111111 */
	"MULTILINE",        /* 0x00000001 */
	"SINGLELINE",       /* 0x00000002 */
	"FOLD",             /* 0x00000004 */
	"EXTENDED",         /* 0x00000008 */
	"EXTENDED_MORE",    /* 0x00000010 */
	"NOCAPTURE",        /* 0x00000020 */
	"KEEPCOPY",         /* 0x00000040 */
	"CHARSET0",         /* 0x00000080 : "CHARSET" - 0x00000380 */
	"CHARSET1",         /* 0x00000100 : "CHARSET" - 0x00000380 */
	"CHARSET2",         /* 0x00000200 : "CHARSET" - 0x00000380 */
	"STRICT",           /* 0x00000400 */
	"SPLIT",            /* 0x00000800 */
	"UNUSED_BIT_12",    /* 0x00001000 */
	"UNUSED_BIT_13",    /* 0x00002000 */
	"UNUSED_BIT_14",    /* 0x00004000 */
	"UNUSED_BIT_15",    /* 0x00008000 */
	"NO_INPLACE_SUBST", /* 0x00010000 */
	"EVAL_SEEN",        /* 0x00020000 */
	"UNBOUNDED_QUANTIFIER_SEEN",/* 0x00040000 */
	"CHECK_ALL",        /* 0x00080000 */
	"MATCH_UTF8",       /* 0x00100000 */
	"USE_INTUIT_NOML",  /* 0x00200000 */
	"USE_INTUIT_ML",    /* 0x00400000 */
	"INTUIT_TAIL",      /* 0x00800000 */
	"IS_ANCHORED",      /* 0x01000000 */
	"COPY_DONE",        /* 0x02000000 */
	"TAINTED_SEEN",     /* 0x04000000 */
	"TAINTED",          /* 0x08000000 */
	"START_ONLY",       /* 0x10000000 */
	"SKIPWHITE",        /* 0x20000000 */
	"WHITE",            /* 0x40000000 */
	"NULL",             /* 0x80000000 */
};
#endif /* DOINIT */

#ifdef DEBUGGING
#  define REG_EXTFLAGS_NAME_SIZE 32
#endif

/* PL_reg_intflags_name[] - Opcode/state names in string form, for debugging */

#ifndef DOINIT
EXTCONST char * PL_reg_intflags_name[];
#else
EXTCONST char * const PL_reg_intflags_name[] = {
	"SKIP",                       /* 0x00000001 - PREGf_SKIP */
	"IMPLICIT",                   /* 0x00000002 - PREGf_IMPLICIT -  Converted .* to ^.*  */
	"NAUGHTY",                    /* 0x00000004 - PREGf_NAUGHTY -  how exponential is this pattern?  */
	"VERBARG_SEEN",               /* 0x00000008 - PREGf_VERBARG_SEEN */
	"CUTGROUP_SEEN",              /* 0x00000010 - PREGf_CUTGROUP_SEEN */
	"USE_RE_EVAL",                /* 0x00000020 - PREGf_USE_RE_EVAL -  compiled with "use re 'eval'"  */
	"NOSCAN",                     /* 0x00000040 - PREGf_NOSCAN */
	"GPOS_SEEN",                  /* 0x00000100 - PREGf_GPOS_SEEN */
	"GPOS_FLOAT",                 /* 0x00000200 - PREGf_GPOS_FLOAT */
	"ANCH_MBOL",                  /* 0x00000400 - PREGf_ANCH_MBOL */
	"ANCH_SBOL",                  /* 0x00000800 - PREGf_ANCH_SBOL */
	"ANCH_GPOS",                  /* 0x00001000 - PREGf_ANCH_GPOS */
	"RECURSE_SEEN",               /* 0x00002000 - PREGf_RECURSE_SEEN */
};
#endif /* DOINIT */

#ifdef DEBUGGING
#  define REG_INTFLAGS_NAME_SIZE 13
#endif

/* The following have no fixed length. U8 so we can do strchr() on it. */
#define REGNODE_VARIES(node) (PL_varies_bitmask[(node) >> 3] & (1 << ((node) & 7)))

#ifndef DOINIT
EXTCONST U8 PL_varies[] __attribute__deprecated__;
#else
EXTCONST U8 PL_varies[] __attribute__deprecated__ = {
    CLUMP, BRANCH, STAR, PLUS, CURLY, CURLYN, CURLYM, CURLYX, WHILEM, REF,
    REFF, REFFL, REFFU, REFFA, REFN, REFFN, REFFLN, REFFUN, REFFAN,
    BRANCHJ, SUSPEND, IFTHEN,
    0
};
#endif /* DOINIT */

#ifndef DOINIT
EXTCONST U8 PL_varies_bitmask[];
#else
EXTCONST U8 PL_varies_bitmask[] = {
    0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xE0, 0x0F, 0xFF, 0xCB, 0x00, 0x00, 0x00
};
#endif /* DOINIT */

/* The following always have a length of 1. U8 we can do strchr() on it. */
/* (Note that length 1 means "one character" under UTF8, not "one octet".) */
#define REGNODE_SIMPLE(node) (PL_simple_bitmask[(node) >> 3] & (1 << ((node) & 7)))

#ifndef DOINIT
EXTCONST U8 PL_simple[] __attribute__deprecated__;
#else
EXTCONST U8 PL_simple[] __attribute__deprecated__ = {
    REG_ANY, SANY, ANYOF, ANYOFD, ANYOFL, ANYOFPOSIXL, ANYOFH, ANYOFHb,
    ANYOFHr, ANYOFHs, ANYOFR, ANYOFRb, ANYOFM, NANYOFM, POSIXD, POSIXL,
    POSIXU, POSIXA, NPOSIXD, NPOSIXL, NPOSIXU, NPOSIXA, REGEX_SET,
    0
};
#endif /* DOINIT */

#ifndef DOINIT
EXTCONST U8 PL_simple_bitmask[];
#else
EXTCONST U8 PL_simple_bitmask[] = {
    0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40
};
#endif /* DOINIT */

/* Is 'op', known to be of type EXACT, folding? */
#define isEXACTFish(op) (__ASSERT_(PL_regkind[op] == EXACT) (PL_EXACTFish_bitmask & (1U << (op - EXACT))))

/* Do only UTF-8 target strings match 'op', known to be of type EXACT? */
#define isEXACT_REQ8(op) (__ASSERT_(PL_regkind[op] == EXACT) (PL_EXACT_REQ8_bitmask & (1U << (op - EXACT))))

#ifndef DOINIT
EXTCONST U32 PL_EXACTFish_bitmask;
EXTCONST U32 PL_EXACT_REQ8_bitmask;
#else
EXTCONST U32 PL_EXACTFish_bitmask = 0x33F8;
EXTCONST U32 PL_EXACT_REQ8_bitmask = 0x1E00;
#endif /* DOINIT */

#endif /* defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) */

/* ex: set ro: */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               a  .   a  ..  a  license /k  index.jsr  package.jsonPt  	readme.md   y 
index.d.ts                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ޽
ϯa  .   p,  ..  a  
protocol-http   a types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ޿]a  .   a  ..  a  LICENSE 2h  dist-cjs4h  dist-es r  package.jsonRt  	README.md   v 
dist-types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        h6>>a  .   a  ..  a  LICENSE d  dist-cjsd  dist-es r  package.jsonSt  	README.md   t 
dist-types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        y;-/* -*- buffer-read-only: t -*-
 *
 *    regcharclass.h
 *
 *    Copyright (C) 2007, 2011 by Larry Wall and others
 *
 *    You may distribute under the terms of either the GNU General Public
 *    License or the Artistic License, as specified in the README file.
 *
 * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
 * This file is built by regen/regcharclass.pl.
 * Any changes made here will be lost!
 * WARNING: These macros are for internal Perl core use only, and may be
 * changed or removed without notice.
 */


#ifndef PERL_REGCHARCLASS_H_ /* Guard against nested #includes */
#define PERL_REGCHARCLASS_H_

#if 'A' == 65 /* ASCII/Latin1 */
/*
	LNBREAK: Line Break: \R

	"\x0D\x0A"      # CRLF - Network (Windows) line ending
	\p{VertSpace}
*/
/*** GENERATED CODE ***/
#define is_LNBREAK_safe(s,e,is_utf8)                                        \
( ((e)-(s) > 2) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : ( is_utf8 ) ?                                                         \
	( ( 0xC2 == ((const U8*)s)[0] ) ?                                   \
	    ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                       \
	: ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
    : ( 0x85 == ((const U8*)s)[0] ) )                                       \
: ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : ( is_utf8 ) ?                                                         \
	( ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
    : ( 0x85 == ((const U8*)s)[0] ) )                                       \
: ((e)-(s) > 0) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') ) ? 1            \
    : ( !( is_utf8 ) ) ?                                                    \
	( 0x85 == ((const U8*)s)[0] )                                       \
    : 0 )                                                                   \
: 0 )

/*** GENERATED CODE ***/
#define is_LNBREAK_utf8_safe(s,e)                                           \
( ((e)-(s) > 2) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : ( 0xC2 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') ) ? 1            \
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
: ((e)-(s) > 0) ?                                                           \
    ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') )                  \
: 0 )

/*** GENERATED CODE ***/
#define is_LNBREAK_latin1_safe(s,e)                                         \
( ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\f') || 0x85 == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( inRANGE_helper_(U8, ((const U8*)s)[0], '\n', '\r') || 0x85 == ((const U8*)s)[0] )\
: 0 )

/*
	HORIZWS: Horizontal Whitespace: \h \H

	\p{HorizSpace}
*/
/*** GENERATED CODE ***/
#define is_HORIZWS_high(s)                                                  \
( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8A) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_HORIZWS_cp_high(cp)                                              \
( 0x1680 == cp || ( 0x1680 < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
( 0x202F == cp || ( 0x202F < cp &&                                          \
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )

/*
	VERTWS: Vertical Whitespace: \v \V

	\p{VertSpace}
*/
/*** GENERATED CODE ***/
#define is_VERTWS_high(s)                                                   \
( ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_VERTWS_cp_high(cp)                                               \
( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )

/*
	XDIGIT: Hexadecimal digits

	\p{XDigit}
*/
/*** GENERATED CODE ***/
#define is_XDIGIT_high(s)                                                   \
( ( 0xEF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0xBC == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0x99) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA1, 0xA6) ) ? 3 : 0 )\
    : ( ( 0xBD == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x81, 0x86) ) ) ? 3 : 0 )\
: 0 )

/*** GENERATED CODE ***/
#define is_XDIGIT_cp_high(cp)                                               \
( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )

/*
	XPERLSPACE: \p{XPerlSpace}

	\p{XPerlSpace}
*/
/*** GENERATED CODE ***/
#define is_XPERLSPACE_high(s)                                               \
( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_XPERLSPACE_cp_high(cp)                                           \
( 0x1680 == cp || ( 0x1680 < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
( 0x202F == cp || ( 0x202F < cp &&                                          \
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )

/*
	SPACE: Backwards \p{XPerlSpace}

	\p{XPerlSpace}
*/
/*** GENERATED CODE ***/
#define is_SPACE_utf8_safe_backwards(s,e)                                   \
( ((s) - (e) > 2) ?                                                         \
    ( ( inRANGE_helper_(U8, *((const U8*)s - 1), '\t', '\r') || ' ' == *((const U8*)s - 1) ) ? 1\
    : ( 0x80 == *((const U8*)s - 1) ) ?                                     \
	( ( 0x80 == *((const U8*)s - 2) ) ?                                 \
	    ( ( inRANGE_helper_(U8, *((const U8*)s - 3), 0xE2, 0xE3) ) ? 3 : 0 )\
	: ( ( 0x9A == *((const U8*)s - 2) ) && ( 0xE1 == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x81, 0x84) || inRANGE_helper_(U8, *((const U8*)s - 1), 0x86, 0x8A) || inRANGE_helper_(U8, *((const U8*)s - 1), 0xA8, 0xA9) || 0xAF == *((const U8*)s - 1) ) ?\
	( ( ( 0x80 == *((const U8*)s - 2) ) && ( 0xE2 == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( 0x85 == *((const U8*)s - 1) ) ?                                     \
	( ( 0x80 == *((const U8*)s - 2) ) ?                                 \
	    ( ( 0xE2 == *((const U8*)s - 3) ) ? 3 : 0 )                     \
	: ( 0xC2 == *((const U8*)s - 2) ) ? 2 : 0 )                         \
    : ( 0x9F == *((const U8*)s - 1) ) ?                                     \
	( ( ( 0x81 == *((const U8*)s - 2) ) && ( 0xE2 == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( ( 0xA0 == *((const U8*)s - 1) ) && ( 0xC2 == *((const U8*)s - 2) ) ) ? 2 : 0 )\
: ((s) - (e) > 1) ?                                                         \
    ( ( inRANGE_helper_(U8, *((const U8*)s - 1), '\t', '\r') || ' ' == *((const U8*)s - 1) ) ? 1\
    : ( ( 0x85 == *((const U8*)s - 1) || 0xA0 == *((const U8*)s - 1) ) && ( 0xC2 == *((const U8*)s - 2) ) ) ? 2 : 0 )\
: ((s) - (e) > 0) ?                                                         \
    ( inRANGE_helper_(U8, *((const U8*)s - 1), '\t', '\r') || ' ' == *((const U8*)s - 1) )\
: 0 )

/*
	NONCHAR: Non character code points

	\p{_Perl_Nchar}
*/
/*** GENERATED CODE ***/
#define is_NONCHAR_utf8_safe(s,e)                                           \
( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xEF == ((const U8*)s)[0] ) ?\
	    ( ( 0xB7 == ((const U8*)s)[1] ) ?                               \
		( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xAF) ) ? 3 : 0 )\
	    : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ) ? 3 : 0 )\
	: ( 0xF0 == ((const U8*)s)[0] ) ?                                   \
	    ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
	: ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xF1, 0xF3) ) ?          \
	    ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
	: ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 ) : 0 )

/*
	SHORTER_NON_CHARS: # 3 bytes

	0xFDD0 - 0xFDEF
	0xFFFE - 0xFFFF
*/
/*** GENERATED CODE ***/
#define is_SHORTER_NON_CHARS_utf8(s)                                        \
( ( 0xEF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0xB7 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xAF) ) ? 3 : 0 )  \
    : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ) ? 3 : 0 )\
: 0 )

/*
	LARGER_NON_CHARS: # 4 bytes

	0x1FFFE - 0x1FFFF
	0x2FFFE - 0x2FFFF
	0x3FFFE - 0x3FFFF
	0x4FFFE - 0x4FFFF
	0x5FFFE - 0x5FFFF
	0x6FFFE - 0x6FFFF
	0x7FFFE - 0x7FFFF
	0x8FFFE - 0x8FFFF
	0x9FFFE - 0x9FFFF
	0xAFFFE - 0xAFFFF
	0xBFFFE - 0xBFFFF
	0xCFFFE - 0xCFFFF
	0xDFFFE - 0xDFFFF
	0xEFFFE - 0xEFFFF
	0xFFFFE - 0xFFFFF
	0x10FFFE - 0x10FFFF
*/
/*** GENERATED CODE ***/
#define is_LARGER_NON_CHARS_utf8(s)                                         \
( ( 0xF0 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
: ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xF1, 0xF3) ) ?                  \
    ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
: ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )

/*
	SURROGATE: Surrogate code points

	\p{_Perl_Surrogate}
*/
/*** GENERATED CODE ***/
#define is_SURROGATE_utf8(s)                                                \
( ( ( 0xED == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xA0, 0xBF) ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_SURROGATE_utf8_safe(s,e)                                         \
( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )

/*
	QUOTEMETA: Meta-characters that \Q should quote

	\p{_Perl_Quotemeta}
*/
/*** GENERATED CODE ***/
#define is_QUOTEMETA_high(s)                                                \
( ( 0xCD == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x8F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xD8 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x9C == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x85 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x9F, 0xA0) ) ? 3 : 0 )  \
    : ( 0x9A == ((const U8*)s)[1] ) ?                                       \
	( ( 0x80 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( 0x9E == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xB4, 0xB5) ) ? 3 : 0 )  \
    : ( ( 0xA0 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x8B, 0x8F) ) ) ? 3 : 0 )\
: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBE) ) ? 3 : 0 )  \
    : ( 0x81 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x81, 0x93) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x95, 0xAF) ) ? 3 : 0 )\
    : ( 0x86 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xBF) ) ? 3 : 0 )  \
    : ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x87, 0x90) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x94, 0x9C) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x9F, 0xAF) || inRANGE_helper_(U8, ((const U8*)s)[1], 0xB8, 0xB9) ) ?\
	3                                                                   \
    : ( 0x91 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x9F) ) ? 3 : 0 )  \
    : ( 0x9D == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xB5) ) ? 3 : 0 )  \
    : ( ( 0x9E == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x94, 0xBF) ) ) ? 3 : 0 )\
: ( 0xE3 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x83) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x88, 0xA0) || 0xB0 == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( ( 0x85 == ((const U8*)s)[1] ) && ( 0xA4 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xEF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0xB4 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ? 3 : 0 )  \
    : ( 0xB8 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x8F) ) ? 3 : 0 )  \
    : ( 0xB9 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x85, 0x86) ) ? 3 : 0 )  \
    : ( 0xBB == ((const U8*)s)[1] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
	( ( 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xB0, 0xB8) ) ) ? 3 : 0 )\
: ( 0xF0 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x9B == ((const U8*)s)[1] ) ?                                       \
	( ( ( 0xB2 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xA0, 0xA3) ) ) ? 4 : 0 )\
    : ( ( ( 0x9D == ((const U8*)s)[1] ) && ( 0x85 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xB3, 0xBA) ) ) ? 4 : 0 )\
: ( ( 0xF3 == ((const U8*)s)[0] ) && ( 0xA0 == ((const U8*)s)[1] ) ) ? 4 : 0 )

/*
	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character

	%regcharclass_multi_char_folds::multi_char_folds('u', 'a')
*/
/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                            \
( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                                 \
	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                            \
( ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                                 \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: 0 )                                                               \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
		: 0 )                                                       \
	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: 0 )                                                               \
    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
		: ( 0x93 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 4 )\
		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
	: ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                            \
( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: 0 )                                                               \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
		( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                            \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ) ? 3 : 0 )\
    : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
: 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
( ((e)-(s) > 5) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )\
: ((e)-(s) > 4) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ? 2\
	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[2], 's', 't') ) ? 3\
	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: 0 )                                                               \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
		( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
	: ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 3) ? is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )

/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                          \
( ( 0x81 == ((const U8*)s)[1] ) ?                                           \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
			( ( 0x80 == ((const U8*)s)[5] ) ? 0x1FE2            \
			: ( 0x81 == ((const U8*)s)[5] ) ? 0x3B0 : 0 )       \
		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1FE7 : 0 )\
		: ( 0x93 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
			( ( 0x80 == ((const U8*)s)[5] ) ? 0x1F52            \
			: ( 0x81 == ((const U8*)s)[5] ) ? 0x1F54 : 0x1F50 ) \
		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1F56 : 0x1F50 )\
		: 0 )                                                       \
	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FF7 : 0x1FF6 )\
		: 0 )                                                       \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                          \
( ( 0xD5 == ((const U8*)s)[0] ) ?                                           \
	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
		( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
		: ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
		: ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
		: ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
	    : 0 )                                                           \
	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
    : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x80 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
	    : ( 0x81 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
	    : ( 0x82 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
	    : ( 0x83 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
	    : ( 0x84 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
	    : ( 0x85 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
	    : ( 0x86 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
	    : ( 0x87 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
	    : ( 0xA0 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
	    : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
	    : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
	    : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
	    : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
	    : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
	    : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
	    : ( ( ( 0xA7 == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
	: ( 0xBD == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xA0 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
	    : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
	    : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
	    : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
	    : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
	    : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
	    : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
	    : ( 0xA7 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
	    : ( 0xB0 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
	    : ( 0xB4 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
	    : ( ( ( 0xBC == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
	: 0 )                                                               \
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                          \
( ( 0x81 == ((const U8*)s)[1] ) ?                                           \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
		( ( 0x93 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                          \
( ( 0xD5 == ((const U8*)s)[0] ) ?                                           \
	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
		( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
		: ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
		: ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
		: ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
	    : 0 )                                                           \
	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
    : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x80 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
	    : ( 0x81 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
	    : ( 0x82 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
	    : ( 0x83 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
	    : ( 0x84 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
	    : ( 0x85 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
	    : ( 0x86 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
	    : ( 0x87 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
	    : ( 0xA0 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
	    : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
	    : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
	    : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
	    : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
	    : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
	    : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
	    : ( ( ( 0xA7 == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
	: ( 0xBD == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xA0 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
	    : ( 0xA1 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
	    : ( 0xA2 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
	    : ( 0xA3 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
	    : ( 0xA4 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
	    : ( 0xA5 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
	    : ( 0xA6 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
	    : ( 0xA7 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
	    : ( 0xB0 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
	    : ( 0xB4 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xCE == ((const U8*)s)[3] ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
	    : ( ( ( 0xBC == ((const U8*)s)[2] ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
	: 0 )                                                               \
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e)                          \
( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
	: 0 )                                                               \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0xAE == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
	( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
		( ( 0x93 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x587 : 0 )\
	: ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xD5 == ((const U8*)s)[2] ) ?                               \
		( ( 0xA5 == ((const U8*)s)[3] ) ? 0xFB14                    \
		: ( 0xAB == ((const U8*)s)[3] ) ? 0xFB15                    \
		: ( 0xAD == ((const U8*)s)[3] ) ? 0xFB17                    \
		: ( 0xB6 == ((const U8*)s)[3] ) ? 0xFB13 : 0 )              \
	    : 0 )                                                           \
	: ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 0xFB16 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e)                          \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 0xFB00                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e)                          \
( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
	: 0 )                                                               \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0xAE == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FB7 : 0x1FB6 )\
		: 0 )                                                       \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 0x1FC7 : 0x1FC6 )\
		: 0 )                                                       \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
		( ( 0x88 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
			( ( 0x80 == ((const U8*)s)[5] ) ? 0x1FD2            \
			: ( 0x81 == ((const U8*)s)[5] ) ? 0x390 : 0 )       \
		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 0x1FD7 : 0 )\
		: 0 )                                                       \
	    : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
	: 0 )                                                               \
    : ( 0xCF == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e)                          \
( ((e)-(s) > 4) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
	( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05                  \
	: ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 0xDF : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ?                             \
	( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'S' ) ? 0xDF                \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'T' ) ? 0xFB05              \
	    : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 0xDF : 0 )\
	: 0 )                                                               \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 0x149 : 0 )\
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( 0xAC == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0xAE == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0xB1 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0xB7 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
		( ( 0x82 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
	    : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
    : ( 0xCF == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )\
: ((e)-(s) > 3) ? what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e) )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe(s,e)                                 \
( ((e)-(s) > 5) ? what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e) )

/*
	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character

	%regcharclass_multi_char_folds::multi_char_folds('l', 'a')
*/
/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 'S', 'T') || inRANGE_helper_(U8, ((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
: 0 )

/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_latin1_safe(s,e)                               \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 0xFB00                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'S' ) ? 0xDF                    \
	: ( ( ((const U8*)s)[1] & 0xDF ) == 'T' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: 0 )

/*
	THREE_CHAR_FOLD: A three-character multi-char fold

	%regcharclass_multi_char_folds::multi_char_folds('u', '3')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
( ((e)-(s) > 5) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )\
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
	    ( ( ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
	: ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCC == ((const U8*)s)[2] ) ) && ( 0x88 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
	( ( 0x85 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
		    : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
	: ( ( ( ( ( 0x89 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
    : 0 )                                                                   \
: ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ) && ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )

/*
	THREE_CHAR_FOLD: A three-character multi-char fold

	%regcharclass_multi_char_folds::multi_char_folds('l', '3')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ) && ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )

/*
	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds

	%regcharclass_multi_char_folds::multi_char_folds('u', 'h')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
( ((e)-(s) > 3) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ? 2                      \
	: ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
	    ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: 0 )                                                               \
    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
	( ( 0x81 == ((const U8*)s)[1] || 0x8E == ((const U8*)s)[1] ) ? 2    \
	: ( 0x85 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: ( 0x89 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: 0 )                                                               \
    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
    : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
	: ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 2) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
    : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
    : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
	: ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
    : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
	( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
    : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
    : ( ( 0xD5 == ((const U8*)s)[0] ) && ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ) ? 2 : 0 )\
: ((e)-(s) > 0) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) )\
: 0 )

/*
	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds

	%regcharclass_multi_char_folds::multi_char_folds('l', 'h')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
( ((e)-(s) > 1) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) )\
: 0 )

/*
	FOLDS_TO_MULTI: characters that fold to multi-char strings

	\p{_Perl_Folds_To_Multi_Char}
*/
/*** GENERATED CODE ***/
#define is_FOLDS_TO_MULTI_utf8(s)                                           \
( ( 0xC3 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x9F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ?              \
    ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x89 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
    ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 )                    \
: ( 0xD6 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0xBA == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( 0xBD == ((const U8*)s)[1] ) ?                                       \
	( ( ( ((const U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 )                \
    : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xAF) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xB2, 0xB4) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xB6, 0xB7) || 0xBC == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xCA ) == 0x82 ) || ( ( ((const U8*)s)[2] & 0xF7 ) == 0x84 ) || ((const U8*)s)[2] == 0xA4 || ( ( ((const U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x93, 0x97) ) ) ? 3 : 0 )

/*
	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale

	\p{_Perl_Problematic_Locale_Folds}
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
: ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xC2, 0xC3) ) ?                  \
    2                                                                       \
: ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )      \
: ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
: ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xCC == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
    ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
: ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
( cp <= 0xFF || ( 0xFF < cp &&                                              \
( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
( 0x149 == cp || ( 0x149 < cp &&                                            \
( 0x178 == cp || ( 0x178 < cp &&                                            \
( 0x17F == cp || ( 0x17F < cp &&                                            \
( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
( 0x307 == cp || ( 0x307 < cp &&                                            \
( 0x39C == cp || ( 0x39C < cp &&                                            \
( 0x3BC == cp || ( 0x3BC < cp &&                                            \
( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

/*
	PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale

	\p{_Perl_Problematic_Locale_Foldeds_Start}
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
: ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xC2, 0xC3) ) ?                  \
    2                                                                       \
: ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )      \
: ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
: ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
    ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
: ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
( cp <= 0xFF || ( 0xFF < cp &&                                              \
( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
( 0x149 == cp || ( 0x149 < cp &&                                            \
( 0x178 == cp || ( 0x178 < cp &&                                            \
( 0x17F == cp || ( 0x17F < cp &&                                            \
( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
( 0x2BC == cp || ( 0x2BC < cp &&                                            \
( 0x39C == cp || ( 0x39C < cp &&                                            \
( 0x3BC == cp || ( 0x3BC < cp &&                                            \
( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

/*
	PATWS: pattern white space

	\p{_Perl_PatWS}
*/
/*** GENERATED CODE ***/
#define is_PATWS_safe(s,e,is_utf8)                                          \
( ( LIKELY((e) > (s)) ) ?                                                   \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\t', '\r') || ' ' == ((const U8*)s)[0] ) ? 1\
    : (! is_utf8 ) ?                                                        \
	    ( 0x85 == ((const U8*)s)[0] )                                   \
	: ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ?                          \
	    ( ( 0xC2 == ((const U8*)s)[0] ) ?                               \
		( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                   \
	    : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x8E, 0x8F) || inRANGE_helper_(U8, ((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
	: 0 )                                                               \
: 0 )

/*
	HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED

	0xD000 - 0xD7FF
*/
/*** GENERATED CODE ***/
#define is_HANGUL_ED_utf8_safe(s,e)                                         \
( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x80, 0x9F) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )

#endif	/* ASCII/Latin1 */

#if 'A' == 193 /* EBCDIC 1047 */ \
     && '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
     && '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
     && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
/*
	LNBREAK: Line Break: \R

	"\x0D\x0A"      # CRLF - Network (Windows) line ending
	\p{VertSpace}
*/
/*** GENERATED CODE ***/
#define is_LNBREAK_safe(s,e,is_utf8)                                        \
( ((e)-(s) > 2) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
: 0 )

/*** GENERATED CODE ***/
#define is_LNBREAK_utf8_safe(s,e)                                           \
( ((e)-(s) > 2) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
: 0 )

/*** GENERATED CODE ***/
#define is_LNBREAK_latin1_safe(s,e)                                         \
( ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
: 0 )

/*
	HORIZWS: Horizontal Whitespace: \h \H

	\p{HorizSpace}
*/
/*** GENERATED CODE ***/
#define is_HORIZWS_high(s)                                                  \
( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_HORIZWS_cp_high(cp)                                              \
( 0x1680 == cp || ( 0x1680 < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
( 0x202F == cp || ( 0x202F < cp &&                                          \
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )

/*
	VERTWS: Vertical Whitespace: \v \V

	\p{VertSpace}
*/
/*** GENERATED CODE ***/
#define is_VERTWS_high(s)                                                   \
( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_VERTWS_cp_high(cp)                                               \
( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )

/*
	XDIGIT: Hexadecimal digits

	\p{XDigit}
*/
/*** GENERATED CODE ***/
#define is_XDIGIT_high(s)                                                   \
( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\
	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB9) ) ? 4 : 0 )\
	: ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x68, 0x69) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )

/*** GENERATED CODE ***/
#define is_XDIGIT_cp_high(cp)                                               \
( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )

/*
	XPERLSPACE: \p{XPerlSpace}

	\p{XPerlSpace}
*/
/*** GENERATED CODE ***/
#define is_XPERLSPACE_high(s)                                               \
( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_XPERLSPACE_cp_high(cp)                                           \
( 0x1680 == cp || ( 0x1680 < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
( 0x202F == cp || ( 0x202F < cp &&                                          \
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )

/*
	SPACE: Backwards \p{XPerlSpace}

	\p{XPerlSpace}
*/
/*** GENERATED CODE ***/
#define is_SPACE_utf8_safe_backwards(s,e)                                   \
( ((s) - (e) > 2) ?                                                         \
    ( ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || '\n' == *((const U8*)s - 1) || 0x25 == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) ) ? 1\
    : ( 0x41 == *((const U8*)s - 1) ) ?                                     \
	( ( 0x41 == *((const U8*)s - 2) ) ?                                 \
	    ( ( ( *((const U8*)s - 3) & 0xFB ) == 0xCA ) ? 3 : 0 )          \
	: ( 0x63 == *((const U8*)s - 2) ) ?                                 \
	    ( ( 0xBC == *((const U8*)s - 3) ) ? 3 : 0 )                     \
	: ( 0x80 == *((const U8*)s - 2) ) ? 2 : 0 )                         \
    : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x42, 0x48) || 0x51 == *((const U8*)s - 1) ) ?\
	( ( ( 0x41 == *((const U8*)s - 2) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x49, 0x4A) ) ?            \
	( ( ( inRANGE_helper_(U8, *((const U8*)s - 2), 0x41, 0x42) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( 0x56 == *((const U8*)s - 1) ) ?                                     \
	( ( ( 0x42 == *((const U8*)s - 2) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( ( ( 0x73 == *((const U8*)s - 1) ) && ( 0x43 == *((const U8*)s - 2) ) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
: ((s) - (e) > 1) ?                                                         \
    ( ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || '\n' == *((const U8*)s - 1) || 0x25 == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) ) ? 1\
    : ( ( 0x41 == *((const U8*)s - 1) ) && ( 0x80 == *((const U8*)s - 2) ) ) ? 2 : 0 )\
: ((s) - (e) > 0) ?                                                         \
    ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || '\n' == *((const U8*)s - 1) || 0x25 == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) )\
: 0 )

/*
	NONCHAR: Non character code points

	\p{_Perl_Nchar}
*/
/*** GENERATED CODE ***/
#define is_NONCHAR_utf8_safe(s,e)                                           \
( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
	    ( ( 0x73 == ((const U8*)s)[1] ) ?                               \
		( ( 0x55 == ((const U8*)s)[2] ) ?                           \
		    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
		: ( 0x56 == ((const U8*)s)[2] ) ?                           \
		    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
		: ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
	    : 0 )                                                           \
	: ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) ?\
	    ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
	: ( 0xED == ((const U8*)s)[0] ) ?                                   \
	    ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
	: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 ) : 0 )

/*
	SHORTER_NON_CHARS: # 4 bytes

	0xFDD0 - 0xFDEF
	0xFFFE - 0xFFFF
	0x1FFFE - 0x1FFFF
	0x2FFFE - 0x2FFFF
	0x3FFFE - 0x3FFFF
*/
/*** GENERATED CODE ***/
#define is_SHORTER_NON_CHARS_utf8(s)                                        \
( ( 0xDD == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x73 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x55 == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
	: ( 0x56 == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
	: ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
    : 0 )                                                                   \
: ( ( ( ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) && ( 0x73 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )

/*
	LARGER_NON_CHARS: # 5 bytes

	0x4FFFE - 0x4FFFF
	0x5FFFE - 0x5FFFF
	0x6FFFE - 0x6FFFF
	0x7FFFE - 0x7FFFF
	0x8FFFE - 0x8FFFF
	0x9FFFE - 0x9FFFF
	0xAFFFE - 0xAFFFF
	0xBFFFE - 0xBFFFF
	0xCFFFE - 0xCFFFF
	0xDFFFE - 0xDFFFF
	0xEFFFE - 0xEFFFF
	0xFFFFE - 0xFFFFF
	0x10FFFE - 0x10FFFF
*/
/*** GENERATED CODE ***/
#define is_LARGER_NON_CHARS_utf8(s)                                         \
( ( 0xED == ((const U8*)s)[0] ) ?                                           \
    ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )

/*
	SURROGATE: Surrogate code points

	\p{_Perl_Surrogate}
*/
/*** GENERATED CODE ***/
#define is_SURROGATE_utf8(s)                                                \
( ( ( 0xDD == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x65, 0x66) ) ) ? 4 : 0 )

/*** GENERATED CODE ***/
#define is_SURROGATE_utf8_safe(s,e)                                         \
( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x65, 0x66) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xBF) ) ) ? 4 : 0 )

/*
	QUOTEMETA: Meta-characters that \Q should quote

	\p{_Perl_Quotemeta}
*/
/*** GENERATED CODE ***/
#define is_QUOTEMETA_high(s)                                                \
( ( 0xB1 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xBB == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xBC == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( ( 0x71 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x64) ) ) ? 3 : 0 )\
: ( 0xBE == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x56) ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xAD, 0xBF) ) ?\
	3                                                                   \
    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBE) ) ? 3 : 0 )\
    : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA1, 0xB3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB5, 0xBF) ) ? 3 : 0 )\
    : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAF) ) ? 3 : 0 )\
    : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB0, 0xBF) ) ) ? 3 : 0 )\
: ( 0xCB == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA0, 0xA2) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA8, 0xBA) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xBD, 0xBF) ) ?\
	3                                                                   \
    : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xB5) ) ? 3 : 0 )\
    : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB4, 0xBF) ) ) ? 3 : 0 )\
: ( 0xCC == ((const U8*)s)[0] ) ?                                           \
    3                                                                       \
: ( 0xCD == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xB0, 0xB3) ) ?\
	3                                                                   \
    : 0 )                                                                   \
: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xA3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA8, 0xBF) ) ? 3 : 0 )\
    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEF ) == 0xA0 ) ? 3 : 0 )\
    : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xDD == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x73 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ? 4 : 0 )\
	: ( 0x57 == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
	: ( 0x59 == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )\
	: ( 0x66 == ((const U8*)s)[2] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
	: ( 0x71 == ((const U8*)s)[2] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
	: ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB8) ) ) ? 4 : 0 )\
    : 0 )                                                                   \
: ( 0xDF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
	( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
    : ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x69) ) ) ? 4 : 0 )\
: ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) ? 5 : 0 )

/*
	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character

	%regcharclass_multi_char_folds::multi_char_folds('u', 'a')
*/
/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                            \
( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                            \
( ( 0x8F == ((const U8*)s)[0] ) ?                                           \
	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
		( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
		: 0 )                                                       \
	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: 0 )                                                               \
    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
		: ( 0x62 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
		( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[5]) & 0xF7 ) == 0xA5 ) || ((const U8*)s)[5] == 0x52 || ((const U8*)s)[5] == 0x65 ) ) ? 6 : 0 )\
	    : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
	: 0 )                                                               \
    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
	    ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
	: ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                            \
( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
		( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
	    ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
	: ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                            \
( ((e)-(s) > 3) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
		( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
: 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
( ((e)-(s) > 5) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )\
: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )

/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                          \
( ( 0x52 == ((const U8*)s)[1] ) ?                                           \
	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x587 : 0 )\
	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) ? ( ( 0x46 == ((const U8*)s)[5] ) ? 0xFB14\
			: ( 0x52 == ((const U8*)s)[5] ) ? 0xFB15            \
			: ( 0x54 == ((const U8*)s)[5] ) ? 0xFB17            \
			: ( 0x65 == ((const U8*)s)[5] ) ? 0xFB13 : 0 ) : 0 )\
	    : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 0xFB16 : 0 )\
	: 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                          \
( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
	( ( 0x67 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
	: ( 0x6A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
	    : ( 0x48 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
	    : ( 0x57 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
	    : ( ( ( 0x70 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
	: 0 )                                                               \
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                          \
( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                                 \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                          \
( ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                                 \
	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
		( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FB7 : 0x1FB6 )\
		: 0 )                                                       \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0x66 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FC7 : 0x1FC6 )\
		: 0 )                                                       \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FD2            \
			: ( 0x42 == ((const U8*)s)[5] ) ? 0x390 : 0 )       \
		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FD7 : 0 )\
		: 0 )                                                       \
	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
	: 0 )                                                               \
    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FE2            \
			: ( 0x42 == ((const U8*)s)[5] ) ? 0x3B0 : 0 )       \
		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FE7 : 0 )\
		: ( 0x62 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1F52            \
			: ( 0x42 == ((const U8*)s)[5] ) ? 0x1F54 : 0x1F50 ) \
		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1F56 : 0x1F50 )\
		: 0 )                                                       \
	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 0x1FF7 : 0x1FF6 )\
		: 0 )                                                       \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
    : ( 0xB8 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e)                          \
( ( 0x42 == ((const U8*)s)[1] ) ?                                           \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x62 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e)                          \
( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
	( ( 0x67 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
	: ( 0x6A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
	    : ( 0x48 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
	    : ( 0x57 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
	    : ( 0x63 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB4 == ((const U8*)s)[3] ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
	    : ( ( ( 0x70 == ((const U8*)s)[2] ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
	: 0 )                                                               \
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e)                          \
( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
		( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0x66 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x62 == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
	    : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e)                          \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe(s,e)                                 \
( ((e)-(s) > 5) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ? what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )\
: ((e)-(s) > 4) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
		( ( 0x73 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x73 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
	( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0x66 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
	    : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
    : ( 0xB5 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e) )\
: ((e)-(s) > 3) ? what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e) )

/*
	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character

	%regcharclass_multi_char_folds::multi_char_folds('l', 'a')
*/
/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
: 0 )

/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_latin1_safe(s,e)                               \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: 0 )

/*
	THREE_CHAR_FOLD: A three-character multi-char fold

	%regcharclass_multi_char_folds::multi_char_folds('u', '3')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
( ((e)-(s) > 5) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
	    ( ( ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
	: ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
		    : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
	: ( ( ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
    : 0 )                                                                   \
: ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )

/*
	THREE_CHAR_FOLD: A three-character multi-char fold

	%regcharclass_multi_char_folds::multi_char_folds('l', '3')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )

/*
	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds

	%regcharclass_multi_char_folds::multi_char_folds('u', 'h')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
( ((e)-(s) > 3) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? 2   \
	: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
	    ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: ( 0x68 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: 0 )                                                               \
    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: 0 )                                                               \
    : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
	: ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 2) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x66 ) ? 2 : 0 )\
    : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
    : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ?          \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
	: ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
    : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
	( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
	( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x66 ) ? 2 : 0 )\
    : ( ( 0xB5 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
: ((e)-(s) > 0) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
: 0 )

/*
	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds

	%regcharclass_multi_char_folds::multi_char_folds('l', 'h')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
( ((e)-(s) > 1) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
: 0 )

/*
	FOLDS_TO_MULTI: characters that fold to multi-char strings

	\p{_Perl_Folds_To_Multi_Char}
*/
/*** GENERATED CODE ***/
#define is_FOLDS_TO_MULTI_utf8(s)                                           \
( ( 0x8A == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?\
    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF9 ) == 0xB0 ) ? 3 : 0 )\
    : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
	3                                                                   \
    : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF0 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFA ) == 0xB2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\
    : ( 0x72 == ((const U8*)s)[1] ) ?                                       \
	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xA4 ) ) ? 3 : 0 )\
    : ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ((const U8*)s)[2] == 0x45 || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )

/*
	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale

	\p{_Perl_Problematic_Locale_Folds}
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
: ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
    2                                                                       \
: ( 0x8D == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0x8F == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
: ( 0x9C == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xAF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?                  \
    ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )

/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
( cp <= 0xFF || ( 0xFF < cp &&                                              \
( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
( 0x149 == cp || ( 0x149 < cp &&                                            \
( 0x178 == cp || ( 0x178 < cp &&                                            \
( 0x17F == cp || ( 0x17F < cp &&                                            \
( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
( 0x307 == cp || ( 0x307 < cp &&                                            \
( 0x39C == cp || ( 0x39C < cp &&                                            \
( 0x3BC == cp || ( 0x3BC < cp &&                                            \
( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

/*
	PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale

	\p{_Perl_Problematic_Locale_Foldeds_Start}
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
: ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
    2                                                                       \
: ( 0x8D == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0x8F == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
: ( 0x9C == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xAB == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB3, 0xB4) ) ?\
    ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )

/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
( cp <= 0xFF || ( 0xFF < cp &&                                              \
( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
( 0x149 == cp || ( 0x149 < cp &&                                            \
( 0x178 == cp || ( 0x178 < cp &&                                            \
( 0x17F == cp || ( 0x17F < cp &&                                            \
( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
( 0x2BC == cp || ( 0x2BC < cp &&                                            \
( 0x39C == cp || ( 0x39C < cp &&                                            \
( 0x3BC == cp || ( 0x3BC < cp &&                                            \
( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

/*
	PATWS: pattern white space

	\p{_Perl_PatWS}
*/
/*** GENERATED CODE ***/
#define is_PATWS_safe(s,e,is_utf8)                                          \
( ( LIKELY((e) > (s)) ) ?                                                   \
    ( ( '\t' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
    : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
		    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )\
		: ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
: 0 )

/*
	HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED

	0x1 - 0x0
*/
/*** GENERATED CODE ***/
#define is_HANGUL_ED_utf8_safe(s,e)                                         \
( 0 )

#endif	/* EBCDIC 1047 */

#if 'A' == 193 /* EBCDIC 037 */ \
     && '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
     && '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
     && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
/*
	LNBREAK: Line Break: \R

	"\x0D\x0A"      # CRLF - Network (Windows) line ending
	\p{VertSpace}
*/
/*** GENERATED CODE ***/
#define is_LNBREAK_safe(s,e,is_utf8)                                        \
( ((e)-(s) > 2) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
: 0 )

/*** GENERATED CODE ***/
#define is_LNBREAK_utf8_safe(s,e)                                           \
( ((e)-(s) > 2) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
: 0 )

/*** GENERATED CODE ***/
#define is_LNBREAK_latin1_safe(s,e)                                         \
( ((e)-(s) > 1) ?                                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
    : ( '\r' == ((const U8*)s)[0] ) ?                                       \
	( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
: 0 )

/*
	HORIZWS: Horizontal Whitespace: \h \H

	\p{HorizSpace}
*/
/*** GENERATED CODE ***/
#define is_HORIZWS_high(s)                                                  \
( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_HORIZWS_cp_high(cp)                                              \
( 0x1680 == cp || ( 0x1680 < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
( 0x202F == cp || ( 0x202F < cp &&                                          \
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )

/*
	VERTWS: Vertical Whitespace: \v \V

	\p{VertSpace}
*/
/*** GENERATED CODE ***/
#define is_VERTWS_high(s)                                                   \
( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_VERTWS_cp_high(cp)                                               \
( inRANGE_helper_(UV, cp, 0x2028, 0x2029) )

/*
	XDIGIT: Hexadecimal digits

	\p{XDigit}
*/
/*** GENERATED CODE ***/
#define is_XDIGIT_high(s)                                                   \
( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\
	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB9) ) ? 4 : 0 )\
	: ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x67, 0x68) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )

/*** GENERATED CODE ***/
#define is_XDIGIT_cp_high(cp)                                               \
( inRANGE_helper_(UV, cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&               \
( inRANGE_helper_(UV, cp, 0xFF21, 0xFF26) || inRANGE_helper_(UV, cp, 0xFF41, 0xFF46) ) ) )

/*
	XPERLSPACE: \p{XPerlSpace}

	\p{XPerlSpace}
*/
/*** GENERATED CODE ***/
#define is_XPERLSPACE_high(s)                                               \
( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )

/*** GENERATED CODE ***/
#define is_XPERLSPACE_cp_high(cp)                                           \
( 0x1680 == cp || ( 0x1680 < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x2000, 0x200A) || ( 0x200A < cp &&               \
( inRANGE_helper_(UV, cp, 0x2028, 0x2029) || ( 0x2029 < cp &&               \
( 0x202F == cp || ( 0x202F < cp &&                                          \
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )

/*
	SPACE: Backwards \p{XPerlSpace}

	\p{XPerlSpace}
*/
/*** GENERATED CODE ***/
#define is_SPACE_utf8_safe_backwards(s,e)                                   \
( ((s) - (e) > 2) ?                                                         \
    ( ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || 0x15 == *((const U8*)s - 1) || '\n' == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) ) ? 1\
    : ( 0x41 == *((const U8*)s - 1) ) ?                                     \
	( ( 0x41 == *((const U8*)s - 2) ) ?                                 \
	    ( ( ( *((const U8*)s - 3) & 0xFB ) == 0xCA ) ? 3 : 0 )          \
	: ( 0x62 == *((const U8*)s - 2) ) ?                                 \
	    ( ( 0xBD == *((const U8*)s - 3) ) ? 3 : 0 )                     \
	: ( 0x78 == *((const U8*)s - 2) ) ? 2 : 0 )                         \
    : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x42, 0x48) || 0x51 == *((const U8*)s - 1) ) ?\
	( ( ( 0x41 == *((const U8*)s - 2) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x49, 0x4A) ) ?            \
	( ( ( inRANGE_helper_(U8, *((const U8*)s - 2), 0x41, 0x42) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( 0x56 == *((const U8*)s - 1) ) ?                                     \
	( ( ( 0x42 == *((const U8*)s - 2) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
    : ( ( ( 0x72 == *((const U8*)s - 1) ) && ( 0x43 == *((const U8*)s - 2) ) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
: ((s) - (e) > 1) ?                                                         \
    ( ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || 0x15 == *((const U8*)s - 1) || '\n' == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) ) ? 1\
    : ( ( 0x41 == *((const U8*)s - 1) ) && ( 0x78 == *((const U8*)s - 2) ) ) ? 2 : 0 )\
: ((s) - (e) > 0) ?                                                         \
    ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || 0x15 == *((const U8*)s - 1) || '\n' == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) )\
: 0 )

/*
	NONCHAR: Non character code points

	\p{_Perl_Nchar}
*/
/*** GENERATED CODE ***/
#define is_NONCHAR_utf8_safe(s,e)                                           \
( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
	    ( ( 0x72 == ((const U8*)s)[1] ) ?                               \
		( ( 0x55 == ((const U8*)s)[2] ) ?                           \
		    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
		: ( 0x56 == ((const U8*)s)[2] ) ?                           \
		    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
		: ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
	    : 0 )                                                           \
	: ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) ?\
	    ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
	: ( 0xED == ((const U8*)s)[0] ) ?                                   \
	    ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
	: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 ) : 0 )

/*
	SHORTER_NON_CHARS: # 4 bytes

	0xFDD0 - 0xFDEF
	0xFFFE - 0xFFFF
	0x1FFFE - 0x1FFFF
	0x2FFFE - 0x2FFFF
	0x3FFFE - 0x3FFFF
*/
/*** GENERATED CODE ***/
#define is_SHORTER_NON_CHARS_utf8(s)                                        \
( ( 0xDD == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x72 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x55 == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
	: ( 0x56 == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
	: ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
    : 0 )                                                                   \
: ( ( ( ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )

/*
	LARGER_NON_CHARS: # 5 bytes

	0x4FFFE - 0x4FFFF
	0x5FFFE - 0x5FFFF
	0x6FFFE - 0x6FFFF
	0x7FFFE - 0x7FFFF
	0x8FFFE - 0x8FFFF
	0x9FFFE - 0x9FFFF
	0xAFFFE - 0xAFFFF
	0xBFFFE - 0xBFFFF
	0xCFFFE - 0xCFFFF
	0xDFFFE - 0xDFFFF
	0xEFFFE - 0xEFFFF
	0xFFFFE - 0xFFFFF
	0x10FFFE - 0x10FFFF
*/
/*** GENERATED CODE ***/
#define is_LARGER_NON_CHARS_utf8(s)                                         \
( ( 0xED == ((const U8*)s)[0] ) ?                                           \
    ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )

/*
	SURROGATE: Surrogate code points

	\p{_Perl_Surrogate}
*/
/*** GENERATED CODE ***/
#define is_SURROGATE_utf8(s)                                                \
( ( ( 0xDD == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x64, 0x65) ) ) ? 4 : 0 )

/*** GENERATED CODE ***/
#define is_SURROGATE_utf8_safe(s,e)                                         \
( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x64, 0x65) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xBF) ) ) ? 4 : 0 )

/*
	QUOTEMETA: Meta-characters that \Q should quote

	\p{_Perl_Quotemeta}
*/
/*** GENERATED CODE ***/
#define is_QUOTEMETA_high(s)                                                \
( ( 0xAF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xB7 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xBC == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xBD == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
    : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) ) ) ? 3 : 0 )\
: ( 0xBE == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x56) ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xAD, 0xBF) ) ?\
	3                                                                   \
    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBE) ) ? 3 : 0 )\
    : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA1, 0xB3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB5, 0xBF) ) ? 3 : 0 )\
    : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAF) ) ? 3 : 0 )\
    : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB0, 0xBF) ) ) ? 3 : 0 )\
: ( 0xCB == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA0, 0xA2) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA8, 0xBA) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xBD, 0xBF) ) ?\
	3                                                                   \
    : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xB5) ) ? 3 : 0 )\
    : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB4, 0xBF) ) ) ? 3 : 0 )\
: ( 0xCC == ((const U8*)s)[0] ) ?                                           \
    3                                                                       \
: ( 0xCD == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xB0, 0xB3) ) ?\
	3                                                                   \
    : 0 )                                                                   \
: ( 0xCE == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xA3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA8, 0xBF) ) ? 3 : 0 )\
    : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEF ) == 0xA0 ) ? 3 : 0 )\
    : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xDD == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x72 == ((const U8*)s)[1] ) ?                                       \
	( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ? 4 : 0 )\
	: ( 0x57 == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
	: ( 0x59 == ((const U8*)s)[2] ) ?                                   \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )\
	: ( 0x65 == ((const U8*)s)[2] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
	: ( 0x70 == ((const U8*)s)[2] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
	: ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB8) ) ) ? 4 : 0 )\
    : 0 )                                                                   \
: ( 0xDF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
	( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
    : ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB3, 0xBA) ) ) ? 4 : 0 )\
: ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) ? 5 : 0 )

/*
	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character

	%regcharclass_multi_char_folds::multi_char_folds('u', 'a')
*/
/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                            \
( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                            \
( ( 0x8E == ((const U8*)s)[0] ) ?                                           \
	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
		( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
		: 0 )                                                       \
	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: 0 )                                                               \
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
		: ( 0x5F == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
		: 0 )                                                       \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
		( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[5]) & 0xF7 ) == 0xA5 ) || ((const U8*)s)[5] == 0x52 || ((const U8*)s)[5] == 0x64 ) ) ? 6 : 0 )\
	    : ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
	: 0 )                                                               \
    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ?          \
	    ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
	: ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                            \
( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
		( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
		( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ?          \
	    ( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
	: ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                            \
( ((e)-(s) > 3) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
		( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ?     \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
		( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
	: ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ( 0xAA == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
: 0 )


/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
( ((e)-(s) > 5) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )\
: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )

/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e)                          \
( ( 0x52 == ((const U8*)s)[1] ) ?                                           \
	    ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x587 : 0 )\
	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) ? ( ( 0x46 == ((const U8*)s)[5] ) ? 0xFB14\
			: ( 0x52 == ((const U8*)s)[5] ) ? 0xFB15            \
			: ( 0x54 == ((const U8*)s)[5] ) ? 0xFB17            \
			: ( 0x64 == ((const U8*)s)[5] ) ? 0xFB13 : 0 ) : 0 )\
	    : ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 0xFB16 : 0 )\
	: 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e)                          \
( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
	( ( 0x66 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
	: ( 0x69 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
	    : ( 0x48 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
	    : ( 0x57 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
	    : ( ( ( 0x6A == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
	: 0 )                                                               \
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e)                          \
( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                                 \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e)                          \
( ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                                 \
	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
		( ( 0x72 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 0x1FB7 : 0x1FB6 )\
		: 0 )                                                       \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0x65 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 0x1FC7 : 0x1FC6 )\
		: 0 )                                                       \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FD2            \
			: ( 0x42 == ((const U8*)s)[5] ) ? 0x390 : 0 )       \
		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FD7 : 0 )\
		: 0 )                                                       \
	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
	: 0 )                                                               \
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
		( ( 0x49 == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1FE2            \
			: ( 0x42 == ((const U8*)s)[5] ) ? 0x3B0 : 0 )       \
		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1FE7 : 0 )\
		: ( 0x5F == ((const U8*)s)[3] ) ?                           \
		    ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
			( ( 0x41 == ((const U8*)s)[5] ) ? 0x1F52            \
			: ( 0x42 == ((const U8*)s)[5] ) ? 0x1F54 : 0x1F50 ) \
		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 0x1F56 : 0x1F50 )\
		: 0 )                                                       \
	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ?                           \
		    ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 0x1FF7 : 0x1FF6 )\
		: 0 )                                                       \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
    : ( 0xB7 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part0_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part1_(s,e) )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e)                          \
( ( 0x42 == ((const U8*)s)[1] ) ?                                           \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
		( ( 0x5F == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e)                          \
( ( 0xBF == ((const U8*)s)[0] ) ?                                           \
	( ( 0x66 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F80 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F81 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F82 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F83 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F84 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F85 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F86 : 0 )\
	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F87 : 0 )\
	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F90 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F91 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F92 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F93 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F94 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F95 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F96 : 0 )\
	    : ( ( ( 0x48 == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1F97 : 0 )\
	: ( 0x69 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x41 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA0 : 0 )\
	    : ( 0x42 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA1 : 0 )\
	    : ( 0x43 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA2 : 0 )\
	    : ( 0x44 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA3 : 0 )\
	    : ( 0x45 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA4 : 0 )\
	    : ( 0x46 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA5 : 0 )\
	    : ( 0x47 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA6 : 0 )\
	    : ( 0x48 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FA7 : 0 )\
	    : ( 0x57 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FB2 : 0 )\
	    : ( 0x62 == ((const U8*)s)[2] ) ?                               \
		( ( ( 0xB3 == ((const U8*)s)[3] ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FC2 : 0 )\
	    : ( ( ( 0x6A == ((const U8*)s)[2] ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 0x1FF2 : 0 )\
	: 0 )                                                               \
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e)                          \
( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
		( ( 0x72 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0x65 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 0x1FE4 : 0 )\
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
		( ( 0x5F == ((const U8*)s)[3] ) ? 0x1F50 : 0 )              \
	    : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FE6 : 0 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FF6 : 0 )              \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF3 : 0 )\
	: ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FF4 : 0 )\
    : 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e)                          \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( ( ( 0xAA == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: 0 )


/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_utf8_safe(s,e)                                 \
( ((e)-(s) > 5) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ? what_MULTI_CHAR_FOLD_utf8_safe_part2_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part3_(s,e) )\
: ((e)-(s) > 4) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
	( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 0x1E9A : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
	( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 0x1E96 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 0x130 : 0 )\
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
		( ( 0x72 == ((const U8*)s)[3] ) ? 0x59 : 0 )                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 's' ) ? 0x59                \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 't' ) ? 0xFB05 : 0 )        \
	: 0 )                                                               \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 0x1F0 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0x72 == ((const U8*)s)[2] ) ? 0x59 : 0 )                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 0x1E97 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E98 : 0 )\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ?                             \
	( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 0x1E99 : 0 )\
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 0x149 : 0 )\
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x53 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB4 : 0 )\
	: ( 0x55 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC4 : 0 )\
	: ( 0x58 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FB6 : 0 )              \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FB3 : 0 )\
	: ( 0x65 == ((const U8*)s)[1] ) ?                                   \
	    ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
		( ( 0x43 == ((const U8*)s)[3] ) ? 0x1FC6 : 0 )              \
	    : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 0x1FC3 : 0 )\
	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 0x1FD6 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ? what_MULTI_CHAR_FOLD_utf8_safe_part4_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part5_(s,e) )\
: ((e)-(s) > 3) ? what_MULTI_CHAR_FOLD_utf8_safe_part6_(s,e) : what_MULTI_CHAR_FOLD_utf8_safe_part7_(s,e) )

/*
	MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character

	%regcharclass_multi_char_folds::multi_char_folds('l', 'a')
*/
/*** GENERATED CODE ***/
#define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
	: ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
    : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
: 0 )

/*** GENERATED CODE ***/
#define what_MULTI_CHAR_FOLD_latin1_safe(s,e)                               \
( ((e)-(s) > 2) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
	    ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) ? 0xFB03              \
	    : ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ? 0xFB04 : 0xFB00 )   \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 0xFB00                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) ? 0xFB01                  \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ? 0xFB02 : 0 )            \
    : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 's' ) ? 0x59                    \
	: ( ( ((const U8*)s)[1] & 0xBF ) == 't' ) ? 0xFB05 : 0 )            \
    : 0 )                                                                   \
: 0 )

/*
	THREE_CHAR_FOLD: A three-character multi-char fold

	%regcharclass_multi_char_folds::multi_char_folds('u', '3')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
( ((e)-(s) > 5) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
	    ( ( ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB3 == ((const U8*)s)[4] ) ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
	: ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAD == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAD == ((const U8*)s)[4] ) ?\
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x5F == ((const U8*)s)[3] ) ) ? ( ( 0xAD == ((const U8*)s)[4] ) ?\
			( ( inRANGE_helper_(U8, ((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
		    : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
	: ( ( ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB3 == ((const U8*)s)[4] ) ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
    : 0 )                                                                   \
: ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )

/*
	THREE_CHAR_FOLD: A three-character multi-char fold

	%regcharclass_multi_char_folds::multi_char_folds('l', '3')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )

/*
	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds

	%regcharclass_multi_char_folds::multi_char_folds('u', 'h')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
( ((e)-(s) > 3) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? 2   \
	: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: ( 0x67 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: 0 )                                                               \
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
	: ( 0x46 == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x5F == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: ( 0x4A == ((const U8*)s)[1] ) ?                                   \
	    ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
	: 0 )                                                               \
    : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ?          \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
	: ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) ? 3 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 2) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x65 ) ? 2 : 0 )\
    : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
    : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
	( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
    : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ?          \
	    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
	: ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) ? 3 : 0 )\
    : 0 )                                                                   \
: ((e)-(s) > 1) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
    : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
	( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
	( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
    : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x65 ) ? 2 : 0 )\
    : ( ( 0xB4 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
: ((e)-(s) > 0) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
: 0 )

/*
	THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds

	%regcharclass_multi_char_folds::multi_char_folds('l', 'h')
*/
/*** GENERATED CODE ***/
#define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
( ((e)-(s) > 1) ?                                                           \
    ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
    : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
	( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
    : 0 )                                                                   \
: ((e)-(s) > 0) ?                                                           \
    ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
: 0 )

/*
	FOLDS_TO_MULTI: characters that fold to multi-char strings

	\p{_Perl_Folds_To_Multi_Char}
*/
/*** GENERATED CODE ***/
#define is_FOLDS_TO_MULTI_utf8(s)                                           \
( ( 0x80 == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB2, 0xB3) ) ?\
    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0x8D == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xB7 == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
	( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ? 3 : 0 )\
    : ( 0x68 == ((const U8*)s)[1] ) ?                                       \
	( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF9 ) == 0xB0 ) ? 3 : 0 )\
    : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
	3                                                                   \
    : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF0 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFA ) == 0xB2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\
    : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
	( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xA4 ) ) ? 3 : 0 )\
    : ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ((const U8*)s)[2] == 0x45 || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xA6) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB3, 0xB7) ) ) ? 4 : 0 )

/*
	PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale

	\p{_Perl_Problematic_Locale_Folds}
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
: ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
    2                                                                       \
: ( 0x8C == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
: ( 0x8D == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
: ( 0x9B == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xAD == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xB2, 0xB3) ) ?                  \
    ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x62 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )

/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
( cp <= 0xFF || ( 0xFF < cp &&                                              \
( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
( 0x149 == cp || ( 0x149 < cp &&                                            \
( 0x178 == cp || ( 0x178 < cp &&                                            \
( 0x17F == cp || ( 0x17F < cp &&                                            \
( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
( 0x307 == cp || ( 0x307 < cp &&                                            \
( 0x39C == cp || ( 0x39C < cp &&                                            \
( 0x3BC == cp || ( 0x3BC < cp &&                                            \
( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

/*
	PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale

	\p{_Perl_Problematic_Locale_Foldeds_Start}
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
: ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
    2                                                                       \
: ( 0x8C == ((const U8*)s)[0] ) ?                                           \
    ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )      \
: ( 0x8D == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0x8E == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
: ( 0x9B == ((const U8*)s)[0] ) ?                                           \
    ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xAA == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0xB2, 0xB3) ) ?\
    ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
: ( 0xBF == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x62 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ?                                           \
    ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )

/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
( cp <= 0xFF || ( 0xFF < cp &&                                              \
( inRANGE_helper_(UV, cp, 0x130, 0x131) || ( 0x131 < cp &&                  \
( 0x149 == cp || ( 0x149 < cp &&                                            \
( 0x178 == cp || ( 0x178 < cp &&                                            \
( 0x17F == cp || ( 0x17F < cp &&                                            \
( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
( 0x2BC == cp || ( 0x2BC < cp &&                                            \
( 0x39C == cp || ( 0x39C < cp &&                                            \
( 0x3BC == cp || ( 0x3BC < cp &&                                            \
( inRANGE_helper_(UV, cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&               \
( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
( inRANGE_helper_(UV, cp, 0x212A, 0x212B) || inRANGE_helper_(UV, cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

/*
	PATWS: pattern white space

	\p{_Perl_PatWS}
*/
/*** GENERATED CODE ***/
#define is_PATWS_safe(s,e,is_utf8)                                          \
( ( LIKELY((e) > (s)) ) ?                                                   \
    ( ( '\t' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
    : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
		    ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )\
		: ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
: 0 )

/*
	HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED

	0x1 - 0x0
*/
/*** GENERATED CODE ***/
#define is_HANGUL_ED_utf8_safe(s,e)                                         \
( 0 )

#endif	/* EBCDIC 037 */

#endif /* PERL_REGCHARCLASS_H_ */

/* Generated from:
 * 688d673ec947f7ccf898b4eae9848139d4d33676b688dee54f449f8bf9d3bbd2 lib/Unicode/UCD.pm
 * c7698811e9adb6cc98fb996a7de4be2b6532f2ac67e76055cc8afdbf6ee18af3 lib/unicore/ArabicShaping.txt
 * 24a74555f918bbe99f5b3f1b83cf36fc0e205bb8a600a6a3aa539c710a3dcf27 lib/unicore/BidiBrackets.txt
 * 7a5c74cedc1616a9af0a9d22e108ae592d86fe93649c144ae6ba49f193a44122 lib/unicore/BidiMirroring.txt
 * 598870dddef7b34b5a972916528c456aff2765b79cd4f9647fb58ceb767e7f17 lib/unicore/Blocks.txt
 * a566cd48687b2cd897e02501118b2413c14ae86d318f9abbbba97feb84189f0f lib/unicore/CaseFolding.txt
 * 3360762fc3295cea54ab251c31df621d05ba4b94d46c60eaac29aa16d70ad1e0 lib/unicore/CompositionExclusions.txt
 * 7e058dec02147098bc9c28d86209f0f251bba0538f3b5a705ad02ea3bb709fe0 lib/unicore/DAge.txt
 * e3eddd7d469cd1b0feed7528defad1a1cc7c6a9ceb0ae4446a6d10921ed2e7bc lib/unicore/DCoreProperties.txt
 * b2c444c20730b097787fdf50bd7d6dd3fc5256ab8084f5b35b11c8776eca674c lib/unicore/DNormalizationProps.txt
 * f901ac011aa32a09224d6555da71e2532c59c1d3381322829de0e3b880507250 lib/unicore/EastAsianWidth.txt
 * 5995522f01633073911dad1edb74d13aa832f42862c0392a79627b85d52f2391 lib/unicore/EquivalentUnifiedIdeograph.txt
 * cd1c9367cba438afa965fcb5edc6ed3ec6e685fd5dd21c0cc20c026f04beb0e5 lib/unicore/HangulSyllableType.txt
 * 3f3f368fccdb37f350ecedc20b37fa71ab31c04e847884c77780d34283539f73 lib/unicore/IdStatus.txt
 * 45a150c23961b58d7784704af6c4daccd6517d97b6489e53d13bbdbf9e4f065f lib/unicore/IdType.txt
 * d8704c8725568813a947ff2ef38bcf1f05e2a6fbea6876ba384890f187a8bf61 lib/unicore/IndicPositionalCategory.txt
 * c7b969b653dc278fb66ab4136223d320e30ad19367eb791ae60dcc6d92071b16 lib/unicore/IndicSyllabicCategory.txt
 * 39ff89e0a329e1ccce6d54fad8cf82e90926901928c0ca9b9a2ad5681f330dd9 lib/unicore/Jamo.txt
 * 9e06e9f35c6959fb91dcc7993f90d58523c3079bc62c6b25f828b4cdebc5d70c lib/unicore/LineBreak.txt
 * 14b3b677d33f95c51423dce6eef4a6a28b4b160451ecedee4b91edb6745cf4a3 lib/unicore/NameAliases.txt
 * db5745688affcdc0c3927a1ee0667018a96a7b24513f866d5235e98fef6c2436 lib/unicore/NamedSequences.txt
 * 6bddfdb850417a5bee6deff19290fd1b138589909afb50f5a049f343bf2c6722 lib/unicore/PropList.txt
 * eb755757e20b72b330b2948df3cf2ff7adb0e31bb060140dc09dafb132ace2cd lib/unicore/PropValueAliases.txt
 * 859d7225f2d2a460b3ccb1d61a7945f8cc219acdf5aa53b66b7a1e4bf6ebfc87 lib/unicore/PropertyAliases.txt
 * d37eedf63ff9c48bac863d5f76862373d6cf5269fd21253d499e2430d638c01d lib/unicore/ScriptExtensions.txt
 * 52db475c4ec445e73b0b16915448c357614946ad7062843c563e00d7535c6510 lib/unicore/Scripts.txt
 * c667b45908fd269af25fd55d2fc5bbc157fb1b77675936e25c513ce32e080334 lib/unicore/SpecialCasing.txt
 * 36018e68657fdcb3485f636630ffe8c8532e01c977703d2803f5b89d6c5feafb lib/unicore/UnicodeData.txt
 * 869ff43dd012f924d03c89fc268c88f0e7eea72f0228b91ca30455afdb84f8fd lib/unicore/VerticalOrientation.txt
 * ddc7d4d1f3838573b94fc5d83ff7217e63c47b22ae1cd40c5fe1a54efc15589b lib/unicore/auxiliary/GCBTest.txt
 * 97e79f1f8d9cd76d120f2420381a01abc00a7c78a2aa583fa3f9627264a99742 lib/unicore/auxiliary/GraphemeBreakProperty.txt
 * 488dbb6a7e1d0070d4aa7c175352c818ff6425172850d1b40c6177726658cb05 lib/unicore/auxiliary/LBTest.txt
 * 7e42dd749dbb94aa44b13faf9df6319d9a16ce2ea09a3a094fcfbb5962168040 lib/unicore/auxiliary/SBTest.txt
 * 7092ca4117cec891c25c7724132efc519e1dece01ae9fd6068035a9db04d526e lib/unicore/auxiliary/SentenceBreakProperty.txt
 * 8094b544ec1580c7e41ac0187805cc1aeb330a90301ec7505563e1a59318284e lib/unicore/auxiliary/WBTest.txt
 * 7716752aad296d4ab23ff4ed0a2746fc5328750ff84e9e7d6f3828ee9eaef742 lib/unicore/auxiliary/WordBreakProperty.txt
 * b597836124298b8f7fa076273802840cfc3271a25f5c397a082e120954b82c3c lib/unicore/emoji/emoji.txt
 * e5fe51acc74e3e83b4fb4c7b25f3c34491d6eb8095c9955d0712dafbca7b3c2b lib/unicore/extracted/DBidiClass.txt
 * cd0a14176d93bf440b77a582a0d678190fc0688b15442d4cfb250bf2e27956af lib/unicore/extracted/DBinaryProperties.txt
 * 12b0c3af9b600b49488d66545a3e7844ea980809627201bf9afeebe1c9f16f4e lib/unicore/extracted/DCombiningClass.txt
 * f76064b298cfbd715ba542e7894f7a507d32da2f011070d1d01df95cad9817d6 lib/unicore/extracted/DDecompositionType.txt
 * f9bef074cc916db57fece99d54a4505f8e7c7b17481619e3f0005211f7717d4b lib/unicore/extracted/DEastAsianWidth.txt
 * cde679c8461976ed40d7edf61ae98cbb947540831f06f5bc7da7decbf91a1420 lib/unicore/extracted/DGeneralCategory.txt
 * 9bb891831328713603a486a4a03df7f7987c3e1e8144a6d1ac71fd061ef3f732 lib/unicore/extracted/DJoinGroup.txt
 * e97c65bbea0a69d2fae6ec4182b09e519e13232e20bd804b3004edc0f36bb0d4 lib/unicore/extracted/DJoinType.txt
 * 43f6df50e4878f501b417e366b0ee097ae5ccb2d4ce942026bed3d62d78e7887 lib/unicore/extracted/DLineBreak.txt
 * a04502ebb36a45d83cbe48a7d8132ea8143edb7b3d34d0aa6afe4a9685049741 lib/unicore/extracted/DNumType.txt
 * 11075771b112e8e7ccf6ffa637c4c91eadc3ef3db0517b24e605df8fd3624239 lib/unicore/extracted/DNumValues.txt
 * 1e514199c3fa46f5df6148d272db7bddbfd5e89c9710e39773ef9d734f344a2f lib/unicore/mktables
 * c72bbdeda99714db1c8024d3311da4aef3c0db3b9b9f11455a7cfe10d5e9aba3 lib/unicore/version
 * 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
 * acc94e4afc339fe2cf2ae74d6e1cbcf2c396328d78e56236ad314eadbfc84125 regen/regcharclass.pl
 * b2f896452d2b30da3e04800f478c60c1fd0b03d6b668689b020f1e3cf1f1cdd9 regen/regcharclass_multi_char_folds.pl
 * ex: set ro: */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     m @AZA@@@  ,   ۰!	 m @A^A@@@  ,   	@`Aa-$Fmt_EBB_'a16sf  8 @@@A@@@A@@@@-$Fmt_EBB_'d16tf  8 @@@A@@@A@@@@(fmt_restuޠ@@ @ ~"2T@ }Ҡ2T@ }Ӡ@@ @ ~#e@ ~=e@ }e@ ~>e@ }@@ @ ~!@L	  M	  @@
@d_@@A@B@,`@@A@BCDEFf`@  ,   ^	 ! :_	 ! l@AA@@@  ,   c	 ! B@AA@@@  ,   !	@AB`@  ,   #i	 ! *j	 ! 4@}@@f@ ~9g@ ~2AN(#`@  ,   /u	 ! 'Y@@AR,'`@  ,   3y	  z	  @mED>;@@ @ ~B:^@  ,   A	  k@@A>^@  ,   xE	T  (	T  <@e@ n+̐AР+char_format@Wd @ mEf @ mh @ mj @ m?l @ mn @ m@@ @ mTf@ l,
@@ @ mf@ l@ @ lf@ l@	H L V	H L a@@v6+scan_format@W @ m @ ms @ mt @ m @ mu @ mv@@ @ mf@ mZQ
@@ @ mzf@ m[@ @ m\f@ mY@	M  	M  
@@8,$Fmt_EBB_'a2f  8 @@@A@@@A@@@@:,$Fmt_EBB_'d2f  8 @@@A@@@A@@@@;(fmt_rest@@ @ mon@@ @ mve@ nke@ mte@ nle@ m@@ @ m@	R  	R  @@<@dcda@@A_@@v@ABu@1b@@At@BCsrDhgEQPL@J@c`@@ABKKIHBCDFF*c@  ,   l@]Ac@  ,   \ް$	U = Q%	U = e@e@ nCeA@!@"_nd@@AB CDEmEF\@d@  ,   P@sA
d@  ,   H:	Y  ;	Y  @e@ nu{A@@ @ n@F	V f uG	V f w@@=d@  ,   <@A!d@  ,   4N	X  O	X  @g@ n\A
*d@  ,    	@A,d@  ,   Y	W { @@A0d@  ,   ]	S  ^	S  @96@@ @ m@@ @ mA@]@A[ZBYCDEVFzb@  ,   ,r	S  s	Z  @@A*b@  ,   1w	R  x	R  @n@@ @ mB8@u@A@BCDEpF`@  ,   F	R  @@AC`@  ,   J	M  	P  AA	ACamlinternalFormat.fmt_ebb_of_string.parse_conversion.scan_formatA@IH@@  ,   P	M  $@@AMF_@  ,   V	H L b	K  AA	ACamlinternalFormat.fmt_ebb_of_string.parse_conversion.char_formatA@UT@@  ,   \	H L R0@@AY^@  ,   `	 ] c	 ] {@AA@^]@@  ,   xe	 ] k@AA@ba@@  ,   pi	@A-$Fmt_EBB_'a14mf  8 @@@A@@@A@n@@@p-$Fmt_EBB_'d14nf  8 @@@A@@@A@r@@@t(fmt_restoh@@ @ }k		@@ @ }lEe@ }ue@ }CBe@ }ve@ }D@@ @ }j@	 ' 9	 ' A@@@e_@@A@@B?@*`@@A>@BC=<D21EF
`@  ,   d	 ' D	 ' Y@n	Ơ	à# @@ @ }P,B+^@  ,   H	 ' -N@@1A/^@  ,   8	 = E	 = @A6A@@@  ,   0	 = M@A:A@@@  ,   (	 = ]	 = l@i@@f@ ]f@ WEAI(next_ind1eT@ @	 " ,	 " 4@@Ǡ(char_set1gT@ @	 " 6	 " >@@ȱ-$Fmt_EBB_'a23f  8 @@@A@@@A@@@@ɱ-$Fmt_EBB_'d23f  8 @@@A@@@A@@@@ʠ(fmt_rest֠@@ @ Ġ4T@ 4T@ 	@@ @ Še@ 
e@ e@ e@ @@ @ @D	 c uE	 c }@@@f	bf_@@A=`@@@AB@1c@@A@BCD@@ANa@@@ABCDEFie@  ,   i@AVc@  ,   c	  d	  1@AA@@@  ,   "h	  @AA@@@  ,   &	@Ab'ignoredXI@@f@ %f@ ޠ5$f@ ߠ5!f@ J@@f@ &f@ @@ @ g@ @	  	  @@E@CE@@'d@@AB76CDEFd@  ,   P	  	  @AA@NM@@  ,   U	  	  @jz@@g@ g@ ߐAZ]d@  ,   a	  D@@A^ac@  ,   e	  	  @@@f@ g@ Ajmc@  ,   q	  @@Anqc@  ,   u	 c 	 c @oǠ@@ @ B|@|@AzyB,C'&DuEFa@  ,   	 c i@@
Aa@  ,   |	 " A	 " _@ʠ@ @ f@ B^@  ,   `	 " (@@A^@  ,   H	r  	r  @A#A@@@  ,   @	r  @A'A@@@  ,   4	@)A0#pad{@@ @ pwf@ pW|@@ @ pxf@ pX@@ @ pdf@ pR@	j { 	j { @@K,$Fmt_EBB_'a5f  8 @@@A@@@A@@@@L,$Fmt_EBB_'d5f  8 @@@A@@@A@@@@M(fmt_restŠ@@ @ pڠנ@@ @ pe@ q[e@ pe@ q\e@ p@@ @ p@1	k  2	k  @@N1$Padding_fmt_EBB1g  8 @@@A@@@A@@@@P4$Padding_fmt_EBB_'a1g  8 @@@A@@@A@@@@Q4$Padding_fmt_EBB_'d1g  8 @@@A@@@A@@@@R$pad'@@ @ qL@p?@@f@ qtf@ q@@ @ qN@ @ qM@@ @ qK@X	p  Y	p  @@S)fmt_rest'@@ @ qPT@ qT@ q2@@ @ qQHe@ qFe@ q@@ @ qO@u	p  v	p  @@3T.@g:bg=`@@A@B@qa@@A-c@@@ABCD̰_@Pd@@A@@ABCDEFd@  ,    N	q  	q  @qYM64-,@@ @ q'ېBV@%@A@B@#@A@BCD CDEFa@  ,   h	p  @@Aea@  ,   l	n A I	n A t@AA@ji@@  ,   q	n A Q@AA@nm@@  ,   u	@Aɠ'ignoredY@@f@ qf@ pɠ6sf@ pʠ6pf@ pˠ@@f@ qf@ p̠@@ @ pg@ p@	m  
	m  @@O9+* @ @A&b@@ @ABWCDEF	b@  ,   	m  	m  =@A#A@@@  ,   	m  (@k@@g@ pg@ p-A Ra@  ,   	m  C@@2AVa@  ,   	l  	l  @Z@@f@ pg@ p=Aba@  ,   	l   @@BAfa@  ,   ð		k  
	k  @qȠŠ@@ @ pOBʰfnEONF>"_@  ,   ԰	k  5@@WA&_A  ,   ڰ 	j { !	j { @A^B]&^  ,   '	j { @H2-@@g@ peg@ pg@ pvnAm6^@  ,   t6	j { Q@@sAq:^@  ,   d:	 % -;	 % [@AxA@@@  ,   \?	 % 5@A|A@@@  ,   L	@~A,$Fmt_EBB_'a7)f  8 @@@A@@@A@@@@a,$Fmt_EBB_'d7*f  8 @@@A@@@A@@@@	b(fmt_rest+@@ @ sKWT@@ @ sLe@ sxe@ s#e@ sye@ s$@@ @ sJ@i	 8 Jj	 8 R@@'c'counter,+@@ @ sTg@ sR@u	 n xv	 n @@3d.@h:_@@A@a@@AB@8`@@A@BCDEFa@  ,   <C	  	  @AA@A@@@  ,   4H	  @AA@ED@@  ,   (L	@AP'ignored-ZѠ\ @ sj^ @ sk` @ slb @ sm	@@ @ sog@ sh@	  	  @@ce^0@@Ab@@@ABCDEFb@  ,   $n	  	  @AA@lk@@  ,   s	  0@@AxpBa@  ,   w	  	  @@@f@ sgg@ s`A|Na@  ,   	  @@ARa@  ,    	 n t@@
AV4@B3QC.-D#"EF`@  ,   	 8 U	 8 j@q۠ؠ|@@ @ s0B^@  ,   	 8 >@@"A ^@  ,   	^  	^  @A'A@@@  ,   	^  @A+A@@@  ,   	@-A.,$Fmt_EBB_'a3f  8 @@@A@@@A@@@@>,$Fmt_EBB_'d3f  8 @@@A@@@A@@@@?(fmt_rest@@ @ n
T@ niT@ nj@@ @ ne@ ne@ ne@ ne@ n@@ @ n@	\ + =	\ + E@@@԰@h_@@A@B@.`@@A@BCDyxEbaFQ5`@  ,   -	] a z.	] a @AkA@@@  ,   2	] a @AoA@@@  ,   	@qAD`@  ,   8	] a j9	] a t@@@f@ ng@ n|AP#`@  ,   D	] a g[@@AT'`@  ,   tH	\ + HI	\ + ]@rTGE>;@@ @ nB	V^@  ,   XV	\ + 1m@@A
Z^@  ,   PZ	F # )[	F # >@Ba^@  ,   4@Ac^@  ,   $c	  d	  @AA@@@  ,   "h	  @AA@@@  ,   &l	  m	  @mK@@g@ gg@ aA'sub_end4:f@ @	 M W	 M ^@@@-$Fmt_EBB_'a21f  8 @@@A@@@A@B@@@D-$Fmt_EBB_'d21f  8 @@@A@@@A@F@@@H(fmt_rest<@@ @ >8BT@ 8?T@ @@ @ ?e@ 
e@ e@ e@ @@ @ =@	  	  @@h-$Fmt_EBB_'a22g  8 @@@A@@@A@j@@@l±-$Fmt_EBB_'d22g  8 @@@A@@@A@n@@@pà'sub_fmtd@@ @ q('@@ @ r-@@f@ (f@ J<@@f@ 'f@ K@@ @ p@	  	  @@Ġ)sub_fmtty~&@@ @ h@ |8T@ }8T@ ~)@@ @ h@ (f@ $f@ @@ @ h@ x@	  	  @@@ibi`@@Ac@Bb@ya@@Aa@BC`_DUTE>>:8C2@_@@AWc@@8d@@A7@BCDF6f@  ,   @MAd@  ,   ΰ	  	  @ARA@@@  ,   Ӱ	  @AVA@@@  ,   	@XA'ignored\\l@@ @ h@ 8T@ 8T@ o@@ @ h@ nf@ jf@ @@ @ h@ @:	 E Q;	 E X@@F@@A(e@@@ABCDE~@FmQe@  ,   I	 E [J	 E @AA@ @@  ,   N	 E qO	 E @n-@@h@ h@ A
`e@  ,   Z	 E MF@@Add@  ,   ^	 , 5_	 , ?@@@g@ h@ Apd@  ,   $j	 , 2@@A!tdA  ,   *p	  q	  (@AA)|om@@ABCDFc  ,   7}	  @@A4c@  ,   ;	  	  @s @@ @ WǐBB@@A@BCDE@@A@BCDFa@  ,   lT	  7@@A"Qa@  ,   `X	  	  @s@@ @ B-_F_@  ,   Hh	  K@@A3e_A  ,   @n	 M a	 M @ACm^  ,   u	 M SX@@Ar^@  ,   y	  	  @AA@wv@@  ,   ~	  @AA@{z@@  ,   	@A-$Fmt_EBB_'a17vf  8 @@@A@@@A@@@@-$Fmt_EBB_'d17wf  8 @@@A@@@A@@@@(fmt_restx@@ @ ~9T@ ~;9T@ ~<@@ @ ~`e@ ~e@ ~]e@ ~e@ ~@@ @ ~@	  	  @@@j_@@A[@BZ@,`@@AY@BCXWDMLE65F%	`@  ,   	  	  @t
*)# @@ @ ~GBF^@  ,   ɰ	  P@@LAJ^@  ,   Ͱ	D  Q@@PAN^@  ,   Ѱ	> # 8	A  AA	BCamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_prec_optA@@@  ,   װ	> # '[@@ZAW԰!p@o@Al@BkjChgDE]\FL0]@  ,   (	9 L d)	9 L AA	ECamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_padprec_optA@@@  ,   .	9 L Pl@@kAg2@BCDEmlF\@\@  ,   8	8  +9	8  HAA	ACamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_pad_optA@@@  ,   t>	8  |@@{AvC@@ABC$DE~}FmQ[@  ,   pI	- ~# ~6J	6  AA	@CamlinternalFormat.fmt_ebb_of_string.parse_conversion.opt_of_padA@@@  ,   L	O	- ~# ~'@@A@@ACEF|`Z@  ,   DX	 {} {Y	' }9 }pAA	@CamlinternalFormat.fmt_ebb_of_string.parse_conversion.check_no_0A@@@  ,    ^	 {} {@@A@@A@B"CDDEFqY@  ,   #i	 v vj	 {* {SAA	ACamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_int_padA@"!@@  ,   )o	 v v@@A&@@A2BCUD$EFX@  ,   4z	 vg v{{	 vg vAA	ACamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_padprecA@32@@  ,   :	 v5 vI	 v5 vfAA	>CamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_precA@98@@  ,   @	  v v	  v v4AA	=CamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_padA@?>@@  ,   F u u u vAA	=CamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_ignA@ED@@  ,   L u u u uAA	?CamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_spaceA@KJ@@  ,   lR up u up uAA	>CamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_hashA@QP@@  ,   TX u> uR u> uoAA	>CamlinternalFormat.fmt_ebb_of_string.parse_conversion.get_plusA@WV@@  ,   @^ u> uB@@A[@	@ABWDEQ@  ,   <g t u t u@AA@ed@@  ,   0l t t t t@AA@ji@@  ,   $q t t t t@AA@on@@  ,   v t t t t@AA@ts@@  ,   { tb t tb t@AA@yx@@  ,     tb tw tb t@AA@~}@@  ,    tb tf	@@@'@@AB@@A@	@ABC@@A BDK@  ,    u> uk;@@:Aא?D@ĐlP@r=A@@A@B@@ATC@@B@A@  ,    u> uWV@@U@A@  ,    up u`@@_A@rMA@@A@B@@ARC@@B@A@  ,    up ul@@k@+A@  ,   ° u uv@@uA/@r]A@@A@B@@APC@@B@A@  ,   ΰ u u@@@;A@  ,   Ұ u v @@A?ϰ@rmA@@A@B@@ANC@@B@A@  ,   ް$ u u@@@KA@  ,   |(	  v v1@@AO߰@r}A@@A@B@@ALC@@B@A@  ,   p4	  v v@@@[A@  ,   d8	 v5 vb@@A_@rA@@A@B@@AJC@@B@A@  ,   XD	 v5 vN@@@kA@  ,   LH	 vg v@@Ao@rA@@A@jC@@B@@AB@A@  ,   @T	 vg v@@@{A@  ,   8X	 {* {P@@A@"$5g  8 @@@A@@@A@@@@۠#pad0@d@@ @ e0 @ e@ @ e@@ @ e@r	 {* {5s	 {* {I@@0@  8 @@@A@d@@ @ e!@@ @ e@ @ e@@Ag;@@@=@  8 @@@A%@@ @ e@@AgB@@@D@AB?@lGDPCPB@@A2E@@rA@@AB@?F@@A#G@@B6C@@;B@@AD@@E@@ABC@E@  ,    a	 z z	 z z@@>AO"$4g  8 @@@A@@@A@h@@@j@S  8 @@@A@d@@ @ eD@@ @ eC@ @ eB@@Agu@@@w@  8 @@@A_@@ @ eE@@Ag|@@@~@ABy@:@A0@B.@D@  ,   	 z z	 z z@@`A"	D@  ,   	 z z(@@eA'"D@  ,   	 {  {&	 {  {)@@kA|#pad @ eu@@ @ et@	 {  {	 {  {@@@  8 @@@A@@ @ en@@Ag@@@@A@lDc@AE@@^@AB\@E@  ,   	 z$ z4	 z$ ze@@A!n@@ @ e@	 y y	 y y@@@  8 @@@A@@ @ e@@Ag@@@@A°@ @AE@@{@ABy@E@  ,   ΰ	 y z
	 y z#@AA@@@  ,   t@A
E@  ,   lְ	 y y%@@A$E@  ,   <۰!	 y y"	 y y@@A@  8 @@@A@@ @ d@@Ag@@@@A@@A@B@C@  ,   1	 ys y2	 ys y@@A٠#pad@@ @ d @@ @ d@@ @ d@D	 ys y~E	 ys y@@@  8 @@@A@@ @ d@@Ag@@@	@A@@AD@@@AB@D@  ,   V	 yI ybW	 yI ym@@@ @ d@@ @ d@@ @ dA	@@A@B@B@  ,   %k	 yI yVl	 yI y`@@@ @ d@@ @ d@@ @ dA0@@A@A@  ,   9	 yI yP@@@$6A@  ,   =	! |' |M	! |' |P@@+A05@$symb@:	 {} {@@Og  8 @@@A@@@A@	 {} {?@@@@Ti  8 @@@A@@@A@C@@@@X#pad@@ @ g@@ @ g@@ @ g@	 {} {	 {} {@@m#$13j  8 @@@A@@@A@o@@@q@  8 @@@A@e@@ @ h@@ @ h@ @ h@@Aj|@@@~@  8 @@@A@@ @ h@@Aj@@@@AB@mC@@A3A@@DB@@AB@7C@@="B@@ABD@@E@@AC@C@  ,   	' }9 }F@@AY#$14j  8 @@@A@@@A@@@@@?  8 @@@A@f@@ @ hN@@ @ hM@ @ hL@@Aj@@@@  8 @@@AK@@ @ hO@@Aj@@@@AB.C@  ,   	& } }'	& } }8@@A4C@  ,   	& } }@@A$9C@  ,   `	  { |#	  { |&@@A@_  8 @@@Ah@@ @ g@@Aj@@@ @Aư@mC@@AFEBC@C@  ,   4Ұ	$ | |	$ | |@@A%width@@ @ h6@#	" |Q |m$	" |Q |r@@@|  8 @@@A@@ @ h2@@Aj@@@@A`@_@D@@ABC`@D@  ,   ,5	# |w |6	# |w |@AA@@@  ,   @A
D@  ,   =	# |w |%@@A$D@  ,   B	 { {C	 { {@@A@  8 @@@A@@ @ g@@Aj@@@@A@~B|@B@  ,   Q	 { {@@@B@  ,   U	6  @@AY@!cX@c	- ~# ~7@@ Ig  8 @@@A@@@A@h	- ~# ~8@@@@%Ii  8 @@@A@@@A@m	- ~# ~A$@@@@*#pad_@@ @ i@@ @ i@@ @ i@	- ~# ~K	- ~# ~N@@?#$17j  8 @@@A@@@A@A@@@C@  8 @@@A@f@@ @ j!@@ @ j @ @ j@@AjN@@@P@  8 @@@A@@ @ j"@@AjU@@@W@ABR@AB@@A2A@@B@8C@@=B@@ABD@@E@@AC@B@  ,   hf	2  	2  E@@cAX%width@@ @ i@	0 ~ ~	0 ~ ~@@u@>  8 @@@AG@@ @ i@@Ajz@@@|@Aw@nC@@A'@'@D@@ABC(@D@  ,   `	1 ~ 	1 ~ @AA@@@  ,   T@A"D@  ,   L	1 ~ ~(@@A'D@  ,   8	/ ~ ~	/ ~ ~@AA@@@  ,   0@A%width@@ @ i@	/ ~ ~	/ ~ ~@@@m  8 @@@Av@@ @ i@@Aj@@@@A/S@S@D@@ABCT@D@  ,   	5  	5  @@A%width@@ @ j	@	3 F a	3 F f@@@  8 @@@A@@ @ j@@Aj@@@@AðLp@p@D@@ABCq@D@  ,   ϰ	4 k 	4 k @AA@@@  ,   @A
D@  ,   װ	4 k s%@@A$D@  ,   ܰ"	. ~r ~#	. ~r ~@@A@  8 @@@A@@ @ i@@Aj@@@@AB@  ,   /	- ~# ~c@@@B@  ,   p3	8  <@&@@e@ kQe@ k1@@e@ kRe@ k2@@f@ k@f@ kYf@ kPA@!c@Q	8  ,@@'	@	A@@A@B@@AWC@@B@A@  ,   d]	8  /%@@$@A@  ,   Ta	9 L u9@T@@e@ ke@ kl@@e@ ke@ km@@f@ k{f@ kf@ kLA0MR@!c/@W	9 L e@@<)7@	A@@A@B@@AC@@B@A@  ,   HE	9 L hc@@b@BA@  ,   @I	@ w 	@ w @AxA@GF@@  ,   8N@zA4{@$ndecG@@ @ k@	@ w 	@ w @@]0@,  8 @@@A5@@ @ k@@Agb@@@d,@A_@ogB@@AC@@vA@@AB@;E@@9B@@ABC@@D@@AC@C@  ,    w	? T r	? T v@@A+@J  8 @@@AS@@ @ k@@Ag@@@+@A}@@A@B@B@  ,   	A  @@A;#$19g  8 @@@A@@@A@@@@-@c  8 @@@A@g@@ @ k@@ @ k@ @ k@@Ag@@@.@  8 @@@Ao@@ @ k@@Ag@@@/@AB!B@  ,   	> # C	> # N@@@ @ k@@ @ k@@ @ kAe@L@AJ@A@  ,   	> # =@@@kA@  ,   	K  
g@A
fA@@@  ,   	K  
k@A
jA@@@  ,   @
lAFu
l
q@(fmt_restt@
v	H L j@@7ʰ@	A@@A@B@@A@A@  ,   ְ	J  	J  @A
A@@@  ,   ۰!	J  @A
A@@@  ,   	@
AA@  ,   '	I v (	I v @@@f@ mg@ m
A&A@  ,   x3	I v ~
@@
@* A@  ,   p7	P  
@A
A@@@  ,   h;	P  
@A
A@@@  ,   \@
A

@(fmt_rest@
F	M  @@9@	A@@A@B@@A@A@  ,   T
P	O 9 FQ	O 9 @A
A@@@  ,   LU	O 9 N@A
A@@@  ,   <	@
AA@  ,   4[	N # .\	N # 8@@@f@ mqg@ mj
ѐA&A@  ,   (!g	N # +
@@
@* A@  ,   %k r rl r r@@	:CamlinternalFormat.fmt_ebb_of_string.parse_after_precisionA@=,V  8 @@@A@@@A@=@@@@?=+X  8 @@@A@@@A@=@@@@C=#Z  8 @@@A@@@A@=@@@@G="\  8 @@@A@@@A@=#@@@@K=^  8 @@@A@@@A@='@@@@O=`  8 @@@A@@@A@=+@@@@S'pct_ind@@ @ X@ n} n n} n@@^'str_ind@@ @ Y@ n} n n} n@@i'end_ind@@ @ YF@ n} n n} n@@t%minus@@ @ Yx@ n} n n} n@@$plus@@ @ Y@ n} n n} n@@$hash@@ @ Y@ n} n n} n@@%space@@ @ Y@ n} n n} n@@#ign@@ @ Z@ n} n n} n@@#pad=z@@ @ Z9{@@ @ Z:@@ @ Z8@ n} n n} n@@$prec=@@ @ ZU@@ @ ZV@@ @ ZT@ n} n n} n@@*parse_conv@0'padding!u @ Z @ [H!v @ Z@@ @ [G=I<< @ Z @ Z@@ @ [F@ @ [Ea@ Z@< o o	= o o@@#padON@@ @ [dM@@ @ [e@@ @ [c@N r rO r r@@@H@@AE@@BtC@@G@@ACLnB@@HK@@AJ@@F@@ABaA@@D@@I@@ABCD@Rs@@mr@@AB@R@@{w@@ACdv@@6t@@A@}~@@@}@@ABD@{@@{qx@@Azy@@(u@@AB@z@@@|@@ACE@<^@@A;m@@B<	j@@<!g@@AC;p@@<:d@@@R @@AB=F@@?1 @@A>@@@BCD=R@@>C@@A? @@@ @@A=WL@@? @@ABC<[@@@> @@A=9O@@? @@ABD<X@@> @@A<U@@=I@@A<ya@@BCEFL@  ,   u q q q r@APA@sr@@  ,   z q q@@TAT!nr@@ @ [@ q q q q@@@  8 @@@A@@ @ [\@@Aa@@@@  8 @@@A@@ @ [@@Ab@@@@AB@@L@@ABCDw[L@  ,    rH rj rH r@@yAy"$0b  8 @@@A@@@A@@@@@@  8 @@@A@i'@@ @ [@@ @ [@ @ [@@Ab@@@@  8 @@@A@@ @ [@@Ab@@@@ABCD}K@  ,    r r0 r rG@AA@@@  ,   Ű r r%@@A!n@@ @ [@ r r  r r!@@@K@  8 @@@A@@ @ [@@Ab@@@@ABְ@@L@@ABCDL@  ,   ) r r* r r@@A"$1b  8 @@@A@@@A@@@@@4d@%  8 @@@A@il@@ @ \"@@ @ \!@ @ \ @@Ab@@@@  8 @@@A1@@ @ \#@@Ab@@@@ABCEK@  ,   TI q qJ q q@@A@O@;  8 @@@AD@@ @ [@@Ab
@@@@AB
SK@  ,   0W qT qhX r r@@A@]@AZK@  ,   $^ qA qE@@A^K@  ,   b o oc o o@A	ECamlinternalFormat.fmt_ebb_of_string.parse_after_precision.parse_convA@@@  ,   "h o o@@A@@A
@B	CDJ@  ,   +q n nr n n@@@`@ Za@ Za@ ZvA2J@  ,   9@A4J@  ,   ; n n@@@8J@  ,   (? o o#@>@@f@ Zf@ [<g@ [5*B"hc  8 @@@A@@@A@3@@@Pfe  8 @@@A@@@A@ o o6@@@@U'padprec|@@ @ Z@@ @ Z@@ @ Z@ o o' o o.@@je@A@@A@F@@AH@@J@@ABK@@?;C@@A'D@@G@@ABL@@I@@ABB@@%E@@ABCD@A@  ,    oC oIi@@h@=A@  ,    mb mj mb m@@	4CamlinternalFormat.fmt_ebb_of_string.parse_precisionAB`?mV  8 @@@A@@@A@?@@@@w?nX  8 @@@A@@@A@?@@@@x?oZ  8 @@@A@@@A@?@@@@y'pct_indp@@ @ R@ g g g g@@z'str_indq@@ @ R@ g g g g@@{'end_indr@@ @ R@	 g g
 g g@@|%minuss@@ @ S@ g g g g@@}$plust"@@ @ S@@ g g  g g@@~$hashu-@@ @ Sa@* g g+ g h@@%spacev8@@ @ S~@5 g h6 g h@@#ignwC@@ @ S@@ g hA g h@@#padxU@Qn@@ @ S@Z@ S@@ @ S@S g hT g h@@-parse_literaly@@0@@ @ TL[@ S@>[@ S???0 @ T2 @ T
@@ @ TE[@ S@ @ S[@ S@ @ S[@ S@s hS h[t hS hh@@1,@{G@@A[D@@BFB@@tF@@AC>A@@/J@@AI@@qE@@AB\C@@H@@$symb~K@@ABCD@wv@@u@@ABBw B@@}z@@ACy@@[w@@AB A@@B @@@ABDB~@@}{@@A}|@@Mx@@ABB}@@B@@ACE@>a@@A=p@@B>.m@@>Fj@@AC=s@@>_g@@Bw @@AB?I@@AV @@A@C@@BCD?(U@@@CF@@AA @@B1 @@A?|O@@B @@ABC>^@@Bc @@A?^R@@A @@ABD?[@@A@@@A?X@@?L@@A>d@@BCEFK@  ,    l l m7 mV@@AlK@  ,   x l! l'@@ApK@  ,   D kc ki kc k@@A_T@@ @ T]@ T@ iv i| iv i@@K@  ,   4 iv i iv i@@*AK@  ,    k k k l@@/A.{@{@Ao2L@@|@ABCDy]L@  ,   \Ű iF iZ iF iu@@<A;K@  ,   <ʰ i) i3 i) i@@T:@@ @ TEBEͰ@@ACDpJ@  ,   ,ذ i) i-O@@NAMJ@  ,   (ܰ" hS hi# i i%AA	BCamlinternalFormat.fmt_ebb_of_string.parse_precision.parse_literalA@@@  ,   ( hS hWY@@XAV߰@@A@BCDI@  ,   1 h h12 h hQ@@@Z@ S[@ S[@ SjAiI@  ,   @mAkI@  ,   A h hr@@q@oI@  ,   XE i i#@A"A@@@  ,   PI h h'@@&A{%minusz@0R hS hn@@'str_ind{@X hS hoY hS hv@@'new_ind|?T@ S@` hy ha hy h@@$prec}?T@ S@h hy hi hy h@@&!@t)C@@A#B@@E@@AD@@#A@@ABC@zE@@AZG@@FI@@AB<J@@AkB@@A?C@@D@@ABpF@@\H@@ACD@E@  ,   <F hy h hy h@5T@ I!mCFH@%@A@B@B@  ,   $R hy hv@@u@MOB@  ,   V f< fB f f@@	8CamlinternalFormat.fmt_ebb_of_string.parse_after_paddingAD,B`V  8 @@@A@@@A@A f g@@@@kjAaX  8 @@@A@@@A@A@@@@okAbZ  8 @@@A@@@A@A	@@@@sl'pct_indc@@ @ M@ e e e e@@~m'str_indd@@ @ N@ e e e e@@n'end_inde@@ @ N?@ e e e e@@o%minusf@@ @ Nh@ e e e e@@p$plusg@@ @ N@ e e e e@@q$hashh@@ @ N@ e e e e@@r%spacei@@ @ N@ e e e e@@s#ignj@@ @ N@
 e e e e@@t#padk"Buo@@ @ NBZ@ N@@ @ N@ e e  e e@@uذ@ZG@@A:D@@B%B@@SF@@ACA@@yI@@ANE@@B9C@@rH@@$symblJ@@ABCD@!y@@<x@@ABD! E@@}@@AC3|@@z@@ADL D@@D` C@@ABDD A@@@~@@A~@@{@@ABD @@@D} B@@ACE@@Xd@@A?s@@B?p@@?m@@AC?Xv@@@	j@@D! @@ABAgL@@C @@@ABRF@@BCD@X@@AI@@AC @@C @@AA&R@@C @@ABC@a@@D
 @@AAU@@Cd @@ABD@^@@BC@@A@[@@AbO@@A@Hg@@BCEFJ@  ,   LD f f@@AUU@@ @ OB@ f f f f@@OvJrJ@  ,   <Q f f f f)@U@@ @ O7BT|tso@n@ACDiMI@  ,   (_ f f@@A\I@  ,   (c e e e f@@@Z@ O&[@ O$[@ OAjI@  ,   q@AlI@  ,   s e e@@@pI@  ,   w c c d6 dX@@	2CamlinternalFormat.fmt_ebb_of_string.parse_paddingAEMCoRV  8 @@@A@@@A@Ci d d@@@@\CoSX  8 @@@A@@@A@Cn@@@@]'pct_indT@@ @ G@ _I _O _I _V@@^'str_indU@@ @ G0@ _I _W _I _^@@_'end_indV@@ @ GZ@ _I __ _I _f@@`$zeroW@@ @ G@ _I _g _I _k@@a%minusX@@ @ G@	 _I _l
 _I _q@@b$plusY@@ @ G@ _I _r _I _v@@c$hashZ"@@ @ G@ _I _w  _I _{@@d%space[-@@ @ G@* _I _|+ _I _@@e#ign\8@@ @ H@5 _I _6 _I _@@f%padty]@@ @ HyY@ H-@A _ _B _ _@@g@vK@@AaG@@7C@@AB"A@@QE@@AJ@@I@@ABCJD@@7B@@AzH@@fF@@ABD@D|@@_{@@ABED H@@ @@@ACV@@(}@@AEo G@@E F@@ABDE D@@c A@@A B@@~@@ABE C@@E E@@ACE@A{g@@A@v@@B@s@@Ap@@AC@{y@@A,m@@ED @@ABBO@@D#C@@ACuI@@BCDA[@@CL@@AD @@D @@ABIU@@D @@ABCAd@@E0 @@AB+X@@D@@@ABDAa@@CF@@AA^@@BR@@AAkj@@BCEFK@  ,   Lg dj dr d d@@AekK@  ,   l b b c c@@AjpK@  ,   q by b by b@"@@Y@ JZ@ JZ@ JRCx~K@  ,   @AzK@  ,    bU b]@@	A~K@  ,    b' b-@@
AK@  ,   L a b a b@AA@@@  ,   @ a a@@AK@  ,    a| a a| a@AA@@@  ,    a0 a6@@A 'new_ind^B T@ I@ ` ` ` a@@h%width_B
T@ I@ ` a ` a	@@i@vL@AB@@N@@ABCD@M@@A@BCEN@  ,    ` a ` a,@B"GCGK@  ,   İ
 ` `2@@LAKK@  ,   Ȱ ` ` ` `@W8@@ @ HUBU˰@@A@BCDJ@  ,   |װ ` `O@@_A^	J@  ,   t۰! _ `" _ `
@@dAbٰ@@@ABCDI@  ,   h+ ` `&, ` `*@@nAl
I@  ,   P0 `+ `C1 `+ `H@@sAqI@  ,   H5 ` `6 ` `@Y@ HY@ HZ@ HD~I@  ,   
@AI@  ,   D `a `E `a `@@A#I@  ,   I `a `i@@A 'I@  ,   M _ _@@A+I@  ,   Q _ _R _ _@@@X@ H,Y@ H*Y@ H A9I@  ,   @A;I@  ,   a _ _@@@?I@  ,   e} ^v ^zf} ^v ^@@	0CamlinternalFormat.fmt_ebb_of_string.parse_flagsAFEgAV  8 @@@A@@@A@Ea@@@@4LEfBX  8 @@@A@@@A@Ee@@@@8M'pct_indC@@ @ B@d Zp Zvd Zp Z}@@CN'str_indD@@ @ B!@d Zp Z~d Zp Z@@NO'end_indE@@ @ B7@d Zp Zd Zp Z@@YP#ignF@@ @ BI@d Zp Zd Zp Z@@dQ$zeroGRN@@ @ BbY@ B[@@ @ B`Y@ BS@e Z Ze Z Z@@vR%minusHRŠN@@ @ BoY@ Bh@@ @ BmY@ BT@e Z Ze Z Z@@S$plusIRנO@@ @ B|Y@ Bu@@ @ BzY@ BU@f Z Zf Z Z@@T%spaceJRO@@ @ BY@ B@@ @ BY@ BV@f Z Zf Z Z@@U$hashKRO0@@ @ BY@ B@@ @ BY@ BW@ g Z Zg Z Z@@V(set_flagL@}@@ @ CY@ B@Sqa@@ @ BY@ C@@ @ CY@ B@@ @ CY@ B@ @ BY@ B@ @ BY@ B@%h [ [&h [ [@@W*read_flagsP@F@@ @ EY@ CEEE @ Ek @ El@@ @ EY@ C@ @ CZ@ C@@p \5 \AAp \5 \K@@Z@B@@YI@@ABA@@F@@ACD@@G@@+K@@ABQJ@@xH@@AC@@E@@ABCD@B@@]~@@ABGB K@@ C@@ACT B@@& @@@AGm J@@G I@@ABDG G@@a D@@A E@@ A@@ABG F@@G H@@ACE@Cyj@@ABy@@BBv@@Cs@@ACBy|@@C*p@@GB @@ABDR@@F!F@@AEsL@@BCDC^@@EO@@AF@@@F @@ADGX@@F @@ABCCg@@G. @@AD)[@@FC@@ABDCd@@EI@@ACa@@DU@@ACim@@BCEFK@  ,   Hep \5 \9F@@EACbia@a@A^\BZYCDW;J@  ,   Dnh [ [ n \ \-AA	9CamlinternalFormat.fmt_ebb_of_string.parse_flags.set_flagA@ml@@  ,   (th [ [U@@TAQqxp@o@j@ABihCDfJI@  ,    }g Z [g Z [@A^A@{z@@  ,   f Z Zf Z Z@AcA@@@  ,   f Z Zf Z Z@AhA@@@  ,   e Z Ze Z Z@AmA@@@  ,   e Z Ze Z Z@ArA@@@  ,   e Z Zw@@v@n@@A@@A@BClD@  ,   n \ \ n \ \,@@1A搰27@'str_indN@<h [ ['@@X$flagO@h [ [(h [ [,@@Y@
A@@B@@AB@EB@@AHMD@@HVC@@AB@B@  ,   k [ [m [ \@p@@Y@ CZ@ BYD)B@  ,   Ͱm [ \@_T@@Z@ C\@ CdB4"E@  ,   @gA6$B@  ,   pڰ j [h [nl@@k@:(B@  ,   ް$y ^	 ^%z ^7 ^d@@	;CamlinternalFormat.fmt_ebb_of_string.parse_flags.read_flagsA'str_indQ@,p \5 \L-p \5 \S@@[@xB@@A
A@@B@F@@AJL@@G@@ABI@@G'D@@AE@@wJ@@ABCBM@@iK@@HB@@ABHsC@@H@@ACD@'@@@AB@  ,   Rs \ \Ss \ \@@@Y@ DQZ@ DF4B4,)@tC@@AB+C@  ,   cs \ \@@>A=	C@  ,   !gt \ ]ht \ ]"@@@Y@ DZ@ DIBI&C@  ,   -st \ ]<@@NAM*C@  ,   |1wu ]= ]Lxu ]= ]a@@@Y@ DZ@ DYBY6%C@  ,   d=u ]= ]|@@^A]:)C@  ,   LAv ]} ]v ]} ]@@@Y@ EZ@ DiBiF5C@  ,   4Mv ]} ]@@nAmJ9C@  ,   Qw ] ]w ] ]@ @@Y@ EAZ@ E6yByVEC@  ,   ]w ] ]@@~A}ZIC@  ,   xar \ \r \ \@Y@@ @ DBd@|@A{cA@  ,   hmr \ \{ ^e ^n@@AkA@  ,   hrq \V \vq \V \@#@@Y@ D	Z@ DZ@ CAyA@  ,   X@A{A@  ,   @q \V \\@@@A@  ,   _ Y Y_ Y Y@@	.CamlinternalFormat.fmt_ebb_of_string.parse_ignAIUG<V  8 @@@A@@@A@G` Y Z@@@@GG=X  8 @@@A@@@A@G@@@@H'pct_ind>@@ @ @s@\ Y) Y/\ Y) Y6@@I'str_ind?@@ @ @@\ Y) Y7\ Y) Y>@@J'end_ind@@@ @ @@\ Y) Y?\ Y) YF@@K@yD@@AA@@B)C@@ B@@AC@ B@@ A@@ABH N@@V F@@AC E@@ C@@AI M@@I/ L@@ABDIe J@@ G@@A H@@ D@@ABIt I@@IL K@@ACE@E'm@@ADh|@@BDy@@Dv@@ACD'@@Ds@@H @@ABF6U@@GI@@AG!O@@BCDEa@@FR@@AHWC@@H @@AE[@@H@@@ABCEVj@@H @@AE^@@H3F@@ABDE}g@@GL@@AEd@@F1X@@AEp@@BCEFD@  ,   Y` Y Y@@A\D@  ,   ]^ Y Y^^ Y Y@Z@@ @ @B@c@AbaB_CC@  ,   $j^ Y Y@@A!C@  ,   (n] YJ Yho] YJ Y@@@X@ @Y@ @Y@ @A/C@  ,   6@A1C@  ,   8~] YJ YN@@@5C@  ,   <Y X XY X X@@	1CamlinternalFormat.fmt_ebb_of_string.parse_format@J
H8V  8 @@@A@@@A@H	@@@@HCH9X  8 @@@A@@@A@H
@@@@LD'pct_ind:@@ @ ?@Y X XY X X@@WE'end_ind;@@ @ ?@Y X XY X X@@bF]@A@@B@@AB@ E@@ D@@ABI Q@@ I@@AC H@@x F@@AI P@@I O@@ABDJ	 M@@ J@@A: K@@j G@@ABJ L@@I N@@ACE@Ep@@AE@@BEK|@@Ecy@@ACD B@@E|v@@I @@ABFX@@HsL@@AGR@@BCDFEd@@G`U@@AHF@@IN@@@AF^@@I,C@@ABCEm@@I @@AF{a@@HI@@ABDF!j@@H5O@@AF:g@@F[@@AEs@@BCEFB@  ,   `P W@ WHP W@ Wn@@	2CamlinternalFormat.fmt_ebb_of_string.parse_literalAJI{-V  8 @@@A@@@A@IuU X X6@@@@8I{.X  8 @@@A@@@A@Iz@@@@9)lit_start/,@@ @ =O@K Va VgK Va Vp@@:'str_ind07@@ @ =e@$K Va Vq%K Va Vx@@;'end_ind1B@@ @ =w@/K Va Vy0K Va V@@<+$Fmt_EBB_'a2Y  8 @@@A@@@A@@@@=+$Fmt_EBB_'d3Y  8 @@@A@@@A@@@@>(fmt_rest4@@ @ >II@@ @ >I@@X@ >DX@ =K@@X@ >EX@ =@@ @ >@[O W W\O W W@@?@{E{ D@@AAA@@0F@@ABZC@@QB@@AC@U H@@p G@@ABJU T@@ L@@ACg K@@9 I@@AJ S@@J R@@ABDJ P@@t M@@A N@@+ J@@ABJ O@@J Q@@ACE@Fs@@AE B@@BF@@F$|@@ACE E@@F=y@@JU @@ABG[@@I4O@@AHU@@BCDGg@@H!X@@AII@@JC@@AGZa@@IF@@ABCFp@@JA@@@AG<d@@IL@@ABDFm@@HR@@AFj@@G^@@AF|v@@BCEFF@  ,   TxO W W O W W<@JJJzt@@ @ =ɐB@h@Af@BcbC`DD@  ,   DO W W	@@AD@  ,   ,S W WS W W@@Aֱ,$Fmt_EBB_'a15Y  8 @@@A@@@A@@@@@,$Fmt_EBB_'d16Y  8 @@@A@@@A@@@@A(fmt_rest7@@ @ >GڠG٠@@ @ >@@X@ >X@ >a@@X@ >X@ >b@@ @ >@ R W~ WR W~ W@@B@{E@A@+F@@ABCF@  ,    ɰR W~ WR W~ W@HHH$@@ @ >nBQD@  ,   װR W~ WI@@AUD@  ,   ۰!U X X	@@#AYD@  ,   ߰%M V V&M V V@\O@@ @ =,B)@@ABC@  ,   2M V V(@@4A0C@  ,   6L V V7L V V@@9A5C@  ,   ;L V V1@@=@9C@  ,   \?G U U@G U U@@	*CamlinternalFormat.fmt_ebb_of_string.parse@KǱJ)V  8 @@@A@@@A@J	@@@@4J*X  8 @@@A@@@A@J
@@@@	5'beg_ind+i@@ @ <@VG U UWG U U@@6'end_ind,t@@ @ <@aG U UbG U U@@7@B@@AA@@B@Q K@@l J@@ABKQ W@@ O@@ACc N@@5 L@@AK| V@@K U@@ABDK S@@p P@@A Q@@' M@@ABK R@@K T@@ACE@Gv@@AF E@@BG B@@G @@ACF H@@G9|@@KQ@@@ABH^@@J0R@@AIX@@BCDHj@@I[@@AJL@@KF@@AHVd@@JI@@ABCGs@@K=C@@AH8g@@JO@@ABDGp@@IU@@AGm@@Ha@@AGxy@@BCEFB@  ,   ,t M Wt@@@U@ W@ yAw h h@#str@ h @@%fmtty@ h  h @@+$Fmt_EBB_'aT  8 @@@A@@@A@@@@+$Fmt_EBB_'dT  8 @@@A@@@A@@@@#fmt@@ @ ĠS@ S@ S@ S@ @@ @ ŠS@ S@ S@ S@ @@ @ @    @@@|*C@@AP)E@@.D@@AB>A@@FB@@AC@B@@AZE@@B@F@@D@@C@@ABC@E@  ,   ذ  @@A]E@  , ܰ"  #  @AA@@@  , '  (  @p@@T@ T@ Bt@1@-@AB,+C)@I@  , =  @@A|D@  , A  B  @M\YQN@@ @ B@@?B=@B@  , Q  @@
@B@  , U  @@A
_  @#str@$d  @@!$fmt'pP@@ @ @s  #t  '@@1$str'l@@ @ @}  )~  -@@;+$Fmt_EBB_'aU  8 @@@A@@@A@=@@@?+$Fmt_EBB_'dU  8 @@@A@@@A@A@@@C#fmt7@@ @ +WT@ LT@ [T@ MT@  @@ @ ,dT@ OT@ hT@ PT@ @@ @ *@ 2 @ 2 C@@gb@}k,E@@AQw+G@@.F@@ABQD@@A@@A\B@@HC@@ABC@]B@@AE@@BF@@C@@AD@@BC@G@  , ` _ e _ @AA@@@  , X _ m _ @p{xurol@@U@ =U@ ZB@2@.@AB-,C%@K@  , H _ }@S@ CS@ lS@ DS@ mS@ ES@ nS@ FS@ oS@ GS@ pS@ HS@ q@@V@ A%K@  , , _ a@@A)F@  ,  Ű 2 F 2 [@~{sp@@ @ ӐB̰@d@Aa@B_^C\@D@  , װ 2 4@@ADA  , ~A@ذ@k@j@ABg@B  , ~) 9 9'* 9 95@}S@ 'S@ 'S@ '`=CamlinternalFormat.strput_accB!b@= 6 7> 6 7@@#accS@ &0@F 6 7G 6 7	@@!p@@ @ &uV@ &n@T 8 9U 8 9@@!c@@ @ &vV@ &o@` 8 9a 8 9@@-
.@)A@@A1B@@EC@@F*D@@ABC@<B@@A@@@@AF@  , ~5R{ 9 9J@@KAI3%4F@  , ~; 8 8 8 8@S@ '$TBS!p\@@ @ &eV@ &^@ 8 8 8 8@@S!s_@@ @ &fV@ &_@ 8 8 8 8@@_/
0\@A@A@@F$D@@AEC@@BC?=F@  , ~p5 8 8@@A1-oF@  , ~Pv 9 9 9 9@B!p1$@@ @ &@ 9 9 9 9@@#msg2@@ @ &@ 9 9 9 9@@@s@Ar@C@@D@@ABCkiD@  , ~D& 9 :@@A#D@  , ~  9 9 9 9@@A!plKF@@ @ &@ 9 9 9 9@@@@A@C@@ABC@  , } 9K 9 9K 9@VϐA̠!pe`@@ @ &~@ 9K 9Z
 9K 9[@@!f@pj@ @ &@ 9K 9] 9K 9^@@ΰ@@A@C@@D@@ABCD@  , }ܰ" 9K 9k# 9K 9y@B%D@  , }+@@A(D@  , }, 8F 8Z- 8F 8r@@@T@ 'CU@ '5B !pZ@@ @ &Q@@ 8 8-A 8 8.@@$acc'i@@ @ &W@L 8 8=M 8 8A@@
@
C@@A@F@@A@"E!pD@@ABCF@  , }` 8F 8Ja 8F 8X@S@ (S@ &5B2F@  , }$
j 8F 8@@:A6!F@  , }p(n 7 7o 7 8 @@@T@ 'U@ &EBB٠@@ @ &D@ 7 7 7 7@@>$acc'@@ @ &J@ 7 7 7 7@@JE@)@E@@A+@;@ABC!E@  , }TR 7 7 7 7@:S@ &lB'TE@  , }H[	 7 8@@qA+XE@  , |_ 7x 7| 7x 7@wBu!p	@@ @ &=@ 7 73 7 74@@s*fmting_lit@@ @ &>@ 7 76 7 7@@@}!sQ@@ @ &U@ &@ 7E 7M 7E 7N@@@i@Ah@C@@A)D@@E@@ABCcaE@  , |5 7x 7@@A2
EA  , | 7E 7Q 7E 7t@AA9|@@@ABCsqD  , | 7E 7I@@AB	D@  , | : :' : :)@@A@@@AB~B@  , | 6 7@@@B@  , |h 4 5 4 5 @wS@ %YS@ %+S@ $=CamlinternalFormat.bufput_accB!b[@} 2 2} 2 2@@#acc\S@ !T@} 2 2} 2 2@@!pgԠ@@ @ !V@ !@& 4 4' 4 4@@!ch@@ @ !V@ !@2 4 43 4 4@@1
2@)A@@A1B@@EC@@F*D@@ABC@B@@A@@@@AF@  , |\RM 4 55@@KAI3%F@  , |$
S 4 4T 4 4@S@ $TBS!pc.@@ @ !V@ !@g 4r 4h 4r 4@@%!sd1@@ @ !V@ !@s 4r 4t 4r 4@@13
4.@A@A@@F$D@@AEC@@BC?=F@  , |B5 4 4@@A1-AF@  , {H 5 5 5 5@B!pn@@ @ !@ 5 5 5 5@@[#msgo@@ @ !@ 5 5 5 5@@e`@s@Ar@C@@D@@ABCkiD@  , {n& 5 5@@A#kD@  , {r 5j 5 5j 5@@A!pm>B@@@ @ !@ 5j 5x 5j 5y@@}@@A@C@@ABC@  , { 56 5V 56 5d@ϐB̠!pks\Z@@ @ !@ 56 5E 56 5F@@!fl@gd@ @ !@ 56 5H 56 5I@@@@A@C@@D@@ABCD@  , {% 56 5i@@A"D@  , {d 41 4E 41 4]@a@@T@ $U@ $B!pa&@@ @ !u@ 4  4
 4  4@@$acc'b5@@ @ !{@ 4  4( 4  4,@@Ѱ@C@@A@F@@A@"E!p_D@@ABCF@  , {H, 41 45- 41 4C@S@ %S@ $/B2F@  , {<
6 41 4q@@4A6F@  , {: 3 3; 3 3@@@T@ $U@ $?B<fʠ@@ @ !h@L 3 3M 3 3@@
$acc'`֠@@ @ !n@X 3 3Y 3 3@@@#@E@@A%@;@ABCE@  , zd 3 3e 3 3@:S@ !fB' E@  , z'	m 3 3@@kA+$E@  , z+q 3c 3gr 3c 3u@qBo!p]@@ @ !a@~ 3 3~ 3 3@@?*fmting_lit^@@ @ !b@~ 3 3!~ 3 3+@@I!sp@@ @ !U@ !@ 30 38 30 39@@UP@c@Ab@C@@A)D@@E@@ABC][E@  , z`5 3c 3@@A2]
EA  , zf 30 3< 30 3_@AA9ev@@@ABCmkD  , zq 30 34@@ABn	D@  , zlu 5 5 5 5@@As@@@ABzxB@  , z8}} 2 2@@@zB@  , zt 1 1:t 1 1H@pS@  S@  S@  qS@  KS@  %=CamlinternalFormat.output_accB!oD@i / /'i / /(@@}#accES@ 	@i / /)i / /,@@~!pP@@ @ NV@ G@s 0 1s 0 1@@!cQ@@ @ OV@ H@s 0 1s 0 1@@5
6@)A@@AEC@@6B@@F*~D@@ABC@B@@A@@@@AF@  , zװVt 1 1Y@@KAI3%F@  , yݰ#r 0 0$r 0 0@S@ TBS!pLݠ@@ @ >V@ 7@7q 0 08q 0 0@@!sM@@ @ ?V@ 8@Cq 0 0Dq 0 0@@7
8@A@A;@F$zD@@AE{C@@BC?=F@  , y5Xr 0 0@@A1-F@  , y^w 1 1_w 1 1@B!pWӠ@@ @ c@mw 1 1nw 1 1@@+#msgX@@ @ d@ww 1 1xw 1 1@@50@s@AC@@o@D@@ABCkiD@  , y>&w 1 2@@A#;D@  , yTBv 1 1v 1 1@B!pV<;@@ @ ]@v 1 1v 1 1@@TO@@A@C@@ABC@  , yH[v 1 1@@AX	C@  , y,_u 1Z 1zu 1Z 1@ՐBҠ!pTIZY@@ @ W@u 1Z 1iu 1Z 1j@@r!fU@ec@ @ X@u 1Z 1lu 1Z 1m@@{v@@A
C@@@D@@ABCD@  , y %u 1Z 1@@A"D@  , xp 0a 0up 0a 0@7@@T@  
U@  B !pJ@@ @ *@o 00 0Ho 00 0I@@$acc'K@@ @ 0@o 00 0Xo 00 0\@@@C@@A@F@@A@"E!pHD@@ABCF@  , xp 0a 0ep 0a 0s@5S@ 3B0F@  , xİ
p 0a 0@@8A4F@  , xȰn / 0n / 0@w@@T@ U@ CB@:Ơ@@ @ @ m / /!m / /@@$acc'I]Ҡ@@ @ #@,m / /-m / /@@>'@E@@A$@9@ABCE@  , x8n / /9n / 0@8S@ jB'E@  , x	An / 0/@@oA+E@  , x8El / /Fl / /@uBs!pF@@ @ @Uj /> /VVj /> /W@@*fmting_litG@@ @ @_j /> /Y`j /> /c@@!sY@@ @ U@ z@kk /h /plk /h /q@@)$@g@AC@@d@A)D@@E@@ABCa_E@  , x,45zl / /@@A21
EA  , x(:k /h /tk /h /@AA99@v@@ABCqoD  , x Ek /h /l@@ABB	D@  , x Ix 2 2'x 2 2)@@AG@@@AB~|B@  , wQi / //@@@NB@  , wU_ -a -i_ -a -}@@	%CamlinternalFormat.fn_of_custom_arityAQx/U  8 @@@A@@@A@ra - -@@@@kax0W  8 @@@A@@@A@w@@@@ob1Y  8 @@@A@@@A@{	@@@@sc2[  8 @@@A@@@A@
@@@@wd3]  8 @@@A@@@A@@@@@{e4_  8 @@@A@@@A@@@@@f5a  8 @@@A@@@A@@@@@g6c  8 @@@A@@@A@@@@@h7e  8 @@@A@@@A@!@@@@i!k8@@@ @ @@ @ @ @ @] -2 -8] -2 -9@@j!o9@@ @ @] -2 -:] -2 -;@@k#fmt:B@@ @ C@@ @ D@@ @ E@@ @ F@@ @ G@@ @ @@ @ @] -2 -<] -2 -?@@l@l  8 @@@A	@@ @ @@Af@@@m@l  8 @@@Au@@ @ @@Af@@@n@ABݰ@?B@@]D@@ABMC@@BA@@AC@D@@AIC@@B@@AB@C@@@A @@ @@ABDB  , wBa - -@$$113=f@@ff ff D$$111;f  8 @@@A@@@A@@@@o$$112<f  8 @@@A@@@A@@@@p  8 @@@A@@@A@@@@r%arity>wbG@@ @ 7@@ @ 8'@@ @ 9@@ @ 6@r` -~ -s` -~ -@@0t@`  8 @@@A@)@@ @ 1@@ @ 0@ @ /@@Af;@@@=q@_  8 @@@A@
@@ @ 5D@@ @ 4@ @ 3@@AfG@@@Is@ABD@5E@@AihBfeCb\E@  , wpPa - -@@AH#N
E[  , wXVA@QtD^  , w<YW , ,,W , ,J@$$102&h@@hh hh 	*CamlinternalFormat.fn_of_padding_precisionAcU  8 @@@A@@@A@Y ,s ,@@@@}W  8 @@@A@@@A@@@@@Y  8 @@@A@@@A@	@@@@[  8 @@@A@@@A@
@@@@]  8 @@@A@@@A@@@@@
_  8 @@@A@@@A@@@@@a  8 @@@A@@@A@@@@@c  8 @@@A@@@A@@@@@0e  8 @@@A@@@A@!@@@@ 8g  8 @@@A@@@A@%@@@@!!k@@@ @ @@ @ @ @ @G ) )G ) )@@"!o@@ @ @G ) ) G ) )@@##fmt QB@@ @ C@@ @ D@@ @ 
E@@ @ F@@ @ G@@ @ @@ @ 
@(G ) ))G ) )@@$#pad!=Yx@@ @ 5x@@ @ 6@@ @ 4@=G ) )>G ) )@@%$prec"R]@@ @ Q@@@ @ T@@ @ S@ @ R@@ @ P@XG ) )YG ) )@@&  8 @@@A@@@A@@@@;@*  8 @@@A@}@@ @ e@@ @ d@ @ c@@Ah"@@@$<@"  8 @@@A@!@@ @ } @@ @ |@ @ {@@Ah/@@@1>@A  8 @@@AA@@ @ f@@Ah5@@@7=@BC2@C@@AE@@D@@ABZB@@GA@@AC@6G@@AF@@E@@AB@C@@A@@@( @@ABE@  , w0PW , ,3W , ,I@I@@hh !hh CEX&E@  , w_W , ,&@@AJ]+E@  , wdU + +U + +@$$101%h@@hh hh A
  8 @@@A@@@A@s@@@u7@  8 @@@A@}@@ @ !@@ @  @ @ @@Ah@@@8@  8 @@@A@~@@ @ 8}@@ @ 7@ @ 6@@Ah@@@:@A"  8 @@@A@@ @ "@@Ah@@@9@BC]E@  , w U + +U + +@@@hh hh <C1.lE@  , vU + +A@@BA63qE@  , vY ,s ,1@$$103'h@@hh {hh ;PAP  8 @@@A@@@A@@@@?$$104(h  8 @@@A@@@A@@@@B@  8 @@@A@~?@@ @ @@ @ @ @ @@Ah@@@@@  8 @@@A@}K@@ @ @@ @ @ @ @@Ah@@@C@A(  8 @@@A@@ @ @@Ah@@@A@
  8 @@@A@@@ @ @@ @ @ @ @@Ah@@@D@ABCE@  , v3Y ,s ,4Y ,s ,@@@hh hh FAA9E@  , v@Y ,s ,AY ,s ,@@hh hh mCOGE@  , vNY ,s ,{@@ATLE@  , v
SQ +' +5TQ +' +K@@@hh 'hh C@-  8 @@@A@@@ h @@ h @ h @@Ah%@@@'2@A3  8 @@@A<@@ @ @@Ah+@@@-1@B(E@  , vp/uQ +' +/"@@A-E@  , v`4zO * *{O * *@-@@hh hh ڐC@T  8 @@@A@>@@ h h=@@ h g@ h f@@AhL@@@N0@AZ  8 @@@Ac@@ @ O@@AhR@@@T/@BOE@  , vLVO * *"@@AT"E@  , v<[S +t +S +t +@$$100$h@@hh uhh AA  8 @@@A@@@A@j@@@l4@  8 @@@A@}@@ h @@ @ @ h @@Ahw@@@y5@A  8 @@@A@@ @ @@Ah}@@@3@  8 @@@A@{@@ @ z@@ @ @ @ @@Ah@@@6@ABTE@  , v0S +t +S +t +@@1hh yhh h2C0-bE@  , vS +t +|@@@8A52gE@  , uK *8 *FK *8 *\@@@hh Qhh EFCD@  8 @@@A@@@ h @@ h @ h @@Ah@@@*@A  8 @@@A@@ @ @@Ah@@@)@BE@  , u°K *8 *@"@@_A\E@  , uǰ
I ) )I ) *@@@hh hh mCk@  8 @@@A@@@ h @@ h @ h @@Ah@@@(@A  8 @@@A@@ @ @@Ah@@@'@BE@  , u/I ) )"@@AE@  , u4M * *5M * *@#$99#h@@hh hh kA  8 @@@A@@@A@@@@,@  8 @@@A@~@@ h #@@ @ "@ h !@@Ah
@@@-@A  8 @@@A!@@ @ 	@@Ah@@@+@  8 @@@A@@@ @ &
@@ @ %@ @ $@@Ah@@@.@ABE@  , u fM * *gM * *@@1hh hh ŐC0-'E@  , u.tM * *@@@A52,E@  , uT3yG ) )@@@0E@  , u(7}" # $~" # $%@@?CamlinternalFormat.make_iprintfA4	:U  8 @@@A@@@A@B ( (@@@@Nձ	;W  8 @@@A@@@A@@@@@Rֱ<Y  8 @@@A@@@A@	@@@@Vױ=[  8 @@@A@@@A@ 
@@@@Zر>]  8 @@@A@@@A@@@@@^ٱ+?_  8 @@@A@@@A@@@@@bڱ3@a  8 @@@A@@@A@@@@@f۠!kA@@@ @ 1@@ @ 0@ @ /@ T Z T [@@wܠ!oB@@ @ O@ T \ T ]@@ݠ#fmtCLC@@ @ nC@@ @ oD@@ @ pE@@ @ qF@@ @ rG@@ @ s@@ @ m@ T ^ T a@@ޱ*$Custom_'ab  8 @@@A@@@A@@@@*$Custom_'xb  8 @@@A@@@A@@@@%arityz@@ @ ܠ@@ @ ݠ:@@ @ @@ @ @
! # #! # #@@U$restz@@ @ G@@ @ F@@ @ E@@ @ D@@ @ C@@ @ @@ @ @/! # #0! # #@@V@?E@@AqA@@BC@@B@@-D@@ABC@J@@AUI@@H@@AB@OF@@AC@@@@@ABE@  , u L: 'S 'nM: 'S '|@A	%CamlinternalFormat.make_iprintf.(fun)A@@@  , tR: 'S '[S: 'S '@@AԱ1$Ignored_param_'yb  8 @@@A@@@A@@@@11$Ignored_param_'xb  8 @@@A@@@A@@@@2#ignz@@ @ U@@ @ V@@ @ W@@ @ X!@@ @ Y"@@ @ Z@@ @ T@9 '0 'E9 '0 'H@@?a$rest{n@@ @ \@@ @ ]@@ @ ^ @@ @ _@@ @ `@@ @ a@@ @ [@9 '0 'J9 '0 'N@@ab\@r@KE@@ABs@r@*D@@ABCqkE@  , tk8 '
 '8 '
 '/@#$31b@@bb bb ?C>	  8 @@@A@@@A@}@@@/$rest{@@ @ @@ @ @@ @  @@ @ !@@ @ "@@ @ #@@ @ @7 & '7 & '@@`@  8 @@@A@z6@@ @ 8@@ @ @ @ @@Ab@@@0@A@@A@@4D@@ABCD@  , t8 '
 'J@@}A=D@  , t 6 & &6 & &@#$30b@@bb bb C	  8 @@@A@@@A@@@@-$rest{@@ @ J@@ @ I@@ @ H@@ @ G@@ @ F@@ @ @@ @ @25 & &35 & &@@_@f  8 @@@A@z@@ @ 8@@ @ @ @ @@Ab@@@.@AO@
@3D@@ABC	D@  , tI6 & &I@@A<
D@  , thN4 &} &O4 &} &@#$29b@@bb Jbb >ܐC	  8 @@@A@@@A@@@@+$rest|K@@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @3 &Y &t3 &Y &x@@>^@  8 @@@A@y@@ @ 8@@ @ @ @ @@AbH@@@J,@AEY@X@3D@@ABCWQD@  , tXQ4 &} &I@@A<O
D@  , tHV& $ $& $ $@@@b@ 4b@ d&B&#$12b  8 @@@A@@@A@g@@@i#$13b  8 @@@A@@@A@k@@@m#$14b  8 @@@A@@@A@o@@@q@  8 @@@A@@@ @ @@ @ @ @ @@Ab}@@@@  8 @@@A@@@@ @ "@@ @ !@ @  "@@ @ @ @ @@Ab@@@@AB@@ABC@  , t0@@\A5&C@  , t$@ ( (@ ( (@AA@@@  , t@ ( (@ ( (@@gAf4$Formatting_gen_'e11b  8 @@@A@@@A@@@@54$Formatting_gen_'f11b  8 @@@A@@@A@@@@6$fmt'|ܠ*@@ @ n)@@ @ o(@@ @ p'@@ @ q!@@ @ r"@@ @ s@@ @ m@? (P (x? (P (|@@g$rest} @@ @ M@@ @ L@@ @  @@ @ J@@ @ I@@ @ @@ @ @5? (P (6? (P (@@h@pFmD@@A
@QG@@AB@
@0E@@ABC	G@  , sI> ( ($J> ( (H@AA@ @@  , sN> ( (O> ( (O@@Aб3$Formatting_gen_'e1b  8 @@@A@@@A@@@@33$Formatting_gen_'f1b  8 @@@A@@@A@@@@4$fmt'}F@@ @ @@ @ @@ @ @@ @ !@@ @ "@@ @ @@ @ @}= ' '~= ' '@@;d$rest}j@@ @ 
@@ @ @@ @  @@ @ 
@@ @ @@ @ @@ @ 	@= ' (= ' (
@@]eX@anFj@Ar@OG@@ABs@r@.E@@ABCqkG@  , sxk< ' '< ' '@@4A0$rest}@@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @; ' '; ' '@@c@@'D@@ABCD@  , s\  # #  # #@#$11}b@@bb bb lCm"$9{b  8 @@@A@@@A@@@@#$10|b  8 @@@A@@@A@@@@
  8 @@@A@@@A@@@@$rest~}@@ @ @@ @ @@ @ 2@@ @ 1@@ @ 0@@ @ @@ @ @ # # # #@@T@P  8 @@@A@@!@@ @ @@ @ @ @ I@@ @ @ @ @@Ab@@@@*  8 @@@A`@@ @ @@Ab@@@@,  8 @@@Ab@@ @ @@Ab@@@@ABCL@@HD@@ABC D@  , sL F  # #h@@A[)
D@  , s0K #s #L #s #@@"$6wb@@bb "$8yb@bb @bb bb A"$5vb  8 @@@A@@@A@%@@@'  8 @@@A@@@A@'@@@)"$7xb  8 @@@A@@@A@+@@@-  8 @@@A@@@A@-@@@/$restz~^ @@ @ e@@ @ f@@ @ g@@ @ h@@ @ i@@ @ j@@ @ d@ #_ #k #_ #o@@SS@  8 @@@A@@!@@ @ a@R@@ @ ]$@@ @ `@ @ _@ @ ^@R@@ @ \@ @ [@ @ Z@@Abi@@@k	@1  8 @@@A@@ @ b@@Abp@@@r
@3  8 @@@A@@ @ c@@Abw@@@y@ABCt@@OD@@ABCD@  , s$ #s # #s #@qbb LCj5D@  , s #s #{@@RAo:D@  , s 0 % %2 &( &X@AA@@@  , r@ZAa0$Format_subst_'db  8 @@@A@@@A@@@@!0$Format_subst_'ab  8 @@@A@@@A@@@@"#$22b  8 @@@A@@@A@@@@##$23b  8 @@@A@@@A@@@@$#$24b  8 @@@A@@@A@@@@%#$25b  8 @@@A@@@A@@@@&#$26b  8 @@@A@@@A@@@@'#$27b  8 @@@A@@@A@@@@(#$28b  8 @@@A@@@A@@@@)%fmttyy'%@@ @ c&@@ @ d'@@ @ e(@@ @ f)@@ @ g*@@ @ h+@@ @ i_@@ @ j^@@ @ k]@@ @ l\@@ @ m]@@ @ n@@ @ b@I/ % %J/ % %@@[$rest6@@ @ p@@ @ q@@ @ r @@ @ s@@ @ t@@ @ u@@ @ o@k/ % %l/ % %@@)\@  8 @@@A@=h@@ @ [g@@ @ \f@@ @ ]e@@ @ ^d@@ @ _c@@ @ `@@ @ Zb@@ @ Y@ @ X@@AbL@@@N*@AI@_@E@@AB`@_@OD@@ABC^XE@  , rX. % %. % %@#$21b@@bb :bb .,C1#$15b  8 @@@A@@@A@r@@@t#$16b  8 @@@A@@@A@v@@@x#$17b  8 @@@A@@@A@z@@@|#$18b  8 @@@A@@@A@~@@@#$19b  8 @@@A@@@A@@@@#$20b  8 @@@A@@@A@@@@'  8 @@@A@@@A@@@@$rest2@@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @- %~ %- %~ %@@Z@"  8 @@@A@1H@@ @ I@@ @ J@@ @ K@@ @ L@@ @ M@@ @ @@ @ u@@ @ @ @  @@Ab@@@ @AҰ*@@RD@@ABCD@  , rް$. % %@@Ay5
D@  , r), %` %h*, %` %}@@A$restd@@ @ c@@ @ b@@ @ a@@ @ `@@ @  _@@ @ @@ @ @K+ %@ %WL+ %@ %[@@	Y\@@'D@@ABCD@  , rhV* %" %*W* %" %?@@Aՠ$restC@@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @x) %  %y) %  %@@6X1E@D@'D@@ABCC=D@  , rH=( $ $( $ $@@A$restp@@ @ V@@ @ W@@ @ X@@ @ Y@@ @ Z@@ @ [@@ @ U@' $ $' $ $@@cW^r@q@'D@@ABCpjD@  , r,j #1 #? #1 #^@"$4tb@@bb ~bb J<A<)$Bool_'a2sb  8 @@@A@@@A@}@@@  8 @@@A@@@A@@@@$restu@@ @  @@ @ !@@ @ "@@ @ #@@ @ $@@ @ %@@ @ @ #
 #( #
 #,@@R@  8 @@@A@$@@ @ <@@ @ @ @ @@Ab@@@@?  8 @@@A@@@ @ 1@@ @ @ @ @@Ab@@@@AB@^D@@A@B@@DE@@ABCE@  , r ǰ
 #1 #F #1 #]@F@\bb bb qC[/E@  , rհ #1 #9k@@A`4E@  , qڰ  " "! " #@)$Bool_'a1qb@@bb 0bb $C	  8 @@@A@@@A@@@@$restr@@ @ ʠj@@ @ ˠi@@ @ ̠h@@ @ ͠g@@ @ Πf@@ @ @@ @ @R " "S " "@@Q@  8 @@@A@;@@ @ 8@@ @ @ @ @@Ab@@@ @A`+@*@3E@@ABC)#E@  , q#i " "I@@A<!
E@  , q(n " "o " "@($Bool_'aob@@bb bb C	  8 @@@A@@@A@:@@@<$restpk@@ @ x@@ @ y@@ @ z@@ @ {@@ @ |@@ @ }@@ @ w@ "| " "| "@@^P@  8 @@@A@@@ @ q8@@ @ p@ @ o@@Abh@@@j@Aey@x@3E@@ABCwqE@  , qq " "I@@9A<o
E@  , qlv "J "R "J "{@@?A?)$Float_'yjb  8 @@@A@@@A@@@@)$Float_'akb  8 @@@A@@@A@@@@#padl@@ @ "@@ @ #@@ @ !@ "& "6 "& "9@@M$precm@@ @ %@@@ @ ()@@ @ '@ @ &@@ @ $@ "& "; "& "?@@N$restn@@ @ *-@@ @ +,@@ @ ,+@@ @ -*@@ @ .)@@ @ /@@ @ )@ "& "A "& "E@@Oΰ'@B@SF@@AAE@@+D@@ABCF@  , q0ް$ ! !% ! "%@@A)$Int64_'yeb  8 @@@A@@@A@@@@)$Int64_'afb  8 @@@A@@@A@@@@#padg k@@ @ ޠ@@ @ @@ @ @C ! !D ! !@@J$prech@@ @ @~@@ @ )@@ @ @ @ @@ @ @[ ! !\ ! !@@K$restiH@@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @} ! !~ ! !@@;L6K@BI@SF@@AAE@@+D@@ABCLFF@  , pF ! ! ! !@@A-$Nativeint_'y`b  8 @@@A@@@A@P@@@R-$Nativeint_'aab  8 @@@A@@@A@T@@@V#padbh@@ @ @@ @ @@ @ @ !v ! !v !@@iG$preccV@@ @ @@@ @ )@@ @ @ @ @@ @ @ !v ! !v !@@H$restd@@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @ !v ! !v !@@I@B@SF@@AAE@@+D@@ABCF@  , p !D !L !D !u@@wAw)$Int32_'y[b  8 @@@A@@@A@@@@)$Int32_'a\b  8 @@@A@@@A@@@@#pad]Р;@@ @ V@@ @ W@@ @ U@ !  !0 !  !3@@D$prec^@@ @ Y@@@ @ \)@@ @ [@ @ Z@@ @ X@+ !  !5, !  !9@@E$rest_@@ @ ^e@@ @ _d@@ @ `c@@ @ ab@@ @ ba@@ @ c@@ @ ]@M !  !;N !  !?@@F_@B@SF@@AAE@@+D@@ABCF@  , p|\    ]   !@@A߱'$Int_'yVb  8 @@@A@@@A@ @@@"'$Int_'aWb  8 @@@A@@@A@$@@@&#padX8@@ @ @@ @ @@ @ @{
    |
    @@9A$precY&@@ @ @@@ @ )@@ @ @ @ @@ @ @
    
    @@QB$restZ@@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @@ @ @
    
    @@sCn@B@SF@@AAE@@+D@@ABC~F@  , pP~        @"$3Tb@@bb bb 	PA	P0$Caml_string_'a2Sb  8 @@@A@@@A@@@@  8 @@@A@@@A@@@@$restUĠ@@ @ ֠	@@ @ נ	@@ @ ؠ	@@ @ ٠	@@ @ ڠ	@@ @ @@ @ @  s    s  @@@@	.  8 @@@A@8@@ @ <@@ @ @ @ @@Ab@@@@?  8 @@@A@@@ @ 1@@ @ @ @ @@Ab@@@@AB˰@UD@@A@B@@DE@@ABCE@  , pD۰!    "    @F@\bb bb 	C[/E@  , p4/    k@@	A`4E@  , p4
  M  [5
  M  r@0$Caml_string_'a1Qb@@bb bb 	C		  8 @@@A@@@A@ @@@$restR1@@ @ 	~@@ @ 	}@@ @ 	|@@ @ 	{@@ @ 	z@@ @ @@ @ @f	  "  Dg	  "  H@@$?@	  8 @@@A@^@@ @ w8@@ @ v@ @ u@@Ab.@@@0@A+`	?@	>@3E@@ABC	=	7E@  , p7}
  M  UI@@	A<5
E@  , o<   
   !@/$Caml_string_'aOb@@bb bb w
C
	  8 @@@A@@@A@N@@@P$restP@@ @ .	@@ @ /	@@ @ 0	@@ @ 1	@@ @ 2	@@ @ 3@@ @ -@    @@r>@	  8 @@@A@@@ @ '8@@ @ &@ @ %@@Ab|@@@~@Ay	@	@3E@@ABC		E@  , o   I@@
MA<
E@  , o    @"$2Mb@@bb =bb 	
\A
\+$String_'a2Lb  8 @@@A@@@A@@@@  8 @@@A@@@A@@@@$restNР@@ @ 
@@ @ 
@@ @ 
@@ @ 
@@ @ 
@@ @ @@ @ @    @@=@
:  8 @@@A@D@@ @ <@@ @ @ @ @@Ab@@@@?  8 @@@A@@@ @ 1@@ @ @ @ @@Ab@@@@ABװ@QD@@A	@B	@	@DE@@ABC		E@  , o-  .  @F@\bb Abb 0
C[/E@  , o;  k@@
A`4E@  , oh@ Z hA Z @+$String_'a1Jb@@bb bb 
ΐC
	  8 @@@A@@@A@@@@$restK=@@ @ 
@@ @ 
@@ @ 
@@ @ 
@@ @ 
@@ @ @@ @ @r 4 Qs 4 U@@0<@
  8 @@@A@ @@ @ 8@@ @ @ @ @@Ab:@@@<@A7`
K@
J@3E@@ABC
I
CE@  , oXC Z bI@@A<A
E@  , o<H    3@*$String_'aHb@@bb bb C	  8 @@@A@@@A@Z@@@\$restI@@ @ 8
@@ @ 9
@@ @ :
@@ @ ;
@@ @ <
@@ @ =@@ @ 7@    	@@~;@
  8 @@@A@N@@ @ 18@@ @ 0@ @ /@@Ab@@@@A
@
@3E@@ABC

E@  , o,  I@@YA<
E@  , n      @"$1Fb@@bb kbb _jCi	  8 @@@A@@@A@@@@$restG٠@@ @ &@@ @ %@@ @ $@@ @ #@@ @ "@@ @ @@ @ @    @@:@B  8 @@@A@yS@@ @ 8@@ @ @ @ @@Ab@@@@AӰ
+
@
@3D@@ABC

D@  , n߰%   I@@A<
D@  , n*  +  @"$0Db@@bb )bb C	  8 @@@A@@@A@@@@ߠ$restE'@@ @ t@@ @ s@@ @ r@@ @ q@@ @ p@@ @ @@ @ @\ t ] t @@9@  8 @@@A@y;@@ @ 8@@ @ @ @ @@Ab$@@@&@A!
y5@4@3D@@ABC3-D@  , n-s  I@@A<+
D@  , n2xB ( (@@A@  8 @@@A@@ @ @@Ab:@@@<7@  8 @@@A@@ @ @@AbA@@@C8@AB>	C@  , n$E T e@@
@B	C@  , mI2 &( &4@o@@cb c@ c@ @@c@ c@ @@c@ c@ @@c@ c@ @@c@ c@ @@c@ c@ @@d@ d@ d@ pB#fmt@@ b i@@ b j@@ b k@@ b l@@ b m@@ b n@@ @ h@0 % &0 % &@@]u@&B@@A9A@@B@F@@ACD@@C@@AB5E@@}B@@AG@@BC@B@  , m2 &( &@2 &( &R@jd@ ed@ bd@ _d@ @@d@ d@ @@d@ d@ @@e@ e@ e@ ̐B\9C@  , mٰ1 &
 &J@@Aa>BA  , mQA@Lܰ@A@A?@A  , m,> ( (0-> ( (G@@@	ߠ#koc@@b@  b@  m@8> ( ()9> ( (,@@f@A@@A@C@@AB@@	D@@AB@A@  , mG@ ( (H@ ( (@@@
d#koc@@b@ b@  @S@ ( (T@ ( (@@i@A@@A@C@@AB@@
ID@@AB@A@  , mb: 'S 'xc: 'S '{@@@@A@@A@B@@AC@@B@A@  , mt)o H ip H @A>CamlinternalFormat.make_customA@('@@  , m`/u H [v H @@A'?U  8 @@@A@@@A@7  @@@@E?W  8 @@@A@@@A@<@@@@Ib Y  8 @@@A@@@A@@	@@@@M![  8 @@@A@@@A@D
@@@@Q"]  8 @@@A@@@A@H@@@@Ug#_  8 @@@A@@@A@L@@@@Yf$a  8 @@@A@@@A@P@@@@]%c  8 @@@A@@@A@T@@@@a!k&@ @@ @ M!@@ @ N@@ @ L@@ @ K@ @ J@  !  "@@|#acc'9@@ @ 惠:@@ @ @@ @ @  #  &@@$rest(R@@ @ 泠S@@ @ 洠T@@ @ 浠U@@ @ 涠V@@ @ 淠W@@ @ @@ @ @  '  +@@%arity)Ġ{@@ @ ؠ@@ @ ٠@@ @ @@ @ @  ,  1@@!f*@@ @ @!  2"  3@@@  8 @@@A@@ @ @@Ad@@@@$  8 @@@A@@ @ @@Ad@@@@AB@vD@@A9B@@B A@@E@@AgC@@BC@M@@AI@@dJ@@AB)L@@JK@@B@@ABNG@@uF@@ACDN@@E@@AO@@=H@@AC@@D@@ABCE@[@@@A @@! @@v @@ABC: @@ @@A @@ @@ABDE@  , mX&l  @A	$CamlinternalFormat.make_custom.(fun)A@$#@@  , m8+@A$$208+d  8 @@@A@@@A@2@@@4±$$209,d  8 @@@A@@@A@6@@@8ñ$$210-d  8 @@@A@@@A@:@@@<Š%arity.@@ @ /@@ @ 0@@ @ 1@@ @ .@    @@T@  8 @@@A@,@@ @ )@@ @ (@ @ '@@Ad_@@@a@  8 @@@A@
@@ @ -@@ @ ,@ @ +@@Adk@@@m@ABh5F@B~Cz^F@  , m t  73@@J@CqE@  , lx  7@7@@dd fd XAW!x/-@@ d @    @@9@
A@@A@D@@AYG@@BF@@8C@@AB@@E@@ABC@A@  , l  ]@@x@MA@  , l X \  @A	5CamlinternalFormat.make_float_padding_precision.(fun)A@@@  , l@	/CamlinternalFormat.make_float_padding_precisionA!U  8 @@@A@@@A@ W @@@@E!W  8 @@@A@@@A@
@@@@FCY  8 @@@A@@@A@	@@@@Gd[  8 @@@A@@@A@
@@@@Hc]  8 @@@A@@@A@@@@@IH_  8 @@@A@@@A@@@@@JGa  8 @@@A@@@A@@@@@Kjc  8 @@@A@@@A@"@@@@L!k@x @@ @ !@@ @ @@ @ @@ @ @ @ @:  	;  
@@M#acc9@@ @ >:@@ @ ?@@ @ =@O  P  @@
N#fmtdR@@ @ xS@@ @ yT@@ @ zU@@ @ {V@@ @ |W@@ @ }@@ @ w@x  y  @@6O#pad@@ @ ئ@@ @ ا@@ @ إ@    @@KP$prec@@ @ Ơ@@@ @ @@ @ @ @ @@ @ @    @@fQ%fconv@@ @ @    !@@qR$$199d  8 @@@A@@@A@s@@@ug%padty9@@ @ @ . > . C@@!ps@@ @ @ . S . T@@@K  8 @@@A@	@@ @ #@@ @ @ @ @@Ad@@@h@D  8 @@@A@C@@ @ B@@ @ @ @ @@Ad@@@j@A  8 @@@Ac@@ @ @@Ad@@@i@BC@E@@AIA@@BD@@F@@6I@@ABC@@DH%padtyG@@AsB@@BCD@P@@AFL@@*M@@ABO@@N@@E@@ABJ@@;I@@ACDQ@@H@@AR@@K@@AF@@G@@ABCE@!C@@A@@@ @@< @@ABC  @@ @@A] @@ @@ABDI@  , lp2 t x3  -@AIA@@@  , l0@HAF$$198d  8 @@@A@@@A@@@@c=@@ @ ڤ@B M ]C M b@@ @  8 @@@A@@@ @ ڢ@@ @ ڡ@ @ ڠ@@Ad@@@
d@  8 @@@A@@@ @ ڹ@@ @ ڸ@ @ ڷ@@Ad@@@f@A  8 @@@A@@ @ ڣ@@Ad@@@ e@BCws@r@Ao@l@Ai@BCDhLG@  , l((n  	k@AA@%$@@  , k,@A$$200d  8 @@@A@@@A@2@@@4k$$201d  8 @@@A@@@A@6@@@8n%padty@@ @ .@    @@B@  8 @@@A@@@ @ ,@@ @ +@ @ *@@AdM@@@Ol@  8 @@@A@@@ @ F'@@ @ E@ @ D@@Ad[@@@]o@A  8 @@@A@@ @ -@@Ada@@@cm@
  8 @@@A@@@ @ I@@ @ H@ @ G@@Adm@@@op@ABCjO@=H@A@BCDH@  , kx   f @AA@vu@@  , kp}@AӠ%padtyE@@ @ @    @@~!w@@ @ @    @@!p@@ @ -@    @@@b  8 @@@A@L@@ d ,K@@ d +@ d *@@Ad@@@^@Ah  8 @@@Aq@@ @ @@Ad@@@]@B	@@#K@@AB@:J%padtyH@@A@6I!wG@@ABCDK@  , kPǰ
 1 5  @A$A@@@  , k@#A!@@ @ @    @@y@@ @ @!  "  @@z@  8 @@@A@@@ d @@ d @ d @@Ad@@@\@A  8 @@@A@@ @ @@Ad@@@[@BIE@@;@A:@6@ABCD:H@  , k @  A  L@AWA@@@  , j@VAU$$197d  8 @@@A@@@A@@@@`%padty@@ @ W@S  T  @@!w,@@ @ X@]  ^  @@@  8 @@@A@@@ d r$@@ @ q@ d p@@Ad'@@@)a@A  8 @@@A@@ @ V@@Ad-@@@/_@
  8 @@@A@@@ @ u@@ @ t@ @ s@@Ad9@@@;b@AB6@:J@A@3I@ABCDkJ@  , jxG   @ t@AA@ED@@  , jLL@A!pB@@ @ c@    @@Xs@  8 @@@A@@@ d b@@ d a@ d `@@Adc@@@eV@A!  8 @@@A*@@ @ J@@Adi@@@kU@Bf@@#G@@AB@@ACDG@  , j8t Z ^  @AA@rq@@  , jy@A@=  8 @@@A@'@@ d #&@@ d "@ d !@@Ad@@@T@AC  8 @@@AL@@ @ @@Ad@@@S@BmBCF@  , i    @AA@@@  , i@A$$196d  8 @@@A@@@A@@@@X@`  8 @@@A@@@ d ٤@@ @ ٣@ d ٢@@Ad@@@Y@Ag  8 @@@Ap@@ @ ي@@Ad@@@W@
  8 @@@A@]@@ @ ٧\@@ @ ٦@ @ ٥@@Ad@@@Z@AB0F@  , i  %@@@4F@  , i|ð	  
   @A A@@@  , ihȰ  6@@$A6!pK@@ d ܢ@    @@v!x@@ d ܮ@$  %  @@w#str@@ @ e@ ܴ@0  1  @@xQ@$B@@AC@@A@@AB@ E@@B@@ABG@@F@@A"D@@C@@ABC@CA  , i`K  L  @AbC>m@@A@B@B  , iHV  ~@@l@Gv	B@  , i$[  \  @ArA@@@  , i`  @@vAq!x@@ d f@k Z bl Z c@@)q#str8@@ @ ۆe@ l@w g qx g t@@5r0@B@@AA@@B@FF@@AIC@@B@@ABH@@8G@@AiE@@D@@ABC@BA  , iL g w g @AC3L@@A@A  , hV g  g @@@f@ ۈf@ ۳g@ ۤAE^B@  , he g m@@@JcA@  , hj @ T @ p@AA@hg@@  , ho @ F(@@A'!x @@ d @    @@~t#str@@ @ 1e@ @    "@@u2@B@@AA@@B@E@@AB@@0G@@ABF@@D@@A2C@@OH@@ABC@BA  , h  %  <@AC3N@@A@A  , h  d@@@;VA@  , h  ,  H@A
A@@@  , hl  @@A!p
8@@ d ޼@    @@!xo@@ d @    @@#strB@@ @ e@ @    @@ְ@$B@@AC@@A@@AB@F@@AC@@H@@WB@@ABCG@@E@@D@@ABI@@J@@ACD@CA  , hd>  ?  @AUCD@"@A@B@B  , hLI  @6f@ g@ dCSB@  , h4T  @@j@XB@  , hY  Z  @ApA@@@  , g^  Q@@tAQ!x@@ d E@j 1 9k 1 :@@({#str7@@ @ ee@ K@v > Hw > K@@4|$str'@@ @ ݫe@ ݗ@    @@@}a;@B@@AC@@)A@@AB@SG@@AVD@@B@@AI@@C@@ABCFH@@yF@@E@@ABJ@@K@@ACD@CA  , g_    @ACH_@$@A!@B @B  , gj  @@AQh	BA  , gq > N > @AΐCYq@2@A1@A  , g{ > b > @@@f@ gf@ ݒg@ ݃AkB@  , g > D@@@pA@  , g f z f @AA@@@  , g f l@@A!xC@@ d @     !@@#str	@@ @ )e@ @ % / % 2@@@B@@AA@@B@F@@AC@@UH@@)B@@ABCG@@E@@AZD@@0K@@ABEI@@=J@@ACD@BA  , g|̰ % 5 % b@A)C92̰@ @A@A  , gdְ % I
@5f@ `g@ I7CG@A@  , gH' % +i@@=@LEA@  , g0, W k- W @ACA@@@  , g1 W ].@@GAŠ!wp@@ d @>  
?  @@!py@@ d (@H  I  @@!x@@ d 4@R  S  @@#str@@ @ Ne@ :@^   _  #@@@$B@@D@@AB1C@@A@@AC@1F@@A4C@@H@@B@@ABC"G@@UE@@AD@@I@@ABD@DA  , g9  &  S@ACO9@"@AB@C  , g D  :@6f@ g@ nC^HC@  , fO  @@@cMC@  , fT    )@AA@RQ@@  , fY  m@@An!w
@@ d {@ t | t }@@j!x@@ d ߉@ t ~ t @@t#str@@ @ ߩe@ ߏ@    @@$str'@@ @ e@ @    @@@C@@D@@AB3B@@+A@@AC@G@@AD@@gB@@A8I@@C@@ABCH@@F@@A<E@@J@@ABD@DA  , f    @ACS@$@A! B@C  , f  @@A\	CA  , f    @ACd@3@A1@B0@B  , f|Ȱ    @*@@f@ ߫f@ g@ -AwC@  , fhװ  @@3@|B@  , fDܰ"  #  @A9A@@@  , f0'  >@@=A<!we@@ d Y@3 X `4 X a@@!x@@ d g@= X b> X c@@#strn@@ @ e@ m@I g qJ g t@@~@C@@A%B@@A@@AB@F@@AC@@H@@B@@ABCG@@>E@@D@@ABJ@@I@@ACD@CA  , f($j g wk g @ACD$@!@A@B@B  , f/u g @6f@ g@ CS3B@  , e: g m@@@X8B@  , e? f j  @A	3CamlinternalFormat.make_int_padding_precision.(fun)A@>=@@  , eE@	-CamlinternalFormat.make_int_padding_precisionAA3U  8 @@@A@@@A@ } @@@@_ױ3W  8 @@@A@@@A@
@@@@cر(Y  8 @@@A@@@A@	@@@@gٱY[  8 @@@A@@@A@
@@@@kڱz]  8 @@@A@@@A@@@@@o۱y_  8 @@@A@@@A@@@@@sܱ^a  8 @@@A@@@A@!@@@@wݱ]c  8 @@@A@@@A@%@@@@{ޱe  8 @@@A@@@A@)!@@@@ߠ!k@ @@ @ O!@@ @ P@@ @ N@@ @ M@ @ L@    @@#acc39@@ @ ɛ:@@ @ ɜ@@ @ ɚ@    @@¯#fmtR@@ @ S@@ @ T@@ @ U@@ @ V@@ @ W@@ @ @@ @ @    @@#pad/@@ @ @@ @ @@ @ @/  0  @@$precD@@ @ G@@@ @ J@@ @ I@ @ H@@ @ F@J  K  @@%trans@a@@ @ n@@@ @ ml@@ @ l@ @ k@ @ j@a  b  @@%iconvv@@ @ ~@l  m  @@*$$187f  8 @@@A@@@A@,@@@.%padty@@ @ ̍@z < L{ < Q@@8!p,@@ @ ̤@ < a < b@@B @b  8 @@@A@@@ @ ̋#@@ @ ̊@ @ ̉@@AfM@@@O@[  8 @@@A@Z@@ @ ̣Y@@ @ ̢@ @ ̡@@AfZ@@@\@A  8 @@@Az@@ @ ̌@@Af`@@@b@BC]@F@@AE@@BJA@@G@@6J@@ABD@@DI%padtyH@@AC@@qB@@ABCD@S@@AO@@P@@ABR@@Q@@QH@@ABM@@L@@ACDgT@@\K@@ASU@@N@@A_I@@J@@ABCE@F@@ABC@@ @@ @@ABC@@@U @@A @@< @@ABDJ@  , e|ç    ;@AhA@åä@@  , e@ì@gAe$$186f  8 @@@A@@@A@ñ@@@ó?u@@ @ I@    @@û@  8 @@@A@;@@ @ G@@ @ F@ @ E@@Af@@@@  8 @@@A@@@ @ ^@@ @ ]@ @ \@@Af@@@@A  8 @@@A@@ @ H@@Af@@@@BCְyu@u@Ar@n@ABkjCDhLH@  , e8)  #@AA@@@  , d@A$$188f  8 @@@A@@@A@@@@$$189f  8 @@@A@@@A@@@@%padty@@ @ @?  @  @@$@  8 @@@A@}@@ @ @@ @ @ @ @@Af@@@
 @  8 @@@A@@@ @ '@@ @ @ @ @@Af@@@@A  8 @@@A6@@ @ @@Af@@@@
  8 @@@A@(@@ @ '@@ @ @ @ @@Af(@@@*@ABC%O@=I@ABCDI@  , d3y M Qz  @AA@10@@  , dp8@A%padty @@ @ ˸@  /  4@@F!wa@@ @ ˹@  6  7@@P!pD@@ @ @  H  I@@Z@{  8 @@@A@e@@ f d@@ f @ f @@Afe@@@g@A  8 @@@A@@ @ ˷@@Afk@@@m@Bh@@#L@@ABC@:K%padtyI@@A@@7J!wH@@ABCDL@  , dPă    @ADA@āĀ@@  , dĈ@CAAM@@ @ v@ y  y @@ē
@@ @ w@ y  y @@ě@  8 @@@A@@@ f ˎ@@ f ˍ@ f ˌ@@AfĦ@@@Ĩ@A  8 @@@A@@ @ u@@AfĬ@@@Į@BĩLHD@<@AB=@<@7@ABCD< I@  , cķ 	 
 e @AxA@ĵĴ@@  , cļ@wAv$$185f  8 @@@A@@@A@@@@%padty@@ @ @    @@!w@@ @ @    @@@  8 @@@A@X@@ f $@@ @ @ f @@Af@@@@A   8 @@@A	@@ @ @@Af@@@@
  8 @@@A@@@ @ @@ @ @ @ @@Af@@@@AB@:K@AB@@4J@ABCDnK@  , clK d hL  @AA@@@  , c4
@A !p @@ @ @X A _Y A `@@@7  8 @@@A@!@@ f  @@ f @ f @@Af!@@@#@A=  8 @@@AF@@ @ @@Af'@@@)@B$@@A#H@@@ABCDH@  , c 2x  y  @@AA@0/@@  , b7@A@Y  8 @@@A@C@@ f B@@ f @ f @@AfC@@@E@A_  8 @@@Ah@@ @ ʱ@@AfI@@@K@BFp@BCDG@  , bQ×  Ø D x@AA@ON@@  , bV@A$$184f  8 @@@A@@@A@Z@@@\@}  8 @@@A@@@ f I@@ @ H@ f G@@Afh@@@j@A  8 @@@A@@ @ /@@Afn@@@p@
  8 @@@A@z@@ @ Ly@@ @ K@ @ J@@Afz@@@|@ABw1G@  , b~  #@@;@6{5G@  , blł D X D t@ACA@ŀ@@  , bXŇ D J6@@GA6!p
@@ f @    @@ŗ
!x@@ f @    	@@š#str@@ @ .g@  @ 
  
 @@ŭQŨ@$B@@AC@@A@@AB@E@@A B@@F@@ABH@@@D@@AWC@@G@@ABC@CA  , bPư 
 
 
 @@AB@oư@@A@B@B  , bDѰ 
 1@2h@ Ii@ ABO~B@  , b,ܰ" 
 @@@TB@  , b'   (  <@AA@@@  , a,  @@A!x@@ f @7  8  @@#str@@ @ !g@ @C  D  @@@B@@AA@@B@pD@@A\E@@BG@@C@@AB@@
F@@ABC@BA  , a\  ]  @AאB1@@A@A  , a f  @@@9A@  , a%k  l  @AA@#"@@  , a*p  %@@A$!x7@@ f ̓@{ d l| d m@@9#str@@ @ ͗g@ ͉@ć q {Ĉ q ~@@E	/@@B@@AA@@B@E@@AB@@F@@AB3H@@D@@C@@ABLI@@RG@@ACD@BA  , a^Ĥ q ĥ q @AB5M^@@A@A  , ahĮ q 
@1h@ Ͳi@ ͪ-BC[lA@  , asĹ q wn@@3@H`qA@  , alxľ e yĿ e @A9A@vu@@  , aX} e k@@=AƠ!p @@ f @ 	  	 @@ƍ!x@@ f @ 	  	 @@Ɨ#str
@@ @ g@ @  "  %@@ƣƞ@$B@@AC@@A@@AB@F@@AC@@B@@ABG@@I@@A8E@@PD@@ABCJ@@H@@AK@@BD@CA  , aP°  (	  a@ACF°@$@A!@B @B  , a8Ͱ  <@8h@ =i@  BUB@  , a,ذ  Q  `@i@ ;j@ 3Ba
B@  , a*  -@@@f B@  , `/  0  @AA@@@  , `4  k@@Aj!x@@ f Ϋ@?  @  @@#strp@@ @ g@ α@K  L  @@	n@B@@AA@@B@xE@@B@@ABfF@@H@@AD@@C@@ABCI@@G@@AJ@@BD@BA  , `$j  k  @AC7$@@A@A  , `.t  
@3h@ i@ BE2A@  , `9  @@@J7A@  , `>ń  Ņ  @AA@<;@@  , `|Cŉ  @@A!xP@@ f ?@Ŕ M Uŕ M V@@R#str@@ @ Yg@ E@Š Z dš Z g@@^Y@B@@AA@@B@F@@AC@@B@@AG@@BCNI@@E@@A	D@@$L@@AB9J@@pH@@A3K@@BCD@BA  , `t} Z j Z @A>C;(}@"@A!@A  , `\Ǉ Z ~
@7h@ ϊi@ mLBI6ǋA@  , `Lǒ Z  Z @i@ ψj@ πXBUBǗA@  , `4Ǟ Z `k@@^@ZGǜA@  , `ǣ }  } @AdA@ǡǠ@@  , `Ǩ } M@@hAǠ!w-@@ f @  '  (@@ǹ%!p6@@ f @  )  *@@&!x@@ f @  +  ,@@'#str@@@ @ 6g@ "@ 0 : 0 =@@(԰@$B@@D@@AB1C@@A@@AC@LF@@A.C@@VB@@A<G@@BCI@@pE@@D@@ABJ@@H@@ACD@DA  , ` > 0 @? 0 y@ACQ @$@A! B@C  , _I 0 T@8h@ gi@ JȐB`C@  , _T 0 iU 0 x@i@ ej@ ]ԐBlC@  , _` 0 6@@@q  C@  , _e  f  7@AA@@@  , _$j  
}@@A}!w@@ f П@v  w  @@4!x<@@ f Э@ƀ  Ɓ  @@>#str@@ @ g@ г@ƌ  ƍ  @@JE@C@@A%B@@A@@AB@E@@AB@@F@@AB:H@@D@@C@@ABI@@YG@@ACD@CA  , _eƫ  Ƭ  @A&CBe@@A@B@B  , _xpƶ  @4h@ i@ 5BQtB@  , _`{  @@;@VyB@  , _<Ȁ    @AAA@~}@@  , _(ȅ  F@@EAD!w	@@ f G@ f n f o@@ȕ!!x@@ f U@ f p f q@@ȟ"#str@@ @ og@ [@ u  u @@ȫ#iȦ@C@@A%B@@A@@AB@F@@AC@@&B@@ABG@@I@@A@E@@XD@@ABCK@@J@@H@@ABD@CA  , _ ʰ u  u @ACFʰ@#@A!@B @B  , _հ u @8h@ Ѡi@ уBUB@  , ^& u ' u @i@ ўj@ іBaB@  , ^2 u {@@@f B@  , ^7  8 
 
#@A	%CamlinternalFormat.make_padding.(fun)A@@@  , ^@?CamlinternalFormat.make_paddingA:U  8 @@@A@@@A@*@@@@7W  8 @@@A@@@A@.@@@@[Y  8 @@@A@@@A@2 @@@@|[  8 @@@A@@@A@6$@@@@{]  8 @@@A@@@A@:(@@@@`_  8 @@@A@@@A@>,@@@@ _a  8 @@@A@@@A@B0@@@@$c  8 @@@A@@@A@F4@@@@(!k@à @@ @ ü!@@ @ ý@@ @ û@@ @ ú@ @ ù@ǅ P Vǆ P W@@C#accܠ9@@ @ :@@ @ @@ @ @ǚ P XǛ P [@@X#fmtǯR@@ @ .S@@ @ /T@@ @ 0U@@ @ 1V@@ @ 2W@@ @ 3@@ @ -@ P \ P _@@Ɂ#pad@@ @ Z@@@ @ ]@@ @ \@ @ [@@ @ Y@ P ` P c@@ɜ %trans@@@ @ u@@ @ t@ @ s@ P d P i@@ɭñ$$182d  8 @@@A@@@A@ɯ@@@ɱƠ%padtyu@@ @ @    @@ɻ@2  8 @@@A@;@@ @ @@ @ @ @ @@Ad@@@@  8 @@@A@>@@ @ =@@ @ @ @ @@Ad@@@@ABϰ@D@@AC@@E@@AB\B@@/F@@AEA@@BC@V@@AiR@@MS@@ABU@@3T@@K@@AB7P@@^O@@ACDW@@N@@AX@@&Q@@AL@@M@@ABCE@DI@@AF@@
 @@_ @@ABC#C@@ @@A@@@ @@ABDF@  , ^U  V p @AA@
@@  , ^\@A%padty@@ @ ĸ@c  d  @@!ˠ%width<@@ @ Ĺ@m  	n  @@+@  8 @@@A@@@ @ ķ@@ @ Ķ@ @ ĵ@@Ad5@@@7@A2c]@%G@@A\@F@@ABC]AG@  , ^@@Ȇ  ȇ  @AOA@>=@@  , ^E@NAK@  8 @@@A@@@ @ ę@@ @ Ę@ @ ė@@AdP@@@R@AM~x@u@ACtXE@  , ^Wȝ P mf@@b@^TE@  , ][ȡ  @@iAe!x@@ d @Ȭ  ȭ  @@jɠ'new_acc+@@ @ e@ ,@@ @ e@ @@ @ e@ @/*    sv.h
 *
 *    Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
 *    2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others
 *
 *    You may distribute under the terms of either the GNU General Public
 *    License or the Artistic License, as specified in the README file.
 *
 */

#ifdef sv_flags
#undef sv_flags		/* Convex has this in <signal.h> for sigvec() */
#endif

/*
=for apidoc_section $SV_flags

=for apidoc Ay||svtype
An enum of flags for Perl types.  These are found in the file F<sv.h>
in the C<svtype> enum.  Test these flags with the C<SvTYPE> macro.

The types are:

    SVt_NULL
    SVt_IV
    SVt_NV
    SVt_RV
    SVt_PV
    SVt_PVIV
    SVt_PVNV
    SVt_PVMG
    SVt_INVLIST
    SVt_REGEXP
    SVt_PVGV
    SVt_PVLV
    SVt_PVAV
    SVt_PVHV
    SVt_PVCV
    SVt_PVFM
    SVt_PVIO

These are most easily explained from the bottom up.

C<SVt_PVIO> is for I/O objects, C<SVt_PVFM> for formats, C<SVt_PVCV> for
subroutines, C<SVt_PVHV> for hashes and C<SVt_PVAV> for arrays.

All the others are scalar types, that is, things that can be bound to a
C<$> variable.  For these, the internal types are mostly orthogonal to
types in the Perl language.

Hence, checking C<< SvTYPE(sv) < SVt_PVAV >> is the best way to see whether
something is a scalar.

C<SVt_PVGV> represents a typeglob.  If C<!SvFAKE(sv)>, then it is a real,
incoercible typeglob.  If C<SvFAKE(sv)>, then it is a scalar to which a
typeglob has been assigned.  Assigning to it again will stop it from being
a typeglob.  C<SVt_PVLV> represents a scalar that delegates to another scalar
behind the scenes.  It is used, e.g., for the return value of C<substr> and
for tied hash and array elements.  It can hold any scalar value, including
a typeglob.  C<SVt_REGEXP> is for regular
expressions.  C<SVt_INVLIST> is for Perl
core internal use only.

C<SVt_PVMG> represents a "normal" scalar (not a typeglob, regular expression,
or delegate).  Since most scalars do not need all the internal fields of a
PVMG, we save memory by allocating smaller structs when possible.  All the
other types are just simpler forms of C<SVt_PVMG>, with fewer internal fields.
C<SVt_NULL> can only hold undef.  C<SVt_IV> can hold undef, an integer, or a
reference.  (C<SVt_RV> is an alias for C<SVt_IV>, which exists for backward
compatibility.)  C<SVt_NV> can hold any of those or a double.  C<SVt_PV> can only
hold C<undef> or a string.  C<SVt_PVIV> is a superset of C<SVt_PV> and C<SVt_IV>.
C<SVt_PVNV> is similar.  C<SVt_PVMG> can hold anything C<SVt_PVNV> can hold, but it
can, but does not have to, be blessed or magical.

=for apidoc AmnU||SVt_NULL
Type flag for scalars.  See L</svtype>.

=for apidoc AmnU||SVt_IV
Type flag for scalars.  See L</svtype>.

=for apidoc AmnU||SVt_NV
Type flag for scalars.  See L</svtype>.

=for apidoc AmnU||SVt_PV
Type flag for scalars.  See L</svtype>.

=for apidoc AmnU||SVt_PVIV
Type flag for scalars.  See L</svtype>.

=for apidoc AmnU||SVt_PVNV
Type flag for scalars.  See L</svtype>.

=for apidoc AmnU||SVt_PVMG
Type flag for scalars.  See L</svtype>.

=for apidoc CmnU||SVt_INVLIST
Type flag for scalars.  See L<perlapi/svtype>.

=for apidoc AmnU||SVt_REGEXP
Type flag for regular expressions.  See L</svtype>.

=for apidoc AmnU||SVt_PVGV
Type flag for typeglobs.  See L</svtype>.

=for apidoc AmnU||SVt_PVLV
Type flag for scalars.  See L</svtype>.

=for apidoc AmnU||SVt_PVAV
Type flag for arrays.  See L</svtype>.

=for apidoc AmnU||SVt_PVHV
Type flag for hashes.  See L</svtype>.

=for apidoc AmnU||SVt_PVCV
Type flag for subroutines.  See L</svtype>.

=for apidoc AmnU||SVt_PVFM
Type flag for formats.  See L</svtype>.

=for apidoc AmnU||SVt_PVIO
Type flag for I/O objects.  See L</svtype>.

=cut

  These are ordered so that the simpler types have a lower value; SvUPGRADE
  doesn't allow you to upgrade from a higher numbered type to a lower numbered
  one; also there is code that assumes that anything that has as a PV component
  has a type numbered >= SVt_PV.
*/


typedef enum {
        SVt_NULL,	/* 0 */
        /* BIND was here, before INVLIST replaced it.  */
        SVt_IV,		/* 1 */
        SVt_NV,		/* 2 */
        /* RV was here, before it was merged with IV.  */
        SVt_PV,		/* 3 */
        SVt_INVLIST,	/* 4, implemented as a PV */
        SVt_PVIV,	/* 5 */
        SVt_PVNV,	/* 6 */
        SVt_PVMG,	/* 7 */
        SVt_REGEXP,	/* 8 */
        /* PVBM was here, before BIND replaced it.  */
        SVt_PVGV,	/* 9 */
        SVt_PVLV,	/* 10 */
        SVt_PVAV,	/* 11 */
        SVt_PVHV,	/* 12 */
        SVt_PVCV,	/* 13 */
        SVt_PVFM,	/* 14 */
        SVt_PVIO,	/* 15 */
                        /* 16-31: Unused, though one should be reserved for a
                         * freed sv, if the other 3 bits below the flags ones
                         * get allocated */
        SVt_LAST	/* keep last in enum. used to size arrays */
} svtype;

/* *** any alterations to the SV types above need to be reflected in
 * SVt_MASK and the various PL_valid_types_* tables.  As of this writing those
 * tables are in perl.h.  There are also two affected names tables in dump.c,
 * one in B.xs, and 'bodies_by_type[]' in sv.c.
 *
 * The bits that match 0xe0 are CURRENTLY UNUSED
 * The bits above that are for flags, like SVf_IOK */

#define SVt_MASK 0x1f	/* smallest bitmask that covers all types */

#ifndef PERL_CORE
/* Fast Boyer Moore tables are now stored in magic attached to PVMGs */
#  define SVt_PVBM	SVt_PVMG
/* Anything wanting to create a reference from clean should ensure that it has
   a scalar of type SVt_IV now:  */
#  define SVt_RV	SVt_IV
#endif

/* The array of arena roots for SV bodies is indexed by SvTYPE. SVt_NULL doesn't
 * use a body, so that arena root is re-used for HEs. SVt_IV also doesn't, so
 * that arena root is used for HVs with struct xpvhv_aux. */

#if defined(PERL_IN_HV_C) || defined(PERL_IN_XS_APITEST)
#  define HE_ARENA_ROOT_IX      SVt_NULL
#endif
#if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C)
#  define HVAUX_ARENA_ROOT_IX   SVt_IV
#endif
#ifdef PERL_IN_SV_C
#  define SVt_FIRST SVt_NULL	/* the type of SV that new_SV() in sv.c returns */
#endif

#define PERL_ARENA_ROOTS_SIZE	(SVt_LAST)

/* typedefs to eliminate some typing */
typedef struct he HE;
typedef struct hek HEK;

/* Using C's structural equivalence to help emulate C++ inheritance here... */

/* start with 2 sv-head building blocks */
#define _SV_HEAD(ptrtype) \
    ptrtype	sv_any;		/* pointer to body */	\
    U32		sv_refcnt;	/* how many references to us */	\
    U32		sv_flags	/* what we are */

#if NVSIZE <= IVSIZE
#  define _NV_BODYLESS_UNION NV svu_nv;
#else
#  define _NV_BODYLESS_UNION
#endif

#define _SV_HEAD_UNION \
    union {				\
        char*   svu_pv;		/* pointer to malloced string */	\
        IV      svu_iv;			\
        UV      svu_uv;			\
        _NV_BODYLESS_UNION		\
        SV*     svu_rv;		/* pointer to another SV */		\
        SV**    svu_array;		\
        HE**	svu_hash;		\
        GP*	svu_gp;			\
        PerlIO *svu_fp;			\
    }	sv_u				\
    _SV_HEAD_DEBUG

#ifdef DEBUG_LEAKING_SCALARS
#define _SV_HEAD_DEBUG ;\
    PERL_BITFIELD32 sv_debug_optype:9;	/* the type of OP that allocated us */ \
    PERL_BITFIELD32 sv_debug_inpad:1;	/* was allocated in a pad for an OP */ \
    PERL_BITFIELD32 sv_debug_line:16;	/* the line where we were allocated */ \
    UV		    sv_debug_serial;	/* serial number of sv allocation   */ \
    char *	    sv_debug_file;	/* the file where we were allocated */ \
    SV *	    sv_debug_parent	/* what we were cloned from (ithreads)*/
#else
#define _SV_HEAD_DEBUG
#endif

struct STRUCT_SV {		/* struct sv { */
    _SV_HEAD(void*);
    _SV_HEAD_UNION;
};

struct gv {
    _SV_HEAD(XPVGV*);		/* pointer to xpvgv body */
    _SV_HEAD_UNION;
};

struct cv {
    _SV_HEAD(XPVCV*);		/* pointer to xpvcv body */
    _SV_HEAD_UNION;
};

struct av {
    _SV_HEAD(XPVAV*);		/* pointer to xpvav body */
    _SV_HEAD_UNION;
};

struct hv {
    _SV_HEAD(XPVHV*);		/* pointer to xpvhv body */
    _SV_HEAD_UNION;
};

struct io {
    _SV_HEAD(XPVIO*);		/* pointer to xpvio body */
    _SV_HEAD_UNION;
};

struct p5rx {
    _SV_HEAD(struct regexp*);	/* pointer to regexp body */
    _SV_HEAD_UNION;
};

struct invlist {
    _SV_HEAD(XINVLIST*);       /* pointer to xpvinvlist body */
    _SV_HEAD_UNION;
};

#undef _SV_HEAD
#undef _SV_HEAD_UNION		/* ensure no pollution */

/*
=for apidoc_section $SV

=for apidoc Am|U32|SvREFCNT|SV* sv
Returns the value of the object's reference count. Exposed
to perl code via Internals::SvREFCNT().

=for apidoc SvREFCNT_inc
=for apidoc_item SvREFCNT_inc_NN
=for apidoc_item SvREFCNT_inc_void
=for apidoc_item |void|SvREFCNT_inc_void_NN|SV* sv
=for apidoc_item |SV*|SvREFCNT_inc_simple|SV* sv
=for apidoc_item |SV*|SvREFCNT_inc_simple_NN|SV* sv
=for apidoc_item |void|SvREFCNT_inc_simple_void|SV* sv
=for apidoc_item |void|SvREFCNT_inc_simple_void_NN|SV* sv

These all increment the reference count of the given SV.
The ones without C<void> in their names return the SV.

C<SvREFCNT_inc> is the base operation; the rest are optimizations if various
input constraints are known to be true; hence, all can be replaced with
C<SvREFCNT_inc>.

C<SvREFCNT_inc_NN> can only be used if you know C<sv> is not C<NULL>.  Since we
don't have to check the NULLness, it's faster and smaller.

C<SvREFCNT_inc_void> can only be used if you don't need the
return value.  The macro doesn't need to return a meaningful value.

C<SvREFCNT_inc_void_NN> can only be used if you both don't need the return
value, and you know that C<sv> is not C<NULL>.  The macro doesn't need to
return a meaningful value, or check for NULLness, so it's smaller and faster.

C<SvREFCNT_inc_simple> can only be used with expressions without side
effects.  Since we don't have to store a temporary value, it's faster.

C<SvREFCNT_inc_simple_NN> can only be used with expressions without side
effects and you know C<sv> is not C<NULL>.  Since we don't have to store a
temporary value, nor check for NULLness, it's faster and smaller.

C<SvREFCNT_inc_simple_void> can only be used with expressions without side
effects and you don't need the return value.

C<SvREFCNT_inc_simple_void_NN> can only be used with expressions without side
effects, you don't need the return value, and you know C<sv> is not C<NULL>.

=for apidoc SvREFCNT_dec
=for apidoc_item SvREFCNT_dec_NN

These decrement the reference count of the given SV.

C<SvREFCNT_dec_NN> may only be used when C<sv> is known to not be C<NULL>.

=for apidoc Am|svtype|SvTYPE|SV* sv
Returns the type of the SV.  See C<L</svtype>>.

=for apidoc Am|void|SvUPGRADE|SV* sv|svtype type
Used to upgrade an SV to a more complex form.  Uses C<sv_upgrade> to
perform the upgrade if necessary.  See C<L</svtype>>.

=cut
*/

#define SvANY(sv)	(sv)->sv_any
#define SvFLAGS(sv)	(sv)->sv_flags
#define SvREFCNT(sv)	(sv)->sv_refcnt

#define SvREFCNT_inc(sv)		Perl_SvREFCNT_inc(MUTABLE_SV(sv))
#define SvREFCNT_inc_simple(sv)		SvREFCNT_inc(sv)
#define SvREFCNT_inc_NN(sv)		Perl_SvREFCNT_inc_NN(MUTABLE_SV(sv))
#define SvREFCNT_inc_void(sv)		Perl_SvREFCNT_inc_void(MUTABLE_SV(sv))

/* These guys don't need the curly blocks */
#define SvREFCNT_inc_simple_void(sv)	STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END
#define SvREFCNT_inc_simple_NN(sv)	(++(SvREFCNT(sv)),MUTABLE_SV(sv))
#define SvREFCNT_inc_void_NN(sv)	(void)(++SvREFCNT(MUTABLE_SV(sv)))
#define SvREFCNT_inc_simple_void_NN(sv)	(void)(++SvREFCNT(MUTABLE_SV(sv)))

#define SvREFCNT_dec(sv)	Perl_SvREFCNT_dec(aTHX_ MUTABLE_SV(sv))
#define SvREFCNT_dec_NN(sv)	Perl_SvREFCNT_dec_NN(aTHX_ MUTABLE_SV(sv))

#define SVTYPEMASK	0xff
#define SvTYPE(sv)	((svtype)((sv)->sv_flags & SVTYPEMASK))

/* Sadly there are some parts of the core that have pointers to already-freed
   SV heads, and rely on being able to tell that they are now free. So mark
   them all by using a consistent macro.  */
#define SvIS_FREED(sv)	UNLIKELY(((sv)->sv_flags == SVTYPEMASK))

/* this is defined in this peculiar way to avoid compiler warnings.
 * See the <20121213131428.GD1842@iabyn.com> thread in p5p */
#define SvUPGRADE(sv, mt) \
    ((void)(SvTYPE(sv) >= (mt) || (sv_upgrade(sv, mt),1)))

#define SVf_IOK		0x00000100  /* has valid public integer value */
#define SVf_NOK		0x00000200  /* has valid public numeric value */
#define SVf_POK		0x00000400  /* has valid public pointer value */
#define SVf_ROK		0x00000800  /* has a valid reference pointer */

#define SVp_IOK		0x00001000  /* has valid non-public integer value */
#define SVp_NOK		0x00002000  /* has valid non-public numeric value */
#define SVp_POK		0x00004000  /* has valid non-public pointer value */
#define SVp_SCREAM	0x00008000  /* currently unused on plain scalars */
#define SVphv_CLONEABLE	SVp_SCREAM  /* PVHV (stashes) clone its objects */
#define SVpgv_GP	SVp_SCREAM  /* GV has a valid GP */
#define SVprv_PCS_IMPORTED  SVp_SCREAM  /* RV is a proxy for a constant
                                       subroutine in another package. Set the
                                       GvIMPORTED_CV_on() if it needs to be
                                       expanded to a real GV */

/* SVf_PROTECT is what SVf_READONLY should have been: i.e. modifying
 * this SV is completely illegal. However, SVf_READONLY (via
 * Internals::SvREADONLY()) has come to be seen as a flag that can be
 * temporarily set and unset by the user to indicate e.g. whether a hash
 * is "locked". Now, Hash::Util et al only set SVf_READONLY, while core
 * sets both (SVf_READONLY|SVf_PROTECT) to indicate both to core and user
 * code that this SV should not be messed with.
 */
#define SVf_PROTECT	0x00010000  /* very read-only */
#define SVs_PADTMP	0x00020000  /* in use as tmp */
#define SVs_PADSTALE	0x00040000  /* lexical has gone out of scope;
                                        only used when !PADTMP */
#define SVs_TEMP	0x00080000  /* mortal (implies string is stealable) */
#define SVs_OBJECT	0x00100000  /* is "blessed" */
#define SVs_GMG		0x00200000  /* has magical get method */
#define SVs_SMG		0x00400000  /* has magical set method */
#define SVs_RMG		0x00800000  /* has random magical methods */

#define SVf_FAKE	0x01000000  /* 0: glob is just a copy
                                       1: SV head arena wasn't malloc()ed
                                       2: For PVCV, whether CvUNIQUE(cv)
                                          refers to an eval or once only
                                          [CvEVAL(cv), CvSPECIAL(cv)]
                                       3: HV: informally reserved by DAPM
                                          for vtables
                                       4: Together with other flags (or
                                           lack thereof) indicates a regex,
                                           including PVLV-as-regex. See
                                           isREGEXP().
                                       */
#define SVf_OOK		0x02000000  /* has valid offset value. For a PVHV this
                                       means that a hv_aux struct is present
                                       after the main array */
#define SVf_BREAK	0x04000000  /* refcnt is artificially low - used by
                                       SVs in final arena cleanup.
                                       Set in S_regtry on PL_reg_curpm, so that
                                       perl_destruct will skip it.
                                       Used for mark and sweep by OP_AASSIGN
                                       */
#define SVf_READONLY	0x08000000  /* may not be modified */




#define SVf_THINKFIRST	(SVf_READONLY|SVf_PROTECT|SVf_ROK|SVf_FAKE \
                        |SVs_RMG|SVf_IsCOW)

#define SVf_OK		(SVf_IOK|SVf_NOK|SVf_POK|SVf_ROK| \
                         SVp_IOK|SVp_NOK|SVp_POK|SVpgv_GP)

#define PRIVSHIFT 4	/* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */

/* SVf_AMAGIC means that the stash *may* have overload methods. It's
 * set each time a function is compiled into a stash, and is reset by the
 * overload code when called for the first time and finds that there are
 * no overload methods. Note that this used to be set on the object; but
 * is now only set on stashes.
 */
#define SVf_AMAGIC	0x10000000  /* has magical overloaded methods */
#define SVf_IsCOW	0x10000000  /* copy on write (shared hash key if
                                       SvLEN == 0) */

/* Ensure this value does not clash with the GV_ADD* flags in gv.h, or the
   CV_CKPROTO_* flags in op.c, or the padadd_* flags in pad.h: */
#define SVf_UTF8        0x20000000  /* SvPV is UTF-8 encoded
                                       This is also set on RVs whose overloaded
                                       stringification is UTF-8. This might
                                       only happen as a side effect of SvPV() */
/* PVHV */
#define SVphv_SHAREKEYS 0x20000000  /* PVHV keys live on shared string table */

/* PVAV could probably use 0x2000000 without conflict. I assume that PVFM can
   be UTF-8 encoded, and PVCVs could well have UTF-8 prototypes. PVIOs haven't
   been restructured, so sometimes get used as string buffers.  */


/* Some private flags. */


/* scalar SVs with SVp_POK */
#define SVppv_STATIC    0x40000000 /* PV is pointer to static const; must be set with SVf_IsCOW */
/* PVAV */
#define SVpav_REAL	0x40000000  /* free old entries */
/* PVHV */
#define SVphv_LAZYDEL	0x40000000  /* entry in xhv_eiter must be deleted */

/* IV, PVIV, PVNV, PVMG, PVGV and (I assume) PVLV  */
#define SVf_IVisUV	0x80000000  /* use XPVUV instead of XPVIV */
/* PVAV */
#define SVpav_REIFY 	0x80000000  /* can become real */
/* PVHV */
#define SVphv_HASKFLAGS	0x80000000  /* keys have flag byte after hash */
/* RV upwards. However, SVf_ROK and SVp_IOK are exclusive  */
#define SVprv_WEAKREF   0x80000000  /* Weak reference */
/* pad name vars only */

#define _XPV_HEAD							\
    HV*		xmg_stash;	/* class package */			\
    union _xmgu	xmg_u;							\
    STRLEN	xpv_cur;	/* length of svu_pv as a C string */    \
    union {								\
        STRLEN	xpvlenu_len; 	/* allocated size */			\
        struct regexp* xpvlenu_rx; /* regex when SV body is XPVLV */    \
    } xpv_len_u

#define xpv_len	xpv_len_u.xpvlenu_len

union _xnvu {
    NV	    xnv_nv;		/* numeric value, if any */
    HV *    xgv_stash;
    line_t  xnv_lines;           /* used internally by S_scan_subst() */
    bool    xnv_bm_tail;        /* an SvVALID (BM) SV has an implicit "\n" */
};

union _xivu {
    IV	    xivu_iv;		/* integer value */
    UV	    xivu_uv;
    HEK *   xivu_namehek;	/* xpvlv, xpvgv: GvNAME */
    bool    xivu_eval_seen;     /* used internally by S_scan_subst() */

};

union _xmgu {
    MAGIC*  xmg_magic;		/* linked list of magicalness */
    STRLEN  xmg_hash_index;	/* used while freeing hash entries */
};

struct xpv {
    _XPV_HEAD;
};

struct xpviv {
    _XPV_HEAD;
    union _xivu xiv_u;
};

#define xiv_iv xiv_u.xivu_iv

struct xpvuv {
    _XPV_HEAD;
    union _xivu xuv_u;
};

#define xuv_uv xuv_u.xivu_uv

struct xpvnv {
    _XPV_HEAD;
    union _xivu xiv_u;
    union _xnvu xnv_u;
};

/* This structure must match the beginning of struct xpvhv in hv.h. */
struct xpvmg {
    _XPV_HEAD;
    union _xivu xiv_u;
    union _xnvu xnv_u;
};

struct xpvlv {
    _XPV_HEAD;
    union _xivu xiv_u;
    union _xnvu xnv_u;
    union {
        STRLEN	xlvu_targoff;
        SSize_t xlvu_stargoff;
    } xlv_targoff_u;
    STRLEN	xlv_targlen;
    SV*		xlv_targ;
    char	xlv_type;	/* k=keys .=pos x=substr v=vec /=join/re
                                 * y=alem/helem/iter t=tie T=tied HE */
    char	xlv_flags;	/* 1 = negative offset  2 = negative len
                                   4 = out of range (vec) */
};

#define xlv_targoff xlv_targoff_u.xlvu_targoff

struct xpvinvlist {
    _XPV_HEAD;
    IV          prev_index;     /* caches result of previous invlist_search() */
    STRLEN	iterator;       /* Stores where we are in iterating */
    bool	is_offset;	/* The data structure for all inversion lists
                                   begins with an element for code point U+0000.
                                   If this bool is set, the actual list contains
                                   that 0; otherwise, the list actually begins
                                   with the following element.  Thus to invert
                                   the list, merely toggle this flag  */
};

/* This structure works in 2 ways - regular scalar, or GV with GP */

struct xpvgv {
    _XPV_HEAD;
    union _xivu xiv_u;
    union _xnvu xnv_u;
};

typedef U32 cv_flags_t;

#define _XPVCV_COMMON								\
    HV *	xcv_stash;							\
    union {									\
        OP *	xcv_start;							\
        ANY	xcv_xsubany;							\
    }		xcv_start_u;					    		\
    union {									\
        OP *	xcv_root;							\
        void	(*xcv_xsub) (pTHX_ CV*);					\
    }		xcv_root_u;							\
    union {								\
        GV *	xcv_gv;							\
        HEK *	xcv_hek;						\
    }		xcv_gv_u;						\
    char *	xcv_file;							\
    union {									\
        PADLIST *	xcv_padlist;						\
        void *		xcv_hscxt;						\
    }		xcv_padlist_u;							\
    CV *	xcv_outside;							\
    U32		xcv_outside_seq; /* the COP sequence (at the point of our	\
                                  * compilation) in the lexically enclosing	\
                                  * sub */					\
    cv_flags_t	xcv_flags;						\
    I32	xcv_depth	/* >= 2 indicates recursive call */

/* This structure must match XPVCV in cv.h */

struct xpvfm {
    _XPV_HEAD;
    _XPVCV_COMMON;
};


struct xpvio {
    _XPV_HEAD;
    union _xivu xiv_u;
    /* ifp and ofp are normally the same, but sockets need separate streams */
    PerlIO *	xio_ofp;
    /* Cray addresses everything by word boundaries (64 bits) and
     * code and data pointers cannot be mixed (which is exactly what
     * Perl_filter_add() tries to do with the dirp), hence the
     *  following union trick (as suggested by Gurusamy Sarathy).
     * For further information see Geir Johansen's problem report
     * titled [ID 20000612.002 (#3366)] Perl problem on Cray system
     * The any pointer (known as IoANY()) will also be a good place
     * to hang any IO disciplines to.
     */
    union {
        DIR *	xiou_dirp;	/* for opendir, readdir, etc */
        void *	xiou_any;	/* for alignment */
    } xio_dirpu;
    /* IV xio_lines is now in IVX  $. */
    IV		xio_page;	/* $% */
    IV		xio_page_len;	/* $= */
    IV		xio_lines_left;	/* $- */
    char *	xio_top_name;	/* $^ */
    GV *	xio_top_gv;	/* $^ */
    char *	xio_fmt_name;	/* $~ */
    GV *	xio_fmt_gv;	/* $~ */
    char *	xio_bottom_name;/* $^B */
    GV *	xio_bottom_gv;	/* $^B */
    char	xio_type;
    U8		xio_flags;
};

#define xio_dirp	xio_dirpu.xiou_dirp
#define xio_any		xio_dirpu.xiou_any

#define IOf_ARGV	1	/* this fp iterates over ARGV */
#define IOf_START	2	/* check for null ARGV and substitute '-' */
#define IOf_FLUSH	4	/* this fp wants a flush after write op */
#define IOf_DIDTOP	8	/* just did top of form */
#define IOf_UNTAINT	16	/* consider this fp (and its data) "safe" */
#define IOf_NOLINE	32	/* slurped a pseudo-line from empty file */
#define IOf_FAKE_DIRP	64	/* xio_dirp is fake (source filters kludge)
                                   Also, when this is set, SvPVX() is valid */

/* The following macros define implementation-independent predicates on SVs. */

/*
=for apidoc Am|U32|SvNIOK|SV* sv
Returns a U32 value indicating whether the SV contains a number, integer or
double.

=for apidoc Am|U32|SvNIOKp|SV* sv
Returns a U32 value indicating whether the SV contains a number, integer or
double.  Checks the B<private> setting.  Use C<SvNIOK> instead.

=for apidoc Am|void|SvNIOK_off|SV* sv
Unsets the NV/IV status of an SV.

=for apidoc Am|U32|SvOK|SV* sv
Returns a U32 value indicating whether the value is defined.  This is
only meaningful for scalars.

=for apidoc Am|U32|SvIOKp|SV* sv
Returns a U32 value indicating whether the SV contains an integer.  Checks
the B<private> setting.  Use C<SvIOK> instead.

=for apidoc Am|U32|SvNOKp|SV* sv
Returns a U32 value indicating whether the SV contains a double.  Checks the
B<private> setting.  Use C<SvNOK> instead.

=for apidoc Am|U32|SvPOKp|SV* sv
Returns a U32 value indicating whether the SV contains a character string.
Checks the B<private> setting.  Use C<SvPOK> instead.

=for apidoc Am|U32|SvIOK|SV* sv
Returns a U32 value indicating whether the SV contains an integer.

=for apidoc Am|void|SvIOK_on|SV* sv
Tells an SV that it is an integer.

=for apidoc Am|void|SvIOK_off|SV* sv
Unsets the IV status of an SV.

=for apidoc Am|void|SvIOK_only|SV* sv
Tells an SV that it is an integer and disables all other C<OK> bits.

=for apidoc Am|void|SvIOK_only_UV|SV* sv
Tells an SV that it is an unsigned integer and disables all other C<OK> bits.

=for apidoc Am|bool|SvIOK_UV|SV* sv
Returns a boolean indicating whether the SV contains an integer that must be
interpreted as unsigned.  A non-negative integer whose value is within the
range of both an IV and a UV may be flagged as either C<SvUOK> or C<SvIOK>.

=for apidoc Am|bool|SvUOK|SV* sv
Returns a boolean indicating whether the SV contains an integer that must be
interpreted as unsigned.  A non-negative integer whose value is within the
range of both an IV and a UV may be flagged as either C<SvUOK> or C<SvIOK>.

=for apidoc Am|bool|SvIOK_notUV|SV* sv
Returns a boolean indicating whether the SV contains a signed integer.

=for apidoc Am|U32|SvNOK|SV* sv
Returns a U32 value indicating whether the SV contains a double.

=for apidoc Am|void|SvNOK_on|SV* sv
Tells an SV that it is a double.

=for apidoc Am|void|SvNOK_off|SV* sv
Unsets the NV status of an SV.

=for apidoc Am|void|SvNOK_only|SV* sv
Tells an SV that it is a double and disables all other OK bits.

=for apidoc Am|U32|SvPOK|SV* sv
Returns a U32 value indicating whether the SV contains a character
string.

=for apidoc Am|void|SvPOK_on|SV* sv
Tells an SV that it is a string.

=for apidoc Am|void|SvPOK_off|SV* sv
Unsets the PV status of an SV.

=for apidoc Am|void|SvPOK_only|SV* sv
Tells an SV that it is a string and disables all other C<OK> bits.
Will also turn off the UTF-8 status.

=for apidoc Am|bool|SvVOK|SV* sv
Returns a boolean indicating whether the SV contains a v-string.

=for apidoc Am|U32|SvOOK|SV* sv
Returns a U32 indicating whether the pointer to the string buffer is offset.
This hack is used internally to speed up removal of characters from the
beginning of a C<L</SvPV>>.  When C<SvOOK> is true, then the start of the
allocated string buffer is actually C<SvOOK_offset()> bytes before C<SvPVX>.
This offset used to be stored in C<SvIVX>, but is now stored within the spare
part of the buffer.

=for apidoc Am|U32|SvROK|SV* sv
Tests if the SV is an RV.

=for apidoc Am|void|SvROK_on|SV* sv
Tells an SV that it is an RV.

=for apidoc Am|void|SvROK_off|SV* sv
Unsets the RV status of an SV.

=for apidoc Am|SV*|SvRV|SV* sv
Dereferences an RV to return the SV.

=for apidoc Am|IV|SvIVX|SV* sv
Returns the raw value in the SV's IV slot, without checks or conversions.
Only use when you are sure C<SvIOK> is true.  See also C<L</SvIV>>.

=for apidoc Am|UV|SvUVX|SV* sv
Returns the raw value in the SV's UV slot, without checks or conversions.
Only use when you are sure C<SvIOK> is true.  See also C<L</SvUV>>.

=for apidoc AmD|UV|SvUVXx|SV* sv
This is an unnecessary synonym for L</SvUVX>

=for apidoc Am|NV|SvNVX|SV* sv
Returns the raw value in the SV's NV slot, without checks or conversions.
Only use when you are sure C<SvNOK> is true.  See also C<L</SvNV>>.

=for apidoc Am|char*|SvPVX|SV* sv
=for apidoc_item |char*|SvPVXx|SV* sv
=for apidoc_item |const char*|SvPVX_const|SV* sv
=for apidoc_item |char*|SvPVX_mutable|SV* sv

These return a pointer to the physical string in the SV.  The SV must contain a
string.  Prior to 5.9.3 it is not safe to execute these unless the SV's
type >= C<SVt_PV>.

These are also used to store the name of an autoloaded subroutine in an XS
AUTOLOAD routine.  See L<perlguts/Autoloading with XSUBs>.

C<SvPVXx> is identical to C<SvPVX>.

C<SvPVX_mutable> is merely a synonym for C<SvPVX>, but its name emphasizes that
the string is modifiable by the caller.

C<SvPVX_const> differs in that the return value has been cast so that the
compiler will complain if you were to try to modify the contents of the string,
(unless you cast away const yourself).

=for apidoc Am|STRLEN|SvCUR|SV* sv
Returns the length, in bytes, of the PV inside the SV.
Note that this may not match Perl's C<length>; for that, use
C<sv_len_utf8(sv)>. See C<L</SvLEN>> also.

=for apidoc Am|STRLEN|SvLEN|SV* sv
Returns the size of the string buffer in the SV, not including any part
attributable to C<SvOOK>.  See C<L</SvCUR>>.

=for apidoc Am|char*|SvEND|SV* sv
Returns a pointer to the spot just after the last character in
the string which is in the SV, where there is usually a trailing
C<NUL> character (even though Perl scalars do not strictly require it).
See C<L</SvCUR>>.  Access the character as C<*(SvEND(sv))>.

Warning: If C<SvCUR> is equal to C<SvLEN>, then C<SvEND> points to
unallocated memory.

=for apidoc Am|HV*|SvSTASH|SV* sv
Returns the stash of the SV.

=for apidoc Am|void|SvIV_set|SV* sv|IV val
Set the value of the IV pointer in sv to val.  It is possible to perform
the same function of this macro with an lvalue assignment to C<SvIVX>.
With future Perls, however, it will be more efficient to use
C<SvIV_set> instead of the lvalue assignment to C<SvIVX>.

=for apidoc Am|void|SvNV_set|SV* sv|NV val
Set the value of the NV pointer in C<sv> to val.  See C<L</SvIV_set>>.

=for apidoc Am|void|SvPV_set|SV* sv|char* val
This is probably not what you want to use, you probably wanted
L</sv_usepvn_flags> or L</sv_setpvn> or L</sv_setpvs>.

Set the value of the PV pointer in C<sv> to the Perl allocated
C<NUL>-terminated string C<val>.  See also C<L</SvIV_set>>.

Remember to free the previous PV buffer. There are many things to check.
Beware that the existing pointer may be involved in copy-on-write or other
mischief, so do C<SvOOK_off(sv)> and use C<sv_force_normal> or
C<SvPV_force> (or check the C<SvIsCOW> flag) first to make sure this
modification is safe. Then finally, if it is not a COW, call
C<L</SvPV_free>> to free the previous PV buffer.

=for apidoc Am|void|SvUV_set|SV* sv|UV val
Set the value of the UV pointer in C<sv> to val.  See C<L</SvIV_set>>.

=for apidoc Am|void|SvRV_set|SV* sv|SV* val
Set the value of the RV pointer in C<sv> to val.  See C<L</SvIV_set>>.

=for apidoc Am|void|SvMAGIC_set|SV* sv|MAGIC* val
Set the value of the MAGIC pointer in C<sv> to val.  See C<L</SvIV_set>>.

=for apidoc Am|void|SvSTASH_set|SV* sv|HV* val
Set the value of the STASH pointer in C<sv> to val.  See C<L</SvIV_set>>.

=for apidoc Am|void|SvCUR_set|SV* sv|STRLEN len
Sets the current length, in bytes, of the C string which is in the SV.
See C<L</SvCUR>> and C<SvIV_set>>.

=for apidoc Am|void|SvLEN_set|SV* sv|STRLEN len
Set the size of the string buffer for the SV. See C<L</SvLEN>>.

=cut
*/

#define SvNIOK(sv)		(SvFLAGS(sv) & (SVf_IOK|SVf_NOK))
#define SvNIOKp(sv)		(SvFLAGS(sv) & (SVp_IOK|SVp_NOK))
#define SvNIOK_off(sv)		(SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK| \
                                                  SVp_IOK|SVp_NOK|SVf_IVisUV))

#define assert_not_ROK(sv)	assert_(!SvROK(sv) || !SvRV(sv))
#define assert_not_glob(sv)	assert_(!isGV_with_GP(sv))

#define SvOK(sv)		(SvFLAGS(sv) & SVf_OK)
#define SvOK_off(sv)		(assert_not_ROK(sv) assert_not_glob(sv)	\
                                 SvFLAGS(sv) &=	~(SVf_OK|		\
                                                  SVf_IVisUV|SVf_UTF8),	\
                                                        SvOOK_off(sv))
#define SvOK_off_exc_UV(sv)	(assert_not_ROK(sv)			\
                                 SvFLAGS(sv) &=	~(SVf_OK|		\
                                                  SVf_UTF8),		\
                                                        SvOOK_off(sv))

#define SvOKp(sv)		(SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK))
#define SvIOKp(sv)		(SvFLAGS(sv) & SVp_IOK)
#define SvIOKp_on(sv)		(assert_not_glob(sv)	\
                                    SvFLAGS(sv) |= SVp_IOK)
#define SvNOKp(sv)		(SvFLAGS(sv) & SVp_NOK)
#define SvNOKp_on(sv)		(assert_not_glob(sv) SvFLAGS(sv) |= SVp_NOK)
#define SvPOKp(sv)		(SvFLAGS(sv) & SVp_POK)
#define SvPOKp_on(sv)		(assert_not_ROK(sv) assert_not_glob(sv)	\
                                 SvFLAGS(sv) |= SVp_POK)

#define SvIOK(sv)		(SvFLAGS(sv) & SVf_IOK)
#define SvIOK_on(sv)		(assert_not_glob(sv)	\
                                    SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
#define SvIOK_off(sv)		(SvFLAGS(sv) &= ~(SVf_IOK|SVp_IOK|SVf_IVisUV))
#define SvIOK_only(sv)		(SvOK_off(sv), \
                                    SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
#define SvIOK_only_UV(sv)	(assert_not_glob(sv) SvOK_off_exc_UV(sv), \
                                    SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))

#define SvIOK_UV(sv)		((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV))	\
                                 == (SVf_IOK|SVf_IVisUV))
#define SvUOK(sv)		SvIOK_UV(sv)
#define SvIOK_notUV(sv)		((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV))	\
                                 == SVf_IOK)

#define SvIsUV(sv)		(SvFLAGS(sv) & SVf_IVisUV)
#define SvIsUV_on(sv)		(SvFLAGS(sv) |= SVf_IVisUV)
#define SvIsUV_off(sv)		(SvFLAGS(sv) &= ~SVf_IVisUV)

#define SvNOK(sv)		(SvFLAGS(sv) & SVf_NOK)
#define SvNOK_on(sv)		(assert_not_glob(sv) \
                                 SvFLAGS(sv) |= (SVf_NOK|SVp_NOK))
#define SvNOK_off(sv)		(SvFLAGS(sv) &= ~(SVf_NOK|SVp_NOK))
#define SvNOK_only(sv)		(SvOK_off(sv), \
                                    SvFLAGS(sv) |= (SVf_NOK|SVp_NOK))

/*
=for apidoc Am|U32|SvUTF8|SV* sv
Returns a U32 value indicating the UTF-8 status of an SV.  If things are set-up
properly, this indicates whether or not the SV contains UTF-8 encoded data.
You should use this I<after> a call to C<L</SvPV>> or one of its variants, in
case any call to string overloading updates the internal flag.

If you want to take into account the L<bytes> pragma, use C<L</DO_UTF8>>
instead.

=for apidoc Am|void|SvUTF8_on|SV *sv
Turn on the UTF-8 status of an SV (the data is not changed, just the flag).
Do not use frivolously.

=for apidoc Am|void|SvUTF8_off|SV *sv
Unsets the UTF-8 status of an SV (the data is not changed, just the flag).
Do not use frivolously.

=for apidoc Am|void|SvPOK_only_UTF8|SV* sv
Tells an SV that it is a string and disables all other C<OK> bits,
and leaves the UTF-8 status as it was.

=cut
 */

/* Ensure the return value of this macro does not clash with the GV_ADD* flags
in gv.h: */
#define SvUTF8(sv)		(SvFLAGS(sv) & SVf_UTF8)
#define SvUTF8_on(sv)		(SvFLAGS(sv) |= (SVf_UTF8))
#define SvUTF8_off(sv)		(SvFLAGS(sv) &= ~(SVf_UTF8))

#define SvPOK(sv)		(SvFLAGS(sv) & SVf_POK)
#define SvPOK_on(sv)		(assert_not_ROK(sv) assert_not_glob(sv)	\
                                 SvFLAGS(sv) |= (SVf_POK|SVp_POK))
#define SvPOK_off(sv)		(SvFLAGS(sv) &= ~(SVf_POK|SVp_POK))
#define SvPOK_only(sv)		(assert_not_ROK(sv) assert_not_glob(sv)	\
                                 SvFLAGS(sv) &= ~(SVf_OK|		\
                                                  SVf_IVisUV|SVf_UTF8),	\
                                    SvFLAGS(sv) |= (SVf_POK|SVp_POK))
#define SvPOK_only_UTF8(sv)	(assert_not_ROK(sv) assert_not_glob(sv)	\
                                 SvFLAGS(sv) &= ~(SVf_OK|		\
                                                  SVf_IVisUV),		\
                                    SvFLAGS(sv) |= (SVf_POK|SVp_POK))

#define SvVOK(sv)		(SvMAGICAL(sv)				\
                                 && mg_find(sv,PERL_MAGIC_vstring))
/*
=for apidoc Am|MAGIC*|SvVSTRING_mg|SV * sv

Returns the vstring magic, or NULL if none

=cut
*/
#define SvVSTRING_mg(sv)	(SvMAGICAL(sv) \
                                 ? mg_find(sv,PERL_MAGIC_vstring) : NULL)

#define SvOOK(sv)		(SvFLAGS(sv) & SVf_OOK)
#define SvOOK_on(sv)		(SvFLAGS(sv) |= SVf_OOK)


/*
=for apidoc Am|void|SvOOK_off|SV * sv

Remove any string offset.

=cut
*/

#define SvOOK_off(sv)		((void)(SvOOK(sv) && (sv_backoff(sv),0)))

#define SvFAKE(sv)		(SvFLAGS(sv) & SVf_FAKE)
#define SvFAKE_on(sv)		(SvFLAGS(sv) |= SVf_FAKE)
#define SvFAKE_off(sv)		(SvFLAGS(sv) &= ~SVf_FAKE)

#define SvROK(sv)		(SvFLAGS(sv) & SVf_ROK)
#define SvROK_on(sv)		(SvFLAGS(sv) |= SVf_ROK)
#define SvROK_off(sv)		(SvFLAGS(sv) &= ~(SVf_ROK))

#define SvMAGICAL(sv)		(SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG))
#define SvMAGICAL_on(sv)	(SvFLAGS(sv) |= (SVs_GMG|SVs_SMG|SVs_RMG))
#define SvMAGICAL_off(sv)	(SvFLAGS(sv) &= ~(SVs_GMG|SVs_SMG|SVs_RMG))

#define SvGMAGICAL(sv)		(SvFLAGS(sv) & SVs_GMG)
#define SvGMAGICAL_on(sv)	(SvFLAGS(sv) |= SVs_GMG)
#define SvGMAGICAL_off(sv)	(SvFLAGS(sv) &= ~SVs_GMG)

#define SvSMAGICAL(sv)		(SvFLAGS(sv) & SVs_SMG)
#define SvSMAGICAL_on(sv)	(SvFLAGS(sv) |= SVs_SMG)
#define SvSMAGICAL_off(sv)	(SvFLAGS(sv) &= ~SVs_SMG)

#define SvRMAGICAL(sv)		(SvFLAGS(sv) & SVs_RMG)
#define SvRMAGICAL_on(sv)	(SvFLAGS(sv) |= SVs_RMG)
#define SvRMAGICAL_off(sv)	(SvFLAGS(sv) &= ~SVs_RMG)

/*
=for apidoc Am|bool|SvAMAGIC|SV * sv

Returns a boolean as to whether C<sv> has overloading (active magic) enabled or
not.

=cut
*/

#define SvAMAGIC(sv)		(SvROK(sv) && SvOBJECT(SvRV(sv)) &&	\
                                 HvAMAGIC(SvSTASH(SvRV(sv))))

/* To be used on the stashes themselves: */
#define HvAMAGIC(hv)		(SvFLAGS(hv) & SVf_AMAGIC)
#define HvAMAGIC_on(hv)		(SvFLAGS(hv) |= SVf_AMAGIC)
#define HvAMAGIC_off(hv)	(SvFLAGS(hv) &=~ SVf_AMAGIC)


/* "nog" means "doesn't have get magic" */
#define SvPOK_nog(sv)		((SvFLAGS(sv) & (SVf_POK|SVs_GMG)) == SVf_POK)
#define SvIOK_nog(sv)		((SvFLAGS(sv) & (SVf_IOK|SVs_GMG)) == SVf_IOK)
#define SvUOK_nog(sv)		((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV|SVs_GMG)) == (SVf_IOK|SVf_IVisUV))
#define SvNOK_nog(sv)		((SvFLAGS(sv) & (SVf_NOK|SVs_GMG)) == SVf_NOK)
#define SvNIOK_nog(sv)		(SvNIOK(sv) && !(SvFLAGS(sv) & SVs_GMG))

#define SvPOK_nogthink(sv)	((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST|SVs_GMG)) == SVf_POK)
#define SvIOK_nogthink(sv)	((SvFLAGS(sv) & (SVf_IOK|SVf_THINKFIRST|SVs_GMG)) == SVf_IOK)
#define SvUOK_nogthink(sv)	((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV|SVf_THINKFIRST|SVs_GMG)) == (SVf_IOK|SVf_IVisUV))
#define SvNOK_nogthink(sv)	((SvFLAGS(sv) & (SVf_NOK|SVf_THINKFIRST|SVs_GMG)) == SVf_NOK)
#define SvNIOK_nogthink(sv)	(SvNIOK(sv) && !(SvFLAGS(sv) & (SVf_THINKFIRST|SVs_GMG)))

#define SvPOK_utf8_nog(sv)	((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVs_GMG)) == (SVf_POK|SVf_UTF8))
#define SvPOK_utf8_nogthink(sv)	((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_THINKFIRST|SVs_GMG)) == (SVf_POK|SVf_UTF8))

#define SvPOK_byte_nog(sv)	((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVs_GMG)) == SVf_POK)
#define SvPOK_byte_nogthink(sv)	((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_THINKFIRST|SVs_GMG)) == SVf_POK)

#define SvPOK_pure_nogthink(sv) \
    ((SvFLAGS(sv) & (SVf_POK|SVf_IOK|SVf_NOK|SVf_ROK|SVpgv_GP|SVf_THINKFIRST|SVs_GMG)) == SVf_POK)
#define SvPOK_utf8_pure_nogthink(sv) \
    ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_IOK|SVf_NOK|SVf_ROK|SVpgv_GP|SVf_THINKFIRST|SVs_GMG)) == (SVf_POK|SVf_UTF8))
#define SvPOK_byte_pure_nogthink(sv) \
    ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_IOK|SVf_NOK|SVf_ROK|SVpgv_GP|SVf_THINKFIRST|SVs_GMG)) == SVf_POK)

/*
=for apidoc Am|bool|SvIsBOOL|SV* sv

Returns true if the SV is one of the special boolean constants (PL_sv_yes or
PL_sv_no), or is a regular SV whose last assignment stored a copy of one.

=cut
*/

#define SvIsBOOL(sv)            Perl_sv_isbool(aTHX_ sv)

/*
=for apidoc Am|U32|SvGAMAGIC|SV* sv

Returns true if the SV has get magic or
overloading.  If either is true then
the scalar is active data, and has the potential to return a new value every
time it is accessed.  Hence you must be careful to
only read it once per user logical operation and work
with that returned value.  If neither is true then
the scalar's value cannot change unless written to.

=cut
*/

#define SvGAMAGIC(sv)           (SvGMAGICAL(sv) || SvAMAGIC(sv))

#define Gv_AMG(stash) \
        (HvNAME(stash) && Gv_AMupdate(stash,FALSE) \
            ? 1					    \
            : (HvAMAGIC_off(stash), 0))

#define SvWEAKREF(sv)		((SvFLAGS(sv) & (SVf_ROK|SVprv_WEAKREF)) \
                                  == (SVf_ROK|SVprv_WEAKREF))
#define SvWEAKREF_on(sv)	(SvFLAGS(sv) |=  (SVf_ROK|SVprv_WEAKREF))
#define SvWEAKREF_off(sv)	(SvFLAGS(sv) &= ~(SVf_ROK|SVprv_WEAKREF))

#define SvPCS_IMPORTED(sv)	((SvFLAGS(sv) & (SVf_ROK|SVprv_PCS_IMPORTED)) \
                                 == (SVf_ROK|SVprv_PCS_IMPORTED))
#define SvPCS_IMPORTED_on(sv)	(SvFLAGS(sv) |=  (SVf_ROK|SVprv_PCS_IMPORTED))
#define SvPCS_IMPORTED_off(sv)	(SvFLAGS(sv) &= ~(SVf_ROK|SVprv_PCS_IMPORTED))

/*
=for apidoc m|U32|SvTHINKFIRST|SV *sv

A quick flag check to see whether an C<sv> should be passed to C<sv_force_normal>
to be "downgraded" before C<SvIVX> or C<SvPVX> can be modified directly.

For example, if your scalar is a reference and you want to modify the C<SvIVX>
slot, you can't just do C<SvROK_off>, as that will leak the referent.

This is used internally by various sv-modifying functions, such as
C<sv_setsv>, C<sv_setiv> and C<sv_pvn_force>.

One case that this does not handle is a gv without SvFAKE set.  After

    if (SvTHINKFIRST(gv)) sv_force_normal(gv);

it will still be a gv.

C<SvTHINKFIRST> sometimes produces false positives.  In those cases
C<sv_force_normal> does nothing.

=cut
*/

#define SvTHINKFIRST(sv)	(SvFLAGS(sv) & SVf_THINKFIRST)

#define SVs_PADMY		0
#define SvPADMY(sv)		!(SvFLAGS(sv) & SVs_PADTMP)
#ifndef PERL_CORE
# define SvPADMY_on(sv)		SvPADTMP_off(sv)
#endif

#define SvPADTMP(sv)		(SvFLAGS(sv) & (SVs_PADTMP))
#define SvPADSTALE(sv)		(SvFLAGS(sv) & (SVs_PADSTALE))

#define SvPADTMP_on(sv)		(SvFLAGS(sv) |= SVs_PADTMP)
#define SvPADTMP_off(sv)	(SvFLAGS(sv) &= ~SVs_PADTMP)
#define SvPADSTALE_on(sv)	Perl_SvPADSTALE_on(MUTABLE_SV(sv))
#define SvPADSTALE_off(sv)	Perl_SvPADSTALE_off(MUTABLE_SV(sv))

#define SvTEMP(sv)		(SvFLAGS(sv) & SVs_TEMP)
#define SvTEMP_on(sv)		(SvFLAGS(sv) |= SVs_TEMP)
#define SvTEMP_off(sv)		(SvFLAGS(sv) &= ~SVs_TEMP)

#define SvOBJECT(sv)		(SvFLAGS(sv) & SVs_OBJECT)
#define SvOBJECT_on(sv)		(SvFLAGS(sv) |= SVs_OBJECT)
#define SvOBJECT_off(sv)	(SvFLAGS(sv) &= ~SVs_OBJECT)

/*
=for apidoc Am|U32|SvREADONLY|SV* sv
Returns true if the argument is readonly, otherwise returns false.
Exposed to perl code via Internals::SvREADONLY().

=for apidoc Am|U32|SvREADONLY_on|SV* sv
Mark an object as readonly. Exactly what this means depends on the object
type. Exposed to perl code via Internals::SvREADONLY().

=for apidoc Am|U32|SvREADONLY_off|SV* sv
Mark an object as not-readonly. Exactly what this mean depends on the
object type. Exposed to perl code via Internals::SvREADONLY().

=cut
*/

#define SvREADONLY(sv)		(SvFLAGS(sv) & (SVf_READONLY|SVf_PROTECT))
#ifdef PERL_CORE
# define SvREADONLY_on(sv)	(SvFLAGS(sv) |= (SVf_READONLY|SVf_PROTECT))
# define SvREADONLY_off(sv)	(SvFLAGS(sv) &=~(SVf_READONLY|SVf_PROTECT))
#else
# define SvREADONLY_on(sv)	(SvFLAGS(sv) |= SVf_READONLY)
# define SvREADONLY_off(sv)	(SvFLAGS(sv) &= ~SVf_READONLY)
#endif

#define SvSCREAM(sv) ((SvFLAGS(sv) & (SVp_SCREAM|SVp_POK)) == (SVp_SCREAM|SVp_POK))
#define SvSCREAM_on(sv)		(SvFLAGS(sv) |= SVp_SCREAM)
#define SvSCREAM_off(sv)	(SvFLAGS(sv) &= ~SVp_SCREAM)

#ifndef PERL_CORE
#  define SvCOMPILED(sv)	0
#  define SvCOMPILED_on(sv)
#  define SvCOMPILED_off(sv)
#endif


#if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS)
#  define SvTAIL(sv)	({ const SV *const _svtail = (const SV *)(sv);	\
                            assert(SvTYPE(_svtail) != SVt_PVAV);	\
                            assert(SvTYPE(_svtail) != SVt_PVHV);	\
                            assert(!(SvFLAGS(_svtail) & (SVf_NOK|SVp_NOK))); \
                            assert(SvVALID(_svtail));                        \
                            ((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail;     \
                        })
#else
#  define SvTAIL(_svtail)  (((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail)
#endif

/* Does the SV have a Boyer-Moore table attached as magic?
 * 'VALID' is a poor name, but is kept for historical reasons.  */
#define SvVALID(_svvalid) (                                  \
               SvPOKp(_svvalid)                              \
            && SvSMAGICAL(_svvalid)                          \
            && SvMAGIC(_svvalid)                             \
            && (SvMAGIC(_svvalid)->mg_type == PERL_MAGIC_bm  \
                || mg_find(_svvalid, PERL_MAGIC_bm))         \
        )

#define SvRVx(sv) SvRV(sv)

#ifdef PERL_DEBUG_COW
/* Need -0.0 for SvNVX to preserve IEEE FP "negative zero" because
   +0.0 + -0.0 => +0.0 but -0.0 + -0.0 => -0.0 */
#  define SvIVX(sv) (0 + ((XPVIV*) SvANY(sv))->xiv_iv)
#  define SvUVX(sv) (0 + ((XPVUV*) SvANY(sv))->xuv_uv)
#  define SvNVX(sv) (-0.0 + ((XPVNV*) SvANY(sv))->xnv_u.xnv_nv)
#  define SvRV(sv) (0 + (sv)->sv_u.svu_rv)
#  define SvRV_const(sv) (0 + (sv)->sv_u.svu_rv)
/* Don't test the core XS code yet.  */
#  if defined (PERL_CORE) && PERL_DEBUG_COW > 1
#    define SvPVX(sv) (0 + (assert_(!SvREADONLY(sv)) (sv)->sv_u.svu_pv))
#  else
#  define SvPVX(sv) SvPVX_mutable(sv)
#  endif
#  define SvCUR(sv) (0 + ((XPV*) SvANY(sv))->xpv_cur)
#  define SvLEN(sv) (0 + ((XPV*) SvANY(sv))->xpv_len)
#  define SvEND(sv) ((sv)->sv_u.svu_pv + ((XPV*)SvANY(sv))->xpv_cur)

#  define SvMAGIC(sv)	(0 + *(assert_(SvTYPE(sv) >= SVt_PVMG) &((XPVMG*)  SvANY(sv))->xmg_u.xmg_magic))
#  define SvSTASH(sv)	(0 + *(assert_(SvTYPE(sv) >= SVt_PVMG) &((XPVMG*)  SvANY(sv))->xmg_stash))
#else   /* Below is not PERL_DEBUG_COW */
# ifdef PERL_CORE
#  define SvLEN(sv) (0 + ((XPV*) SvANY(sv))->xpv_len)
# else
#  define SvLEN(sv) ((XPV*) SvANY(sv))->xpv_len
# endif
#  define SvEND(sv) ((sv)->sv_u.svu_pv + ((XPV*)SvANY(sv))->xpv_cur)

#  if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS)
/* These get expanded inside other macros that already use a variable _sv  */
#    define SvPVX(sv)							\
        (*({ SV *const _svpvx = MUTABLE_SV(sv);				\
            assert(PL_valid_types_PVX[SvTYPE(_svpvx) & SVt_MASK]);	\
            assert(!isGV_with_GP(_svpvx));				\
            assert(!(SvTYPE(_svpvx) == SVt_PVIO				\
                     && !(IoFLAGS(_svpvx) & IOf_FAKE_DIRP)));		\
            &((_svpvx)->sv_u.svu_pv);					\
         }))
#   ifdef PERL_CORE
#    define SvCUR(sv)							\
        ({ const SV *const _svcur = (const SV *)(sv);			\
            assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]);	\
            assert(!isGV_with_GP(_svcur));				\
            assert(!(SvTYPE(_svcur) == SVt_PVIO				\
                     && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP)));		\
            (((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur);		\
         })
#   else
#    define SvCUR(sv)							\
        (*({ const SV *const _svcur = (const SV *)(sv);			\
            assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]);	\
            assert(!isGV_with_GP(_svcur));				\
            assert(!(SvTYPE(_svcur) == SVt_PVIO				\
                     && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP)));		\
            &(((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur);		\
         }))
#   endif
#    define SvIVX(sv)							\
        (*({ const SV *const _svivx = (const SV *)(sv);			\
            assert(PL_valid_types_IVX[SvTYPE(_svivx) & SVt_MASK]);	\
            assert(!isGV_with_GP(_svivx));				\
            &(((XPVIV*) MUTABLE_PTR(SvANY(_svivx)))->xiv_iv);		\
         }))
#    define SvUVX(sv)							\
        (*({ const SV *const _svuvx = (const SV *)(sv);			\
            assert(PL_valid_types_IVX[SvTYPE(_svuvx) & SVt_MASK]);	\
            assert(!isGV_with_GP(_svuvx));				\
            &(((XPVUV*) MUTABLE_PTR(SvANY(_svuvx)))->xuv_uv);		\
         }))
#    define SvNVX(sv)							\
        (*({ const SV *const _svnvx = (const SV *)(sv);			\
            assert(PL_valid_types_NVX[SvTYPE(_svnvx) & SVt_MASK]);	\
            assert(!isGV_with_GP(_svnvx));				\
            &(((XPVNV*) MUTABLE_PTR(SvANY(_svnvx)))->xnv_u.xnv_nv);	\
         }))
#    define SvRV(sv)							\
        (*({ SV *const _svrv = MUTABLE_SV(sv);				\
            assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]);	\
            assert(!isGV_with_GP(_svrv));				\
            assert(!(SvTYPE(_svrv) == SVt_PVIO				\
                     && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP)));		\
            &((_svrv)->sv_u.svu_rv);					\
         }))
#    define SvRV_const(sv)						\
        ({ const SV *const _svrv = (const SV *)(sv);			\
            assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]);	\
            assert(!isGV_with_GP(_svrv));				\
            assert(!(SvTYPE(_svrv) == SVt_PVIO				\
                     && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP)));		\
            (_svrv)->sv_u.svu_rv;					\
         })
#    define SvMAGIC(sv)							\
        (*({ const SV *const _svmagic = (const SV *)(sv);		\
            assert(SvTYPE(_svmagic) >= SVt_PVMG);			\
            &(((XPVMG*) MUTABLE_PTR(SvANY(_svmagic)))->xmg_u.xmg_magic); \
          }))
#    define SvSTASH(sv)							\
        (*({ const SV *const _svstash = (const SV *)(sv);		\
            assert(SvTYPE(_svstash) >= SVt_PVMG);			\
            &(((XPVMG*) MUTABLE_PTR(SvANY(_svstash)))->xmg_stash);	\
          }))
#  else     /* Below is not DEBUGGING or can't use brace groups */
#    define SvPVX(sv) ((sv)->sv_u.svu_pv)
#    define SvCUR(sv) ((XPV*) SvANY(sv))->xpv_cur
#    define SvIVX(sv) ((XPVIV*) SvANY(sv))->xiv_iv
#    define SvUVX(sv) ((XPVUV*) SvANY(sv))->xuv_uv
#    define SvNVX(sv) ((XPVNV*) SvANY(sv))->xnv_u.xnv_nv
#    define SvRV(sv) ((sv)->sv_u.svu_rv)
#    define SvRV_const(sv) (0 + (sv)->sv_u.svu_rv)
#    define SvMAGIC(sv)	((XPVMG*)  SvANY(sv))->xmg_u.xmg_magic
#    define SvSTASH(sv)	((XPVMG*)  SvANY(sv))->xmg_stash
#  endif
#endif

#ifndef PERL_POISON
/* Given that these two are new, there can't be any existing code using them
 *  as LVALUEs, so prevent that from happening  */
#  define SvPVX_mutable(sv)	(0 + (sv)->sv_u.svu_pv)
#  define SvPVX_const(sv)	((const char*)(0 + (sv)->sv_u.svu_pv))
#else
/* Except for the poison code, which uses & to scribble over the pointer after
   free() is called.  */
#  define SvPVX_mutable(sv)	((sv)->sv_u.svu_pv)
#  define SvPVX_const(sv)	((const char*)((sv)->sv_u.svu_pv))
#endif

#define SvIVXx(sv) SvIVX(sv)
#define SvUVXx(sv) SvUVX(sv)
#define SvNVXx(sv) SvNVX(sv)
#define SvPVXx(sv) SvPVX(sv)
#define SvLENx(sv) SvLEN(sv)
#define SvENDx(sv) ((PL_Sv = (sv)), SvEND(PL_Sv))


/* Ask a scalar nicely to try to become an IV, if possible.
   Not guaranteed to stay returning void */
/* Macro won't actually call sv_2iv if already IOK */
#define SvIV_please(sv) \
        STMT_START {if (!SvIOKp(sv) && (SvFLAGS(sv) & (SVf_NOK|SVf_POK))) \
                (void) SvIV(sv); } STMT_END
#define SvIV_please_nomg(sv) \
        (!(SvFLAGS(sv) & (SVf_IOK|SVp_IOK)) && (SvFLAGS(sv) & (SVf_NOK|SVf_POK)) \
            ? (sv_2iv_flags(sv, 0), SvIOK(sv))	  \
            : SvIOK(sv))
#define SvIV_set(sv, val) \
        STMT_START { \
                assert(PL_valid_types_IV_set[SvTYPE(sv) & SVt_MASK]);	\
                assert(!isGV_with_GP(sv));		\
                (((XPVIV*)  SvANY(sv))->xiv_iv = (val)); } STMT_END
#define SvNV_set(sv, val) \
        STMT_START { \
                assert(PL_valid_types_NV_set[SvTYPE(sv) & SVt_MASK]);	\
                assert(!isGV_with_GP(sv));		\
                (((XPVNV*)SvANY(sv))->xnv_u.xnv_nv = (val)); } STMT_END
#define SvPV_set(sv, val) \
        STMT_START { \
                assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]);	\
                assert(!isGV_with_GP(sv));		\
                assert(!(SvTYPE(sv) == SVt_PVIO		\
                     && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
                ((sv)->sv_u.svu_pv = (val)); } STMT_END
#define SvUV_set(sv, val) \
        STMT_START { \
                assert(PL_valid_types_IV_set[SvTYPE(sv) & SVt_MASK]);	\
                assert(!isGV_with_GP(sv));		\
                (((XPVUV*)SvANY(sv))->xuv_uv = (val)); } STMT_END
#define SvRV_set(sv, val) \
        STMT_START { \
                assert(PL_valid_types_RV[SvTYPE(sv) & SVt_MASK]);	\
                assert(!isGV_with_GP(sv));		\
                assert(!(SvTYPE(sv) == SVt_PVIO		\
                     && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
                ((sv)->sv_u.svu_rv = (val)); } STMT_END
#define SvMAGIC_set(sv, val) \
        STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
                (((XPVMG*)SvANY(sv))->xmg_u.xmg_magic = (val)); } STMT_END
#define SvSTASH_set(sv, val) \
        STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
                (((XPVMG*)  SvANY(sv))->xmg_stash = (val)); } STMT_END
#define SvCUR_set(sv, val) \
        STMT_START { \
                assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]);	\
                assert(!isGV_with_GP(sv));		\
                assert(!(SvTYPE(sv) == SVt_PVIO		\
                     && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
                (((XPV*)  SvANY(sv))->xpv_cur = (val)); } STMT_END
#define SvLEN_set(sv, val) \
        STMT_START { \
                assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]);	\
                assert(!isGV_with_GP(sv));	\
                assert(!(SvTYPE(sv) == SVt_PVIO		\
                     && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
                (((XPV*)  SvANY(sv))->xpv_len = (val)); } STMT_END
#define SvEND_set(sv, val) \
        STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
                SvCUR_set(sv, (val) - SvPVX(sv)); } STMT_END

/*
=for apidoc Am|void|SvPV_renew|SV* sv|STRLEN len
Low level micro optimization of C<L</SvGROW>>.  It is generally better to use
C<SvGROW> instead.  This is because C<SvPV_renew> ignores potential issues that
C<SvGROW> handles.  C<sv> needs to have a real C<PV> that is unencombered by
things like COW.  Using C<SV_CHECK_THINKFIRST> or
C<SV_CHECK_THINKFIRST_COW_DROP> before calling this should clean it up, but
why not just use C<SvGROW> if you're not sure about the provenance?

=cut
*/
#define SvPV_renew(sv,n) \
        STMT_START { SvLEN_set(sv, n); \
                SvPV_set((sv), (MEM_WRAP_CHECK_(n,char)			\
                                (char*)saferealloc((Malloc_t)SvPVX(sv), \
                                                   (MEM_SIZE)((n)))));  \
                 } STMT_END

#define SvPV_shrink_to_cur(sv) STMT_START { \
                   const STRLEN _lEnGtH = SvCUR(sv) + 1; \
                   SvPV_renew(sv, _lEnGtH); \
                 } STMT_END

/*
=for apidoc Am|void|SvPV_free|SV * sv

Frees the PV buffer in C<sv>, leaving things in a precarious state, so should
only be used as part of a larger operation

=cut
*/
#define SvPV_free(sv)							\
    STMT_START {							\
                     assert(SvTYPE(sv) >= SVt_PV);			\
                     if (SvLEN(sv)) {					\
                         assert(!SvROK(sv));				\
                         if(UNLIKELY(SvOOK(sv))) {			\
                             STRLEN zok; 				\
                             SvOOK_offset(sv, zok);			\
                             SvPV_set(sv, SvPVX_mutable(sv) - zok);	\
                             SvFLAGS(sv) &= ~SVf_OOK;			\
                         }						\
                         Safefree(SvPVX(sv));				\
                     }							\
                 } STMT_END

#ifdef PERL_CORE
/* Code that crops up in three places to take a scalar and ready it to hold
   a reference */
#  define prepare_SV_for_RV(sv)						\
    STMT_START {							\
                    if (SvTYPE(sv) < SVt_PV && SvTYPE(sv) != SVt_IV)	\
                        sv_upgrade(sv, SVt_IV);				\
                    else if (SvTYPE(sv) >= SVt_PV) {			\
                        SvPV_free(sv);					\
                        SvLEN_set(sv, 0);				\
                        SvCUR_set(sv, 0);				\
                    }							\
                 } STMT_END
#endif

#ifndef PERL_CORE
#  define BmFLAGS(sv)		(SvTAIL(sv) ? FBMcf_TAIL : 0)
#endif

#if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS)
#  define BmUSEFUL(sv)							\
        (*({ SV *const _bmuseful = MUTABLE_SV(sv);			\
            assert(SvTYPE(_bmuseful) >= SVt_PVIV);			\
            assert(SvVALID(_bmuseful));					\
            assert(!SvIOK(_bmuseful));					\
            &(((XPVIV*) SvANY(_bmuseful))->xiv_u.xivu_iv);              \
         }))
#else
#  define BmUSEFUL(sv)          ((XPVIV*) SvANY(sv))->xiv_u.xivu_iv

#endif

#ifndef PERL_CORE
# define BmRARE(sv)	0
# define BmPREVIOUS(sv)	0
#endif

#define FmLINES(sv)	((XPVIV*)  SvANY(sv))->xiv_iv

#define LvTYPE(sv)	((XPVLV*)  SvANY(sv))->xlv_type
#define LvTARG(sv)	((XPVLV*)  SvANY(sv))->xlv_targ
#define LvTARGOFF(sv)	((XPVLV*)  SvANY(sv))->xlv_targoff
#define LvSTARGOFF(sv)	((XPVLV*)  SvANY(sv))->xlv_targoff_u.xlvu_stargoff
#define LvTARGLEN(sv)	((XPVLV*)  SvANY(sv))->xlv_targlen
#define LvFLAGS(sv)	((XPVLV*)  SvANY(sv))->xlv_flags

#define LVf_NEG_OFF      0x1
#define LVf_NEG_LEN      0x2
#define LVf_OUT_OF_RANGE 0x4

#define IoIFP(sv)	(sv)->sv_u.svu_fp
#define IoOFP(sv)	((XPVIO*)  SvANY(sv))->xio_ofp
#define IoDIRP(sv)	((XPVIO*)  SvANY(sv))->xio_dirp
#define IoANY(sv)	((XPVIO*)  SvANY(sv))->xio_any
#define IoLINES(sv)	((XPVIO*)  SvANY(sv))->xiv_u.xivu_iv
#define IoPAGE(sv)	((XPVIO*)  SvANY(sv))->xio_page
#define IoPAGE_LEN(sv)	((XPVIO*)  SvANY(sv))->xio_page_len
#define IoLINES_LEFT(sv)((XPVIO*)  SvANY(sv))->xio_lines_left
#define IoTOP_NAME(sv)	((XPVIO*)  SvANY(sv))->xio_top_name
#define IoTOP_GV(sv)	((XPVIO*)  SvANY(sv))->xio_top_gv
#define IoFMT_NAME(sv)	((XPVIO*)  SvANY(sv))->xio_fmt_name
#define IoFMT_GV(sv)	((XPVIO*)  SvANY(sv))->xio_fmt_gv
#define IoBOTTOM_NAME(sv)((XPVIO*) SvANY(sv))->xio_bottom_name
#define IoBOTTOM_GV(sv)	((XPVIO*)  SvANY(sv))->xio_bottom_gv
#define IoTYPE(sv)	((XPVIO*)  SvANY(sv))->xio_type
#define IoFLAGS(sv)	((XPVIO*)  SvANY(sv))->xio_flags

/* IoTYPE(sv) is a single character telling the type of I/O connection. */
#define IoTYPE_RDONLY		'<'
#define IoTYPE_WRONLY		'>'
#define IoTYPE_RDWR		'+'
#define IoTYPE_APPEND 		'a'
#define IoTYPE_PIPE		'|'
#define IoTYPE_STD		'-'	/* stdin or stdout */
#define IoTYPE_SOCKET		's'
#define IoTYPE_CLOSED		' '
#define IoTYPE_IMPLICIT		'I'	/* stdin or stdout or stderr */
#define IoTYPE_NUMERIC		'#'	/* fdopen */

/*
=for apidoc_section $tainting
=for apidoc Am|bool|SvTAINTED|SV* sv
Checks to see if an SV is tainted.  Returns TRUE if it is, FALSE if
not.

=for apidoc Am|void|SvTAINTED_on|SV* sv
Marks an SV as tainted if tainting is enabled.

=for apidoc Am|void|SvTAINTED_off|SV* sv
Untaints an SV.  Be I<very> careful with this routine, as it short-circuits
some of Perl's fundamental security features.  XS module authors should not
use this function unless they fully understand all the implications of
unconditionally untainting the value.  Untainting should be done in the
standard perl fashion, via a carefully crafted regexp, rather than directly
untainting variables.

=for apidoc Am|void|SvTAINT|SV* sv
Taints an SV if tainting is enabled, and if some input to the current
expression is tainted--usually a variable, but possibly also implicit
inputs such as locale settings.  C<SvTAINT> propagates that taintedness to
the outputs of an expression in a pessimistic fashion; i.e., without paying
attention to precisely which outputs are influenced by which inputs.

=cut
*/

#define sv_taint(sv)	  sv_magic((sv), NULL, PERL_MAGIC_taint, NULL, 0)

#ifdef NO_TAINT_SUPPORT
#   define SvTAINTED(sv) 0
#else
#   define SvTAINTED(sv)	  (SvMAGICAL(sv) && sv_tainted(sv))
#endif
#define SvTAINTED_on(sv)  STMT_START{ if(UNLIKELY(TAINTING_get)){sv_taint(sv);}   }STMT_END
#define SvTAINTED_off(sv) STMT_START{ if(UNLIKELY(TAINTING_get)){sv_untaint(sv);} }STMT_END

#define SvTAINT(sv)			\
    STMT_START {			\
        assert(TAINTING_get || !TAINT_get); \
        if (UNLIKELY(TAINT_get))	\
            SvTAINTED_on(sv);	        \
    } STMT_END

/*
=for apidoc_section $SV
=for apidoc Am|char*|SvPV_force|SV* sv|STRLEN len
=for apidoc_item ||SvPV_force_nolen|SV* sv
=for apidoc_item ||SvPVx_force|SV* sv|STRLEN len
=for apidoc_item ||SvPV_force_nomg|SV* sv|STRLEN len
=for apidoc_item ||SvPV_force_nomg_nolen|SV * sv
=for apidoc_item ||SvPV_force_mutable|SV * sv|STRLEN len
=for apidoc_item ||SvPV_force_flags|SV * sv|STRLEN len|U32 flags
=for apidoc_item ||SvPV_force_flags_nolen|SV * sv|U32 flags
=for apidoc_item ||SvPV_force_flags_mutable|SV * sv|STRLEN len|U32 flags
=for apidoc_item ||SvPVbyte_force
=for apidoc_item ||SvPVbytex_force
=for apidoc_item ||SvPVutf8_force
=for apidoc_item ||SvPVutf8x_force

These are like C<L</SvPV>>, returning the string in the SV, but will force the
SV into containing a string (C<L</SvPOK>>), and only a string
(C<L</SvPOK_only>>), by hook or by crook.  You need to use one of these
C<force> routines if you are going to update the C<L</SvPVX>> directly.

Note that coercing an arbitrary scalar into a plain PV will potentially
strip useful data from it.  For example if the SV was C<SvROK>, then the
referent will have its reference count decremented, and the SV itself may
be converted to an C<SvPOK> scalar with a string buffer containing a value
such as C<"ARRAY(0x1234)">.

The differences between the forms are:

The forms with C<flags> in their names allow you to use the C<flags> parameter
to specify to perform 'get' magic (by setting the C<SV_GMAGIC> flag) or to skip
'get' magic (by clearing it).  The other forms do perform 'get' magic, except
for the ones with C<nomg> in their names, which skip 'get' magic.

The forms that take a C<len> parameter will set that variable to the byte
length of the resultant string (these are macros, so don't use C<&len>).

The forms with C<nolen> in their names indicate they don't have a C<len>
parameter.  They should be used only when it is known that the PV is a C
string, terminated by a NUL byte, and without intermediate NUL characters; or
when you don't care about its length.

The forms with C<mutable> in their names are effectively the same as those without,
but the name emphasizes that the string is modifiable by the caller, which it is
in all the forms.

C<SvPVutf8_force> is like C<SvPV_force>, but converts C<sv> to UTF-8 first if
not already UTF-8.

C<SvPVutf8x_force> is like C<SvPVutf8_force>, but guarantees to evaluate C<sv>
only once; use the more efficient C<SvPVutf8_force> otherwise.

C<SvPVbyte_force> is like C<SvPV_force>, but converts C<sv> to byte
representation first if currently encoded as UTF-8.  If the SV cannot be
downgraded from UTF-8, this croaks.

C<SvPVbytex_force> is like C<SvPVbyte_force>, but guarantees to evaluate C<sv>
only once; use the more efficient C<SvPVbyte_force> otherwise.

=for apidoc Am|char*|SvPV|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVx|SV* sv|STRLEN len
=for apidoc_item |char*|SvPV_nomg|SV* sv|STRLEN len
=for apidoc_item |char*|SvPV_nolen|SV* sv
=for apidoc_item |char*|SvPVx_nolen|SV* sv
=for apidoc_item |char*|SvPV_nomg_nolen|SV* sv
=for apidoc_item |char*|SvPV_mutable|SV* sv|STRLEN len
=for apidoc_item |const char*|SvPV_const|SV* sv|STRLEN len
=for apidoc_item |const char*|SvPVx_const|SV* sv|STRLEN len
=for apidoc_item |const char*|SvPV_nolen_const|SV* sv
=for apidoc_item |const char*|SvPVx_nolen_const|SV* sv
=for apidoc_item |const char*|SvPV_nomg_const|SV* sv|STRLEN len
=for apidoc_item |const char*|SvPV_nomg_const_nolen|SV* sv
=for apidoc_item |char *|SvPV_flags|SV * sv|STRLEN len|U32 flags
=for apidoc_item |const char *|SvPV_flags_const|SV * sv|STRLEN len|U32 flags
=for apidoc_item |char *|SvPV_flags_mutable|SV * sv|STRLEN len|U32 flags
=for apidoc_item |char*|SvPVbyte|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVbyte_nomg|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVbyte_nolen|SV* sv
=for apidoc_item |char*|SvPVbytex_nolen|SV* sv
=for apidoc_item |char*|SvPVbytex|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVbyte_or_null|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVbyte_or_null_nomg|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVutf8|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVutf8x|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVutf8_nomg|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVutf8_nolen|SV* sv
=for apidoc_item |char*|SvPVutf8_or_null|SV* sv|STRLEN len
=for apidoc_item |char*|SvPVutf8_or_null_nomg|SV* sv|STRLEN len

All these return a pointer to the string in C<sv>, or a stringified form of
C<sv> if it does not contain a string.  The SV may cache the stringified
version becoming C<SvPOK>.

This is a very basic and common operation, so there are lots of slightly
different versions of it.

Note that there is no guarantee that the return value of C<SvPV(sv)>, for
example, is equal to C<SvPVX(sv)>, or that C<SvPVX(sv)> contains valid data, or
that successive calls to C<SvPV(sv)> (or another of these forms) will return
the same pointer value each time.  This is due to the way that things like
overloading and Copy-On-Write are handled.  In these cases, the return value
may point to a temporary buffer or similar.  If you absolutely need the
C<SvPVX> field to be valid (for example, if you intend to write to it), then
see C<L</SvPV_force>>.

The differences between the forms are:

The forms with neither C<byte> nor C<utf8> in their names (e.g., C<SvPV> or
C<SvPV_nolen>) can expose the SV's internal string buffer. If
that buffer consists entirely of bytes 0-255 and includes any bytes above
127, then you B<MUST> consult C<SvUTF8> to determine the actual code points
the string is meant to contain. Generally speaking, it is probably safer to
prefer C<SvPVbyte>, C<SvPVutf8>, and the like. See
L<perlguts/How do I pass a Perl string to a C library?> for more details.

The forms with C<flags> in their names allow you to use the C<flags> parameter
to specify to process 'get' magic (by setting the C<SV_GMAGIC> flag) or to skip
'get' magic (by clearing it).  The other forms process 'get' magic, except for
the ones with C<nomg> in their names, which skip 'get' magic.

The forms that take a C<len> parameter will set that variable to the byte
length of the resultant string (these are macros, so don't use C<&len>).

The forms with C<nolen> in their names indicate they don't have a C<len>
parameter.  They should be used only when it is known that the PV is a C
string, terminated by a NUL byte, and without intermediate NUL characters; or
when you don't care about its length.

The forms with C<const> in their names return S<C<const char *>> so that the
compiler will hopefully complain if you were to try to modify the contents of
the string (unless you cast away const yourself).

The other forms return a mutable pointer so that the string is modifiable by
the caller; this is emphasized for the ones with C<mutable> in their names.

The forms whose name ends in C<x> are the same as the corresponding form
without the C<x>, but the C<x> form is guaranteed to evaluate C<sv> exactly
once, with a slight loss of efficiency.  Use this if C<sv> is an expression
with side effects.

C<SvPVutf8> is like C<SvPV>, but converts C<sv> to UTF-8 first if not already
UTF-8.  Similiarly, the other forms with C<utf8> in their names correspond to
their respective forms without.

C<SvPVutf8_or_null> and C<SvPVutf8_or_null_nomg> don't have corresponding
non-C<utf8> forms.  Instead they are like C<SvPVutf8_nomg>, but when C<sv> is
undef, they return C<NULL>.

C<SvPVbyte> is like C<SvPV>, but converts C<sv> to byte representation first if
currently encoded as UTF-8.  If C<sv> cannot be downgraded from UTF-8, it
croaks.  Similiarly, the other forms with C<byte> in their names correspond to
their respective forms without.

C<SvPVbyte_or_null> doesn't have a corresponding non-C<byte> form.  Instead it
is like C<SvPVbyte>, but when C<sv> is undef, it returns C<NULL>.

=for apidoc Am|IV|SvIV|SV* sv
=for apidoc_item SvIVx
=for apidoc_item SvIV_nomg

These coerce the given SV to IV and return it.  The returned value in many
circumstances will get stored in C<sv>'s IV slot, but not in all cases.  (Use
C<L</sv_setiv>> to make sure it does).

C<SvIVx> is different from the others in that it is guaranteed to evaluate
C<sv> exactly once; the others may evaluate it multiple times.  Only use this
form if C<sv> is an expression with side effects, otherwise use the more
efficient C<SvIV>.

C<SvIV_nomg> is the same as C<SvIV>, but does not perform 'get' magic.

=for apidoc Am|NV|SvNV|SV* sv
=for apidoc_item SvNVx
=for apidoc_item SvNV_nomg

These coerce the given SV to NV and return it.  The returned value in many
circumstances will get stored in C<sv>'s NV slot, but not in all cases.  (Use
C<L</sv_setnv>> to make sure it does).

C<SvNVx> is different from the others in that it is guaranteed to evaluate
C<sv> exactly once; the others may evaluate it multiple times.  Only use this
form if C<sv> is an expression with side effects, otherwise use the more
efficient C<SvNV>.

C<SvNV_nomg> is the same as C<SvNV>, but does not perform 'get' magic.

=for apidoc Am|UV|SvUV|SV* sv
=for apidoc_item SvUVx
=for apidoc_item SvUV_nomg

These coerce the given SV to UV and return it.  The returned value in many
circumstances will get stored in C<sv>'s UV slot, but not in all cases.  (Use
C<L</sv_setuv>> to make sure it does).

C<SvUVx> is different from the others in that it is guaranteed to evaluate
C<sv> exactly once; the others may evaluate it multiple times.  Only use this
form if C<sv> is an expression with side effects, otherwise use the more
efficient C<SvUV>.

C<SvUV_nomg> is the same as C<SvUV>, but does not perform 'get' magic.

=for apidoc SvTRUE
=for apidoc_item SvTRUEx
=for apidoc_item SvTRUE_nomg
=for apidoc_item SvTRUE_NN
=for apidoc_item SvTRUE_nomg_NN

These return a boolean indicating whether Perl would evaluate the SV as true or
false.  See C<L</SvOK>> for a defined/undefined test.

As of Perl 5.32, all are guaranteed to evaluate C<sv> only once.  Prior to that
release, only C<SvTRUEx> guaranteed single evaluation; now C<SvTRUEx> is
identical to C<SvTRUE>.

C<SvTRUE_nomg> and C<TRUE_nomg_NN> do not perform 'get' magic; the others do
unless the scalar is already C<SvPOK>, C<SvIOK>, or C<SvNOK> (the public, not
the private flags).

C<SvTRUE_NN> is like C<L</SvTRUE>>, but C<sv> is assumed to be
non-null (NN).  If there is a possibility that it is NULL, use plain
C<SvTRUE>.

C<SvTRUE_nomg_NN> is like C<L</SvTRUE_nomg>>, but C<sv> is assumed to be
non-null (NN).  If there is a possibility that it is NULL, use plain
C<SvTRUE_nomg>.

=for apidoc Am|U32|SvIsCOW|SV* sv
Returns a U32 value indicating whether the SV is Copy-On-Write (either shared
hash key scalars, or full Copy On Write scalars if 5.9.0 is configured for
COW).

=for apidoc Am|bool|SvIsCOW_shared_hash|SV* sv
Returns a boolean indicating whether the SV is Copy-On-Write shared hash key
scalar.

=cut
*/

/* Let us hope that bitmaps for UV and IV are the same */
#define SvIV(sv) (SvIOK_nog(sv) ? SvIVX(sv) : sv_2iv(sv))
#define SvUV(sv) (SvUOK_nog(sv) ? SvUVX(sv) : sv_2uv(sv))
#define SvNV(sv) (SvNOK_nog(sv) ? SvNVX(sv) : sv_2nv(sv))

#define SvIV_nomg(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv_flags(sv, 0))
#define SvUV_nomg(sv) (SvUOK(sv) ? SvUVX(sv) : sv_2uv_flags(sv, 0))
#define SvNV_nomg(sv) (SvNOK(sv) ? SvNVX(sv) : sv_2nv_flags(sv, 0))

/* ----*/

#define SvPV(sv, len)         SvPV_flags(sv, len, SV_GMAGIC)
#define SvPV_const(sv, len)   SvPV_flags_const(sv, len, SV_GMAGIC)
#define SvPV_mutable(sv, len) SvPV_flags_mutable(sv, len, SV_GMAGIC)

/* This test is "is there a cached PV that we can use directly?"
 * We can if
 * a) SVf_POK is true and there's definitely no get magic on the scalar
 * b) SVp_POK is true, there's no get magic, and we know that the cached PV
 *    came from an IV conversion.
 * For the latter case, we don't set SVf_POK so that we can distinguish whether
 * the value originated as a string or as an integer, before we cached the
 * second representation. */
#define SvPOK_or_cached_IV(sv) \
    (((SvFLAGS(sv) & (SVf_POK|SVs_GMG)) == SVf_POK) || ((SvFLAGS(sv) & (SVf_IOK|SVp_POK|SVs_GMG)) == (SVf_IOK|SVp_POK)))

#define SvPV_flags(sv, len, flags) \
    (SvPOK_or_cached_IV(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &len, flags))
#define SvPV_flags_const(sv, len, flags) \
    (SvPOK_or_cached_IV(sv) \
     ? ((len = SvCUR(sv)), SvPVX_const(sv)) : \
     (const char*) sv_2pv_flags(sv, &len, (flags|SV_CONST_RETURN)))
#define SvPV_flags_const_nolen(sv, flags) \
    (SvPOK_or_cached_IV(sv) \
     ? SvPVX_const(sv) : \
     (const char*) sv_2pv_flags(sv, 0, (flags|SV_CONST_RETURN)))
#define SvPV_flags_mutable(sv, len, flags) \
    (SvPOK_or_cached_IV(sv) \
     ? ((len = SvCUR(sv)), SvPVX_mutable(sv)) : \
     sv_2pv_flags(sv, &len, (flags|SV_MUTABLE_RETURN)))

#define SvPV_force(sv, len) SvPV_force_flags(sv, len, SV_GMAGIC)
#define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC)
#define SvPV_force_mutable(sv, len) SvPV_force_flags_mutable(sv, len, SV_GMAGIC)

#define SvPV_force_nomg(sv, len) SvPV_force_flags(sv, len, 0)
#define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0)

#define SvPV_force_flags(sv, len, flags) \
    (SvPOK_pure_nogthink(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &len, flags))

#define SvPV_force_flags_nolen(sv, flags) \
    (SvPOK_pure_nogthink(sv) \
     ? SvPVX(sv) : sv_pvn_force_flags(sv, 0, flags))

#define SvPV_force_flags_mutable(sv, len, flags) \
    (SvPOK_pure_nogthink(sv) \
     ? ((len = SvCUR(sv)), SvPVX_mutable(sv)) \
     : sv_pvn_force_flags(sv, &len, flags|SV_MUTABLE_RETURN))

#define SvPV_nolen(sv) \
    (SvPOK_or_cached_IV(sv) \
     ? SvPVX(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC))

/* "_nomg" in these defines means no mg_get() */
#define SvPV_nomg_nolen(sv) \
    (SvPOK_or_cached_IV(sv) \
     ? SvPVX(sv) : sv_2pv_flags(sv, 0, 0))

#define SvPV_nolen_const(sv) \
    (SvPOK_or_cached_IV(sv) \
     ? SvPVX_const(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC|SV_CONST_RETURN))

#define SvPV_nomg(sv, len) SvPV_flags(sv, len, 0)
#define SvPV_nomg_const(sv, len) SvPV_flags_const(sv, len, 0)
#define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0)

/* ----*/

#define SvPVutf8(sv, len) \
    (SvPOK_utf8_nog(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pvutf8(sv, &len))

#define SvPVutf8_or_null(sv, len) \
    (SvPOK_utf8_nog(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : (SvGETMAGIC(sv), SvOK(sv)) \
     ? sv_2pvutf8_flags(sv, &len, 0) : ((len = 0), NULL))

#define SvPVutf8_nomg(sv, len) \
    (SvPOK_utf8_nog(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pvutf8_flags(sv, &len, 0))

#define SvPVutf8_or_null_nomg(sv, len) \
    (SvPOK_utf8_nog(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : SvOK(sv) \
     ? sv_2pvutf8_flags(sv, &len, 0) : ((len = 0), NULL))

#define SvPVutf8_force(sv, len) \
    (SvPOK_utf8_pure_nogthink(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_pvutf8n_force(sv, &len))

#define SvPVutf8_nolen(sv) \
    (SvPOK_utf8_nog(sv) \
     ? SvPVX(sv) : sv_2pvutf8(sv, 0))

/* ----*/

#define SvPVbyte(sv, len) \
    (SvPOK_byte_nog(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &len))

#define SvPVbyte_or_null(sv, len) \
    (SvPOK_byte_nog(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : (SvGETMAGIC(sv), SvOK(sv)) \
     ? sv_2pvbyte_flags(sv, &len, 0) : ((len = 0), NULL))

#define SvPVbyte_nomg(sv, len) \
    (SvPOK_byte_nog(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte_flags(sv, &len, 0))

#define SvPVbyte_or_null_nomg(sv, len) \
    (SvPOK_utf8_nog(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : SvOK(sv) \
     ? sv_2pvbyte_flags(sv, &len, 0) : ((len = 0), NULL))

#define SvPVbyte_force(sv, len) \
    (SvPOK_byte_pure_nogthink(sv) \
     ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_pvbyten_force(sv, &len))

#define SvPVbyte_nolen(sv) \
    (SvPOK_byte_nog(sv) \
     ? SvPVX(sv) : sv_2pvbyte(sv, 0))


/* define FOOx(): idempotent versions of FOO(). If possible, use a local
 * var to evaluate the arg once; failing that, use a global if possible;
 * failing that, call a function to do the work
 */

#define SvPVx_force(sv, len) sv_pvn_force(sv, &len)
#define SvPVutf8x_force(sv, len) sv_pvutf8n_force(sv, &len)
#define SvPVbytex_force(sv, len) sv_pvbyten_force(sv, &len)

#define SvTRUEx(sv)        SvTRUE(sv)
#define SvTRUEx_nomg(sv)   SvTRUE_nomg(sv)
#define SvTRUE_nomg_NN(sv) SvTRUE_common(sv, TRUE)

#if defined(PERL_USE_GCC_BRACE_GROUPS)

#  define SvIVx(sv) ({SV *_sv = MUTABLE_SV(sv); SvIV(_sv); })
#  define SvUVx(sv) ({SV *_sv = MUTABLE_SV(sv); SvUV(_sv); })
#  define SvNVx(sv) ({SV *_sv = MUTABLE_SV(sv); SvNV(_sv); })
#  define SvPVx(sv, len) ({SV *_sv = (sv); SvPV(_sv, len); })
#  define SvPVx_const(sv, len) ({SV *_sv = (sv); SvPV_const(_sv, len); })
#  define SvPVx_nolen(sv) ({SV *_sv = (sv); SvPV_nolen(_sv); })
#  define SvPVx_nolen_const(sv) ({SV *_sv = (sv); SvPV_nolen_const(_sv); })
#  define SvPVutf8x(sv, len) ({SV *_sv = (sv); SvPVutf8(_sv, len); })
#  define SvPVbytex(sv, len) ({SV *_sv = (sv); SvPVbyte(_sv, len); })
#  define SvPVbytex_nolen(sv) ({SV *_sv = (sv); SvPVbyte_nolen(_sv); })

#else /* __GNUC__ */

/* These inlined macros use globals, which will require a thread
 * declaration in user code, so we avoid them under threads */

#  define SvIVx(sv) ((PL_Sv = (sv)), SvIV(PL_Sv))
#  define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv))
#  define SvNVx(sv) ((PL_Sv = (sv)), SvNV(PL_Sv))
#  define SvPVx(sv, len) ((PL_Sv = (sv)), SvPV(PL_Sv, len))
#  define SvPVx_const(sv, len) ((PL_Sv = (sv)), SvPV_const(PL_Sv, len))
#  define SvPVx_nolen(sv) ((PL_Sv = (sv)), SvPV_nolen(PL_Sv))
#  define SvPVx_nolen_const(sv) ((PL_Sv = (sv)), SvPV_nolen_const(PL_Sv))
#  define SvPVutf8x(sv, len) ((PL_Sv = (sv)), SvPVutf8(PL_Sv, len))
#  define SvPVbytex(sv, len) ((PL_Sv = (sv)), SvPVbyte(PL_Sv, len))
#  define SvPVbytex_nolen(sv) ((PL_Sv = (sv)), SvPVbyte_nolen(PL_Sv))
#endif /* __GNU__ */

/*
=for apidoc Am|bool|SvPVXtrue|SV * sv

Note: This macro may evaluate C<sv> more than once.

Returns a boolean as to whether or not C<sv> contains a PV that is considered
TRUE.  FALSE is returned if C<sv> doesn't contain a PV, or if the PV it does
contain is zero length, or consists of just the single character '0'.  Every
other PV value is considered TRUE.

=cut
*/

#define SvPVXtrue(sv)	(					\
    ((XPV*)SvANY((sv))) 					\
     && (							\
        ((XPV*)SvANY((sv)))->xpv_cur > 1			\
        || (							\
            ((XPV*)SvANY((sv)))->xpv_cur			\
            && *(sv)->sv_u.svu_pv != '0'                        \
        )							\
    )								\
)

#define SvIsCOW(sv)              (SvFLAGS(sv) & SVf_IsCOW)
#define SvIsCOW_on(sv)           (SvFLAGS(sv) |= SVf_IsCOW)
#define SvIsCOW_off(sv)          (SvFLAGS(sv) &= ~(SVf_IsCOW|SVppv_STATIC))
#define SvIsCOW_shared_hash(sv)  ((SvFLAGS(sv) & (SVf_IsCOW|SVppv_STATIC)) == (SVf_IsCOW) && SvLEN(sv) == 0)
#define SvIsCOW_static(sv)       ((SvFLAGS(sv) & (SVf_IsCOW|SVppv_STATIC)) == (SVf_IsCOW|SVppv_STATIC))

#define SvSHARED_HEK_FROM_PV(pvx) \
        ((struct hek*)(pvx - STRUCT_OFFSET(struct hek, hek_key)))
/*
=for apidoc Am|struct hek*|SvSHARED_HASH|SV * sv
Returns the hash for C<sv> created by C<L</newSVpvn_share>>.

=cut
*/
#define SvSHARED_HASH(sv) (0 + SvSHARED_HEK_FROM_PV(SvPVX_const(sv))->hek_hash)

/* flag values for sv_*_flags functions */
#define SV_UTF8_NO_ENCODING	0       /* No longer used */

/*
=for apidoc AmnhD||SV_UTF8_NO_ENCODING

=cut
*/

#define SV_IMMEDIATE_UNREF	1
#define SV_GMAGIC		2
#define SV_COW_DROP_PV		4
#define SV_NOSTEAL		16
#define SV_CONST_RETURN		32
#define SV_MUTABLE_RETURN	64
#define SV_SMAGIC		128
#define SV_HAS_TRAILING_NUL	256
#define SV_COW_SHARED_HASH_KEYS	512
/* This one is only enabled for PERL_OLD_COPY_ON_WRITE */
/* XXX This flag actually enabled for any COW.  But it appears not to do
       anything.  Can we just remove it?  Or will it serve some future
       purpose.  */
#define SV_COW_OTHER_PVS	1024
/* Make sv_2pv_flags return NULL if something is undefined.  */
#define SV_UNDEF_RETURNS_NULL	2048
/* Tell sv_utf8_upgrade() to not check to see if an upgrade is really needed.
 * This is used when the caller has already determined it is, and avoids
 * redundant work */
#define SV_FORCE_UTF8_UPGRADE	4096
/* if (after resolving magic etc), the SV is found to be overloaded,
 * don't call the overload magic, just return as-is */
#define SV_SKIP_OVERLOAD	8192
#define SV_CATBYTES		16384
#define SV_CATUTF8		32768

/* The core is safe for this COW optimisation. XS code on CPAN may not be.
   So only default to doing the COW setup if we're in the core.
 */
#ifdef PERL_CORE
#  ifndef SV_DO_COW_SVSETSV
#    define SV_DO_COW_SVSETSV	SV_COW_SHARED_HASH_KEYS|SV_COW_OTHER_PVS
#  endif
#endif

#ifndef SV_DO_COW_SVSETSV
#  define SV_DO_COW_SVSETSV	0
#endif


#define sv_unref(sv)    	sv_unref_flags(sv, 0)
#define sv_force_normal(sv)	sv_force_normal_flags(sv, 0)
#define sv_usepvn(sv, p, l)	sv_usepvn_flags(sv, p, l, 0)
#define sv_usepvn_mg(sv, p, l)	sv_usepvn_flags(sv, p, l, SV_SMAGIC)

/* We are about to replace the SV's current value. So if it's copy on write
   we need to normalise it. Use the SV_COW_DROP_PV flag hint to say that
   the value is about to get thrown away, so drop the PV rather than go to
   the effort of making a read-write copy only for it to get immediately
   discarded.  */

#define SV_CHECK_THINKFIRST_COW_DROP(sv) if (SvTHINKFIRST(sv)) \
                                    sv_force_normal_flags(sv, SV_COW_DROP_PV)

#ifdef PERL_COPY_ON_WRITE
#   define SvCANCOW(sv)					    \
        (SvIsCOW(sv)					     \
         ? SvLEN(sv) ? CowREFCNT(sv) != SV_COW_REFCNT_MAX : 1 \
         : (SvFLAGS(sv) & CAN_COW_MASK) == CAN_COW_FLAGS       \
                            && SvCUR(sv)+1 < SvLEN(sv))
   /* Note: To allow 256 COW "copies", a refcnt of 0 means 1. */
#   define CowREFCNT(sv)	(*(U8 *)(SvPVX(sv)+SvLEN(sv)-1))
#   define SV_COW_REFCNT_MAX	nBIT_UMAX(sizeof(U8) * CHARBITS)
#   define CAN_COW_MASK	(SVf_POK|SVf_ROK|SVp_POK|SVf_FAKE| \
                         SVf_OOK|SVf_BREAK|SVf_READONLY|SVf_PROTECT)
#endif

#define CAN_COW_FLAGS	(SVp_POK|SVf_POK)

#define SV_CHECK_THINKFIRST(sv) if (SvTHINKFIRST(sv)) \
                                    sv_force_normal_flags(sv, 0)


/* all these 'functions' are now just macros */

#define sv_pv(sv) SvPV_nolen(sv)
#define sv_pvutf8(sv) SvPVutf8_nolen(sv)
#define sv_pvbyte(sv) SvPVbyte_nolen(sv)

#define sv_pvn_force_nomg(sv, lp) sv_pvn_force_flags(sv, lp, 0)
#define sv_utf8_upgrade_flags(sv, flags) sv_utf8_upgrade_flags_grow(sv, flags, 0)
#define sv_utf8_upgrade_nomg(sv) sv_utf8_upgrade_flags(sv, 0)
#define sv_utf8_downgrade(sv, fail_ok) sv_utf8_downgrade_flags(sv, fail_ok, SV_GMAGIC)
#define sv_utf8_downgrade_nomg(sv, fail_ok) sv_utf8_downgrade_flags(sv, fail_ok, 0)
#define sv_catpvn_nomg(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, 0)
#define sv_catpv_nomg(dsv, sstr) sv_catpv_flags(dsv, sstr, 0)
#define sv_setsv(dsv, ssv) \
        sv_setsv_flags(dsv, ssv, SV_GMAGIC|SV_DO_COW_SVSETSV)
#define sv_setsv_nomg(dsv, ssv) sv_setsv_flags(dsv, ssv, SV_DO_COW_SVSETSV)
#define sv_catsv(dsv, ssv) sv_catsv_flags(dsv, ssv, SV_GMAGIC)
#define sv_catsv_nomg(dsv, ssv) sv_catsv_flags(dsv, ssv, 0)
#define sv_catsv_mg(dsv, ssv) sv_catsv_flags(dsv, ssv, SV_GMAGIC|SV_SMAGIC)
#define sv_catpvn(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, SV_GMAGIC)
#define sv_catpvn_mg(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, SV_GMAGIC|SV_SMAGIC);
#define sv_copypv(dsv, ssv) sv_copypv_flags(dsv, ssv, SV_GMAGIC)
#define sv_copypv_nomg(dsv, ssv) sv_copypv_flags(dsv, ssv, 0)
#define sv_2pv(sv, lp) sv_2pv_flags(sv, lp, SV_GMAGIC)
#define sv_2pv_nolen(sv) sv_2pv(sv, 0)
#define sv_2pvbyte(sv, lp) sv_2pvbyte_flags(sv, lp, SV_GMAGIC)
#define sv_2pvbyte_nolen(sv) sv_2pvbyte(sv, 0)
#define sv_2pvutf8(sv, lp) sv_2pvutf8_flags(sv, lp, SV_GMAGIC)
#define sv_2pvutf8_nolen(sv) sv_2pvutf8(sv, 0)
#define sv_2pv_nomg(sv, lp) sv_2pv_flags(sv, lp, 0)
#define sv_pvn_force(sv, lp) sv_pvn_force_flags(sv, lp, SV_GMAGIC)
#define sv_utf8_upgrade(sv) sv_utf8_upgrade_flags(sv, SV_GMAGIC)
#define sv_2iv(sv) sv_2iv_flags(sv, SV_GMAGIC)
#define sv_2uv(sv) sv_2uv_flags(sv, SV_GMAGIC)
#define sv_2nv(sv) sv_2nv_flags(sv, SV_GMAGIC)
#define sv_eq(sv1, sv2) sv_eq_flags(sv1, sv2, SV_GMAGIC)
#define sv_cmp(sv1, sv2) sv_cmp_flags(sv1, sv2, SV_GMAGIC)
#define sv_cmp_locale(sv1, sv2) sv_cmp_locale_flags(sv1, sv2, SV_GMAGIC)
#define sv_numeq(sv1, sv2) sv_numeq_flags(sv1, sv2, SV_GMAGIC)
#define sv_streq(sv1, sv2) sv_streq_flags(sv1, sv2, SV_GMAGIC)
#define sv_collxfrm(sv, nxp) sv_collxfrm_flags(sv, nxp, SV_GMAGIC)
#define sv_2bool(sv) sv_2bool_flags(sv, SV_GMAGIC)
#define sv_2bool_nomg(sv) sv_2bool_flags(sv, 0)
#define sv_insert(bigstr, offset, len, little, littlelen)		\
        Perl_sv_insert_flags(aTHX_ (bigstr),(offset), (len), (little),	\
                             (littlelen), SV_GMAGIC)
#define sv_mortalcopy(sv) \
        Perl_sv_mortalcopy_flags(aTHX_ sv, SV_GMAGIC|SV_DO_COW_SVSETSV)
#define sv_cathek(sv,hek)					    \
        STMT_START {						     \
            HEK * const bmxk = hek;				      \
            sv_catpvn_flags(sv, HEK_KEY(bmxk), HEK_LEN(bmxk),	       \
                            HEK_UTF8(bmxk) ? SV_CATUTF8 : SV_CATBYTES); \
        } STMT_END

/* Should be named SvCatPVN_utf8_upgrade? */
#define sv_catpvn_nomg_utf8_upgrade(dsv, sstr, slen, nsv)	\
        STMT_START {					\
            if (!(nsv))					\
                nsv = newSVpvn_flags(sstr, slen, SVs_TEMP);	\
            else					\
                sv_setpvn(nsv, sstr, slen);		\
            SvUTF8_off(nsv);				\
            sv_utf8_upgrade(nsv);			\
            sv_catsv_nomg(dsv, nsv);			\
        } STMT_END
#define sv_catpvn_nomg_maybeutf8(dsv, sstr, slen, is_utf8) \
        sv_catpvn_flags(dsv, sstr, slen, (is_utf8)?SV_CATUTF8:SV_CATBYTES)

#if defined(PERL_CORE) || defined(PERL_EXT)
# define sv_or_pv_len_utf8(sv, pv, bytelen)	      \
    (SvGAMAGIC(sv)				       \
        ? utf8_length((U8 *)(pv), (U8 *)(pv)+(bytelen))	\
        : sv_len_utf8(sv))
#endif

/*
=for apidoc newRV
=for apidoc_item ||newRV_inc|

These are identical.  They create an RV wrapper for an SV.  The reference count
for the original SV is incremented.

=cut
*/

#define newRV_inc(sv)	newRV(sv)

/* the following macros update any magic values this C<sv> is associated with */

/*
=for apidoc_section $SV

=for apidoc Am|void|SvGETMAGIC|SV* sv
Invokes C<L</mg_get>> on an SV if it has 'get' magic.  For example, this
will call C<FETCH> on a tied variable.  This macro evaluates its
argument more than once.

=for apidoc Am|void|SvSETMAGIC|SV* sv
Invokes C<L</mg_set>> on an SV if it has 'set' magic.  This is necessary
after modifying a scalar, in case it is a magical variable like C<$|>
or a tied variable (it calls C<STORE>).  This macro evaluates its
argument more than once.

=for apidoc Am|void|SvSetSV|SV* dsv|SV* ssv
=for apidoc_item SvSetMagicSV
=for apidoc_item SvSetSV_nosteal
=for apidoc_item SvSetMagicSV_nosteal

if C<dsv> is the same as C<ssv>, these do nothing.  Otherwise they all call
some form of C<L</sv_setsv>>.  They may evaluate their arguments more than
once.

The only differences are:

C<SvSetMagicSV> and C<SvSetMagicSV_nosteal> perform any required 'set' magic
afterwards on the destination SV; C<SvSetSV> and C<SvSetSV_nosteal> do not.

C<SvSetSV_nosteal> C<SvSetMagicSV_nosteal> call a non-destructive version of
C<sv_setsv>.

=for apidoc Am|void|SvSHARE|SV* sv
Arranges for C<sv> to be shared between threads if a suitable module
has been loaded.

=for apidoc Am|void|SvLOCK|SV* sv
Arranges for a mutual exclusion lock to be obtained on C<sv> if a suitable module
has been loaded.

=for apidoc Am|void|SvUNLOCK|SV* sv
Releases a mutual exclusion lock on C<sv> if a suitable module
has been loaded.

=for apidoc_section $SV

=for apidoc Am|char *|SvGROW|SV* sv|STRLEN len
Expands the character buffer in the SV so that it has room for the
indicated number of bytes (remember to reserve space for an extra trailing
C<NUL> character).  Calls C<sv_grow> to perform the expansion if necessary.
Returns a pointer to the character
buffer.  SV must be of type >= C<SVt_PV>.  One
alternative is to call C<sv_grow> if you are not sure of the type of SV.

You might mistakenly think that C<len> is the number of bytes to add to the
existing size, but instead it is the total size C<sv> should be.

=for apidoc Am|char *|SvPVCLEAR|SV* sv
Ensures that sv is a SVt_PV and that its SvCUR is 0, and that it is
properly null terminated. Equivalent to sv_setpvs(""), but more efficient.

=cut
*/

#define SvPVCLEAR(sv) sv_setpv_bufsize(sv,0,0)
#define SvSHARE(sv) PL_sharehook(aTHX_ sv)
#define SvLOCK(sv) PL_lockhook(aTHX_ sv)
#define SvUNLOCK(sv) PL_unlockhook(aTHX_ sv)
#define SvDESTROYABLE(sv) PL_destroyhook(aTHX_ sv)

#define SvGETMAGIC(x) ((void)(UNLIKELY(SvGMAGICAL(x)) && mg_get(x)))
#define SvSETMAGIC(x) STMT_START { if (UNLIKELY(SvSMAGICAL(x))) mg_set(x); } STMT_END

#define SvSetSV_and(dst,src,finally) \
        STMT_START {					\
            if (LIKELY((dst) != (src))) {		\
                sv_setsv(dst, src);			\
                finally;				\
            }						\
        } STMT_END
#define SvSetSV_nosteal_and(dst,src,finally) \
        STMT_START {					\
            if (LIKELY((dst) != (src))) {			\
                sv_setsv_flags(dst, src, SV_GMAGIC | SV_NOSTEAL | SV_DO_COW_SVSETSV);	\
                finally;				\
            }						\
        } STMT_END

#define SvSetSV(dst,src) \
                SvSetSV_and(dst,src,/*nothing*/;)
#define SvSetSV_nosteal(dst,src) \
                SvSetSV_nosteal_and(dst,src,/*nothing*/;)

#define SvSetMagicSV(dst,src) \
                SvSetSV_and(dst,src,SvSETMAGIC(dst))
#define SvSetMagicSV_nosteal(dst,src) \
                SvSetSV_nosteal_and(dst,src,SvSETMAGIC(dst))


#if !defined(SKIP_DEBUGGING)
#define SvPEEK(sv) sv_peek(sv)
#else
#define SvPEEK(sv) ""
#endif

/* Is this a per-interpreter immortal SV (rather than global)?
 * These should either occupy adjacent entries in the interpreter struct
 * (MULTIPLICITY) or adjacent elements of PL_sv_immortals[] otherwise.
 * The unsigned (Size_t) cast avoids the need for a second < 0 condition.
 */
#define SvIMMORTAL_INTERP(sv) ((Size_t)((sv) - &PL_sv_yes) < 4)

/* Does this immortal have a true value? Currently only PL_sv_yes does. */
#define SvIMMORTAL_TRUE(sv)   ((sv) == &PL_sv_yes)

/* the SvREADONLY() test is to quickly reject most SVs */
#define SvIMMORTAL(sv) \
                (  SvREADONLY(sv) \
                && (SvIMMORTAL_INTERP(sv) || (sv) == &PL_sv_placeholder))

#ifdef DEBUGGING
   /* exercise the immortal resurrection code in sv_free2() */
#  define SvREFCNT_IMMORTAL 1000
#else
#  define SvREFCNT_IMMORTAL ((~(U32)0)/2)
#endif

/*
=for apidoc Am|SV *|boolSV|bool b

Returns a true SV if C<b> is a true value, or a false SV if C<b> is 0.

See also C<L</PL_sv_yes>> and C<L</PL_sv_no>>.

=cut
*/

#define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)

/*
=for apidoc Am|void|sv_setbool|SV *sv|bool b
=for apidoc_item |void|sv_setbool_mg|SV *sv|bool b

These set an SV to a true or false boolean value, upgrading first if necessary.

They differ only in that C<sv_setbool_mg> handles 'set' magic; C<sv_setbool>
does not.

=cut
*/

#define sv_setbool(sv, b)     sv_setsv(sv, boolSV(b))
#define sv_setbool_mg(sv, b)  sv_setsv_mg(sv, boolSV(b))

#define isGV(sv) (SvTYPE(sv) == SVt_PVGV)
/* If I give every macro argument a different name, then there won't be bugs
   where nested macros get confused. Been there, done that.  */
/*
=for apidoc Am|bool|isGV_with_GP|SV * sv
Returns a boolean as to whether or not C<sv> is a GV with a pointer to a GP
(glob pointer).

=cut
*/
#define isGV_with_GP(pwadak) \
        (((SvFLAGS(pwadak) & (SVp_POK|SVpgv_GP)) == SVpgv_GP)	\
        && (SvTYPE(pwadak) == SVt_PVGV || SvTYPE(pwadak) == SVt_PVLV))
#define isGV_with_GP_on(sv)	STMT_START {			       \
        assert (SvTYPE(sv) == SVt_PVGV || SvTYPE(sv) == SVt_PVLV); \
        assert (!SvPOKp(sv));					       \
        assert (!SvIOKp(sv));					       \
        (SvFLAGS(sv) |= SVpgv_GP);				       \
    } STMT_END
#define isGV_with_GP_off(sv)	STMT_START {			       \
        assert (SvTYPE(sv) == SVt_PVGV || SvTYPE(sv) == SVt_PVLV); \
        assert (!SvPOKp(sv));					       \
        assert (!SvIOKp(sv));					       \
        (SvFLAGS(sv) &= ~SVpgv_GP);				       \
    } STMT_END
#ifdef PERL_CORE
# define isGV_or_RVCV(kadawp) \
    (isGV(kadawp) || (SvROK(kadawp) && SvTYPE(SvRV(kadawp)) == SVt_PVCV))
#endif
#define isREGEXP(sv) \
    (SvTYPE(sv) == SVt_REGEXP				      \
     || (SvFLAGS(sv) & (SVTYPEMASK|SVpgv_GP|SVf_FAKE))        \
         == (SVt_PVLV|SVf_FAKE))


#ifdef PERL_ANY_COW
# define SvGROW(sv,len) \
        (SvIsCOW(sv) || SvLEN(sv) < (len) ? sv_grow(sv,len) : SvPVX(sv))
#else
# define SvGROW(sv,len) (SvLEN(sv) < (len) ? sv_grow(sv,len) : SvPVX(sv))
#endif
#define SvGROW_mutable(sv,len) \
    (SvLEN(sv) < (len) ? sv_grow(sv,len) : SvPVX_mutable(sv))
#define Sv_Grow sv_grow

#define CLONEf_COPY_STACKS 1
#define CLONEf_KEEP_PTR_TABLE 2
#define CLONEf_CLONE_HOST 4
#define CLONEf_JOIN_IN 8

struct clone_params {
  AV* stashes;
  UV  flags;
  PerlInterpreter *proto_perl;
  PerlInterpreter *new_perl;
  AV *unreferenced;
};

/* SV_NOSTEAL prevents TEMP buffers being, well, stolen, and saves games
   with SvTEMP_off and SvTEMP_on round a call to sv_setsv.  */
#define newSVsv(sv) newSVsv_flags((sv), SV_GMAGIC|SV_NOSTEAL)
#define newSVsv_nomg(sv) newSVsv_flags((sv), SV_NOSTEAL)

/*
=for apidoc Am|SV*|newSVpvn_utf8|const char* s|STRLEN len|U32 utf8

Creates a new SV and copies a string (which may contain C<NUL> (C<\0>)
characters) into it.  If C<utf8> is true, calls
C<SvUTF8_on> on the new SV.  Implemented as a wrapper around C<newSVpvn_flags>.

=cut
*/

#define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0)

/*
=for apidoc Amx|SV*|newSVpadname|PADNAME *pn

Creates a new SV containing the pad name.

=cut
*/

#define newSVpadname(pn) newSVpvn_utf8(PadnamePV(pn), PadnameLEN(pn), TRUE)

/*
=for apidoc Am|void|SvOOK_offset|SV*sv|STRLEN len

Reads into C<len> the offset from C<SvPVX> back to the true start of the
allocated buffer, which will be non-zero if C<sv_chop> has been used to
efficiently remove characters from start of the buffer.  Implemented as a
macro, which takes the address of C<len>, which must be of type C<STRLEN>.
Evaluates C<sv> more than once.  Sets C<len> to 0 if C<SvOOK(sv)> is false.

=cut
*/

#ifdef DEBUGGING
/* Does the bot know something I don't?
10:28 <@Nicholas> metabatman
10:28 <+meta> Nicholas: crash
*/
#  define SvOOK_offset(sv, offset) STMT_START {				\
        STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN));		\
        if (SvOOK(sv)) {						\
            const U8 *_crash = (U8*)SvPVX_const(sv);			\
            (offset) = *--_crash;					\
            if (!(offset)) {						\
                _crash -= sizeof(STRLEN);				\
                Copy(_crash, (U8 *)&(offset), sizeof(STRLEN), U8);	\
            }								\
            {								\
                /* Validate the preceding buffer's sentinels to		\
                   verify that no-one is using it.  */			\
                const U8 *const _bonk = (U8*)SvPVX_const(sv) - (offset);\
                while (_crash > _bonk) {				\
                    --_crash;						\
                    assert (*_crash == (U8)PTR2UV(_crash));		\
                }							\
            }								\
        } else {							\
            (offset) = 0;						\
        }								\
    } STMT_END
#else
    /* This is the same code, but avoids using any temporary variables:  */
#  define SvOOK_offset(sv, offset) STMT_START {				\
        STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN));		\
        if (SvOOK(sv)) {						\
            (offset) = ((U8*)SvPVX_const(sv))[-1];			\
            if (!(offset)) {						\
                Copy(SvPVX_const(sv) - 1 - sizeof(STRLEN),		\
                     (U8*)&(offset), sizeof(STRLEN), U8);		\
            }								\
        } else {							\
            (offset) = 0;						\
        }								\
    } STMT_END
#endif

/*
=for apidoc_section $io
=for apidoc newIO

Create a new IO, setting the reference count to 1.

=cut
*/
#define newIO()	MUTABLE_IO(newSV_type(SVt_PVIO))

#if defined(PERL_CORE) || defined(PERL_EXT)

#  define SV_CONST(name) \
        PL_sv_consts[SV_CONST_##name] \
                ? PL_sv_consts[SV_CONST_##name] \
                : (PL_sv_consts[SV_CONST_##name] = newSVpv_share(#name, 0))

#  define SV_CONST_TIESCALAR 0
#  define SV_CONST_TIEARRAY 1
#  define SV_CONST_TIEHASH 2
#  define SV_CONST_TIEHANDLE 3

#  define SV_CONST_FETCH 4
#  define SV_CONST_FETCHSIZE 5
#  define SV_CONST_STORE 6
#  define SV_CONST_STORESIZE 7
#  define SV_CONST_EXISTS 8

#  define SV_CONST_PUSH 9
#  define SV_CONST_POP 10
#  define SV_CONST_SHIFT 11
#  define SV_CONST_UNSHIFT 12
#  define SV_CONST_SPLICE 13
#  define SV_CONST_EXTEND 14

#  define SV_CONST_FIRSTKEY 15
#  define SV_CONST_NEXTKEY 16
#  define SV_CONST_SCALAR 17

#  define SV_CONST_OPEN 18
#  define SV_CONST_WRITE 19
#  define SV_CONST_PRINT 20
#  define SV_CONST_PRINTF 21
#  define SV_CONST_READ 22
#  define SV_CONST_READLINE 23
#  define SV_CONST_GETC 24
#  define SV_CONST_SEEK 25
#  define SV_CONST_TELL 26
#  define SV_CONST_EOF 27
#  define SV_CONST_BINMODE 28
#  define SV_CONST_FILENO 29
#  define SV_CONST_CLOSE 30

#  define SV_CONST_DELETE 31
#  define SV_CONST_CLEAR 32
#  define SV_CONST_UNTIE 33
#  define SV_CONST_DESTROY 34
#endif

#define SV_CONSTS_COUNT 35

/*
 * Bodyless IVs and NVs!
 *
 * Since 5.9.2, we can avoid allocating a body for SVt_IV-type SVs.
 * Since the larger IV-holding variants of SVs store their integer
 * values in their respective bodies, the family of SvIV() accessor
 * macros would  naively have to branch on the SV type to find the
 * integer value either in the HEAD or BODY. In order to avoid this
 * expensive branch, a clever soul has deployed a great hack:
 * We set up the SvANY pointer such that instead of pointing to a
 * real body, it points into the memory before the location of the
 * head. We compute this pointer such that the location of
 * the integer member of the hypothetical body struct happens to
 * be the same as the location of the integer member of the bodyless
 * SV head. This now means that the SvIV() family of accessors can
 * always read from the (hypothetical or real) body via SvANY.
 *
 * Since the 5.21 dev series, we employ the same trick for NVs
 * if the architecture can support it (NVSIZE <= IVSIZE).
 */

/* The following two macros compute the necessary offsets for the above
 * trick and store them in SvANY for SvIV() (and friends) to use. */

#  define SET_SVANY_FOR_BODYLESS_IV(sv) \
        SvANY(sv) =   (XPVIV*)((char*)&(sv->sv_u.svu_iv) \
                    - STRUCT_OFFSET(XPVIV, xiv_iv))

#  define SET_SVANY_FOR_BODYLESS_NV(sv) \
        SvANY(sv) =   (XPVNV*)((char*)&(sv->sv_u.svu_nv) \
                    - STRUCT_OFFSET(XPVNV, xnv_u.xnv_nv))

/*
 * ex: set ts=8 sts=4 sw=4 et:
 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .     ..    index.js% index.js.map                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              a4#  .   C  ..  5#  big5-added.json 9#  
cp936.json  :#  
cp949.json  ;#  
cp950.json  <#  
eucjp.json  =#  gb18030-ranges.json >#  gbk-added.json  # @
shiftjis.json                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #  .     ..  # package.json                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              {U;a  .   p,  ..  a  fs  vc  log Ak 	async-map                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         +Oa  .   a  ..  a  node_modulesc  diste  cli.js  r  package.json_t 	README.md                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ۍa  .   a  ..  a  buffer  a  readable-stream a through2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          exa  .   a  ..  a  LICENSE Dk  index.jsr  package.jsons  
AUTHORS.md  [t  	README.md   y 
index.d.ts                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    F"