/* 18.8.5 borders CT_Borders */
function parse_borders(t, styles, themes, opts) {
    styles.Borders = [];
    var border = {} /*, sub_border = {}*/ ;
    var pass = false;
    t[0].match(tagregex).forEach(function (x) {
        var y = parsexmltag(x);
        switch (strip_ns(y[0])) {
            case '':
            case '':
                break;
                /* 18.8.4 border CT_Border */
            case '':
            case '':
                border = {};
                if (y.diagonalUp) {
                    border.diagonalUp = y.diagonalUp;
                }
                if (y.diagonalDown) {
                    border.diagonalDown = y.diagonalDown;
                }
                styles.Borders.push(border);
                break;
            case '':
                break;
                /* note: not in spec, appears to be CT_BorderPr */
            case '':
                break;
            case '':
                break;
            case '':
                break;
                /* note: not in spec, appears to be CT_BorderPr */
            case '':
                break;
            case '':
                break;
            case '':
                break;
                /* 18.8.43 top CT_BorderPr */
            case '':
                break;
            case '':
                break;
            case '':
                break;
                /* 18.8.6 bottom CT_BorderPr */
            case '':
                break;
            case '':
                break;
            case '':
                break;
                /* 18.8.13 diagonal CT_BorderPr */
            case '':
            case '':
                break;
            case '':
                break;
                /* 18.8.25 horizontal CT_BorderPr */
            case '':
            case '':
                break;
            case '':
                break;
                /* 18.8.44 vertical CT_BorderPr */
            case '':
            case '':
                break;
            case '':
                break;
                /* 18.8.37 start CT_BorderPr */
            case '':
            case '':
                break;
            case '':
                break;
                /* 18.8.16 end CT_BorderPr */
            case '':
            case '':
                break;
            case '':
                break;
                /* 18.8.? color CT_Color */
            case '':
                break;
            case '':
            case '':
                break;
                /* 18.2.10 extLst CT_ExtensionList ? */
            case '':
            case '':
                break;
            case '':
                pass = false;
                break;
            default:
                if (opts && opts.WTF) {
                    if (!pass) throw new Error('unrecognized ' + y[0] + ' in borders');
                }
        }
    });
}
/* 18.8.21 fills CT_Fills */
function parse_fills(t, styles, themes, opts) {
    styles.Fills = [];
    var fill = {};
    var pass = false;
    t[0].match(tagregex).forEach(function (x) {
        var y = parsexmltag(x);
        switch (strip_ns(y[0])) {
            case '':
            case '':
                break;
                /* 18.8.20 fill CT_Fill */
            case '':
            case '':
                fill = {};
                styles.Fills.push(fill);
                break;
            case '':
                break;
                /* 18.8.24 gradientFill CT_GradientFill */
            case '':
                break;
            case '':
                styles.Fills.push(fill);
                fill = {};
                break;
                /* 18.8.32 patternFill CT_PatternFill */
            case '':
                if (y.patternType) fill.patternType = y.patternType;
                break;
            case '':
            case '':
                break;
                /* 18.8.3 bgColor CT_Color */
            case '':
            case '':
                break;
                /* 18.8.19 fgColor CT_Color */
            case '':
            case '':
                break;
                /* 18.8.38 stop CT_GradientStop */
            case '':
                break;
            case '':
                break;
                /* 18.8.? color CT_Color */
            case '':
                break;
            case '':
                break;
                /* 18.2.10 extLst CT_ExtensionList ? */
            case '':
            case '':
                break;
            case '':
                pass = false;
                break;
            default:
                if (opts && opts.WTF) {
                    if (!pass) throw new Error('unrecognized ' + y[0] + ' in fills');
                }
        }
    });
}
/* 18.8.23 fonts CT_Fonts */
function parse_fonts(t, styles, themes, opts) {
    styles.Fonts = [];
    var font = {};
    var pass = false;
    t[0].match(tagregex).forEach(function (x) {
        var y = parsexmltag(x);
        switch (strip_ns(y[0])) {
            case '':
            case '':
                break;
                /* 18.8.22 font CT_Font */
            case '':
                break;
            case '':
            case '':
                styles.Fonts.push(font);
                font = {};
                break;
                /* 18.8.29 name CT_FontName */
            case '':
            case '':
                break;
                /* 18.8.2  b CT_BooleanProperty */
            case '':
                font.bold = 1;
                break;
                /* 18.8.26 i CT_BooleanProperty */
            case '':
                font.italic = 1;
                break;
                /* 18.4.13 u CT_UnderlineProperty */
            case '':
                font.underline = 1;
                break;
                /* 18.4.10 strike CT_BooleanProperty */
            case '