+#endif /* EBCDIC 037 */
+
+#if defined(PERL_IN_REGEXEC_C)
+
+#define GCB_NOBREAK 0
+#define GCB_BREAKABLE 1
+#define GCB_RI_then_RI 2
+#define GCB_EX_then_EM 3
+
+static const U8 GCB_table[19][19] = {
+ /* 'edg' stands for 'EDGE' */
+/* XX CR CN EB EBG EM EX GAZ L LF LV LVT PP RI SM T V ZWJ edg */
+/* XX */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* CN */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* EB */ { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* EBG*/ { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* EM */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* EX */ { 1, 1, 1, 1, 1, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* GAZ*/ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* L */ { 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1 },
+/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* LV */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 },
+/* LVT*/ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1 },
+/* PP */ { 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+/* RI */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 0, 1 },
+/* SM */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* T */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1 },
+/* V */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 },
+/* ZWJ*/ { 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* edg*/ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 }
+};
+
+#define LB_NOBREAK 0
+#define LB_BREAKABLE 1
+#define LB_NOBREAK_EVEN_WITH_SP_BETWEEN 2
+#define LB_CM_ZWJ_foo 3
+#define LB_SP_foo 6
+#define LB_PR_or_PO_then_OP_or_HY 9
+#define LB_SY_or_IS_then_various 11
+#define LB_HY_or_BA_then_foo 13
+#define LB_RI_then_RI 15
+#define LB_various_then_PO_or_PR 32
+
+static const U8 LB_table[39][39] = {
+ /* 'edg' stands for 'EDGE' */
+/* AL BA BB B2 SY CR CP CL CM CB EB EM EX GL H2 H3 HL HY ID IS IN JL JT JV LF BK NL NS NU OP PO PR QU RI SP WJ ZWJ ZW edg */
+/* AL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
+/* BA */ {14, 0,14,14, 2, 0, 2, 2, 0, 1,14,14, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,14,14,14,14, 0,14, 0, 0, 0, 0, 1 },
+/* BB */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+/* B2 */ { 1, 0, 1, 2, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* SY */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,33,33, 0, 1, 0, 0, 0, 0, 1 },
+/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* CP */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 0, 1,33,33, 0, 1, 0, 0, 0, 0, 1 },
+/* CL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1,33,33, 0, 1, 0, 0, 0, 0, 1 },
+/* CM */ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 1 },
+/* CB */ { 1, 1, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* EB */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 0, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* EM */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* EX */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* GL */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+/* H2 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* H3 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* HL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
+/* HY */ {14, 0,14,14, 2, 0, 2, 2, 0, 1,14,14, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,13,14,14,14, 0,14, 0, 0, 0, 0, 1 },
+/* ID */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* IS */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,33,33, 0, 1, 0, 0, 0, 0, 1 },
+/* IN */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* JL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 0, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* JT */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* JV */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* NS */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* NU */ { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
+/* OP */ { 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 1 },
+/* PO */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* PR */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
+/* QU */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+/* RI */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0,15, 0, 0, 0, 0, 1 },
+/* SP */ { 7, 7, 7, 7, 8, 0, 8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8, 7, 0, 1 },
+/* WJ */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+/* ZWJ*/ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 1 },
+/* ZW */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 },
+/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+#define WB_NOBREAK 0
+#define WB_BREAKABLE 1
+#define WB_hs_then_hs 2
+#define WB_Ex_or_FO_or_ZWJ_then_foo 3
+#define WB_DQ_then_HL 4
+#define WB_HL_then_DQ 6
+#define WB_LE_or_HL_then_MB_or_ML_or_SQ 8
+#define WB_MB_or_ML_or_SQ_then_LE_or_HL 10
+#define WB_MB_or_MN_or_SQ_then_NU 12
+#define WB_NU_then_MB_or_MN_or_SQ 14
+#define WB_RI_then_RI 16
+
+static const U8 WB_table[24][24] = {
+ /* 'Ext' stands for 'Extend'; 'edg' stands for 'EDGE'; 'hs' stands for
+ * 'Perl_Tailored_HSpace'; 'unk' stands for 'UNKNOWN' */
+/* XX LE CR DQ EB EBG EM Ext EX FO GAZ HL KA LF ML MN MB NL NU hs RI SQ ZWJ edg */
+/* XX */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 },
+/* LE */ { 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 9, 0, 1 },
+/* CR */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 },
+/* DQ */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 },
+/* EB */ { 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 },
+/* EBG*/ { 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 },
+/* EM */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 },
+/* Ext*/ { 3, 3, 1, 3, 3, 3, 3, 0, 3, 0, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 0, 1 },
+/* EX */ { 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1 },
+/* FO */ { 3, 3, 1, 3, 3, 3, 3, 0, 3, 0, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 0, 1 },
+/* GAZ*/ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 },
+/* HL */ { 1, 0, 1, 7, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 8, 0, 1 },
+/* KA */ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 },
+/* LF */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 },
+/* ML */ { 1,11, 1, 1, 1, 1, 1, 0, 1, 0, 1,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 },
+/* MN */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 0, 1 },
+/* MB */ { 1,11, 1, 1, 1, 1, 1, 0, 1, 0, 1,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 0, 1 },
+/* NL */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 },
+/* NU */ { 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,15,15, 1, 0, 1, 1,15, 0, 1 },
+/* hs */ { 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 1, 0, 1 },
+/* RI */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,16, 1, 0, 1 },
+/* SQ */ { 1,11, 1, 1, 1, 1, 1, 0, 1, 0, 1,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 0, 1 },
+/* ZWJ*/ { 3, 3, 1, 3, 3, 0, 3, 0, 3, 0, 0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 0, 1 },
+/* edg*/ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 }
+};
+
+#endif /* defined(PERL_IN_REGEXEC_C) */