/* This code was generated by msoscheme (http://gitorious.org/msoscheme) */
#include "simpleParser.h"
using namespace MSO;
#include "leinputstream.h"
void MSO::parseRecordHeader(LEInputStream& in, RecordHeader& _s) {
    _s.streamOffset = in.getPosition();
    _s.recVer = in.readuint4();
    _s.recInstance = in.readuint12();
    _s.recType = in.readuint16();
    _s.recLen = in.readuint32();
}
void MSO::parseCurrentUserAtom(LEInputStream& in, CurrentUserAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FF6)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FF6");
    }
    _s.size = in.readuint32();
    if (!(((quint32)_s.size) == 0x14)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.size) == 0x14");
    }
    _s.headerToken = in.readuint32();
    if (!(((quint32)_s.headerToken) == 0xE391C05F || ((quint32)_s.headerToken) == 0xF3D1C4DF)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.headerToken) == 0xE391C05F || ((quint32)_s.headerToken) == 0xF3D1C4DF");
    }
    _s.offsetToCurrentEdit = in.readuint32();
    _s.lenUserName = in.readuint16();
    if (!(((quint16)_s.lenUserName)<=255)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.lenUserName)<=255");
    }
    _s.docFileVersion = in.readuint16();
    if (!(((quint16)_s.docFileVersion) == 0x03F4)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.docFileVersion) == 0x03F4");
    }
    _s.majorVersion = in.readuint8();
    if (!(((quint8)_s.majorVersion) == 0x03)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.majorVersion) == 0x03");
    }
    _s.minorVersion = in.readuint8();
    if (!(((quint8)_s.minorVersion) == 0x00)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.minorVersion) == 0x00");
    }
    _s.unused = in.readuint16();
    _c = _s.lenUserName;
    _s.ansiUserName.resize(_c);
    in.readBytes(_s.ansiUserName);
    _s.relVersion = in.readuint32();
    if (!(((quint32)_s.relVersion) == 0x8 || ((quint32)_s.relVersion) == 0x9)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.relVersion) == 0x8 || ((quint32)_s.relVersion) == 0x9");
    }
    _s._has_unicodeUserName = _s.rh.recLen>3*_s.lenUserName+0x18;
    if (_s._has_unicodeUserName) {
        _c = _s.lenUserName;
        _s.unicodeUserName.resize(_c);
        for (int _i=0; _i<_c; ++_i) {
            _s.unicodeUserName[_i] = in.readuint16();
        }
    }
    _s._has_unknown = _s.rh.recLen-0x18-3*_s.lenUserName>0;
    if (_s._has_unknown) {
        _c = _s.rh.recLen-0x18-3*_s.lenUserName;
        _s.unknown.resize(_c);
        in.readBytes(_s.unknown);
    }
}
void MSO::parseTODOS(LEInputStream& in, TODOS& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.anon.append(Byte(&_s));
            parseByte(in, _s.anon.last());
        } catch(IncorrectValueException _e) {
            _s.anon.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.anon.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseByte(LEInputStream& in, Byte& _s) {
    _s.streamOffset = in.getPosition();
    _s.b = in.readuint8();
}
void MSO::parseZeroByte(LEInputStream& in, ZeroByte& _s) {
    _s.streamOffset = in.getPosition();
    _s.b = in.readuint8();
    if (!(((quint8)_s.b) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.b) == 0");
    }
}
void MSO::parseCurrentUserStream(LEInputStream& in, CurrentUserStream& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseCurrentUserAtom(in, _s.anon1);
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.trailing.append(Byte(&_s));
            parseByte(in, _s.trailing.last());
        } catch(IncorrectValueException _e) {
            _s.trailing.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.trailing.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseOfficeArtBStoreDelay(LEInputStream& in, OfficeArtBStoreDelay& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.anon1.append(OfficeArtBStoreContainerFileBlock(&_s));
            parseOfficeArtBStoreContainerFileBlock(in, _s.anon1.last());
        } catch(IncorrectValueException _e) {
            _s.anon1.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.anon1.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseOfficeArtRecordHeader(LEInputStream& in, OfficeArtRecordHeader& _s) {
    _s.streamOffset = in.getPosition();
    _s.recVer = in.readuint4();
    _s.recInstance = in.readuint12();
    _s.recType = in.readuint16();
    _s.recLen = in.readuint32();
}
void MSO::parseOfficeArtBlipJPEG(LEInputStream& in, OfficeArtBlipJPEG& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0x46A || _s.rh.recInstance == 0x46B || _s.rh.recInstance == 0x6E2 || _s.rh.recInstance == 0x6E3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x46A || _s.rh.recInstance == 0x46B || _s.rh.recInstance == 0x6E2 || _s.rh.recInstance == 0x6E3");
    }
    if (!(_s.rh.recType == 0xF01D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF01D");
    }
    _c = 16;
    _s.rgbUid1.resize(_c);
    in.readBytes(_s.rgbUid1);
    _s._has_rgbUid2 = _s.rh.recInstance == 0x46B || _s.rh.recInstance == 0x6E3;
    if (_s._has_rgbUid2) {
        _c = 16;
        _s.rgbUid2.resize(_c);
        in.readBytes(_s.rgbUid2);
    }
    _s.tag = in.readuint8();
    _c = _s.rh.recLen-((_s.rh.recInstance == 0x46A || _s.rh.recInstance == 0x6E2)?17:33);
    _s.BLIPFileData.resize(_c);
    in.readBytes(_s.BLIPFileData);
}
void MSO::parseOfficeArtBlipPNG(LEInputStream& in, OfficeArtBlipPNG& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0x6E0 || _s.rh.recInstance == 0x6E1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x6E0 || _s.rh.recInstance == 0x6E1");
    }
    if (!(_s.rh.recType == 0xF01E)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF01E");
    }
    _c = 16;
    _s.rgbUid1.resize(_c);
    in.readBytes(_s.rgbUid1);
    _s._has_rgbUid2 = _s.rh.recInstance == 0x6E1;
    if (_s._has_rgbUid2) {
        _c = 16;
        _s.rgbUid2.resize(_c);
        in.readBytes(_s.rgbUid2);
    }
    _s.tag = in.readuint8();
    _c = _s.rh.recLen-((_s.rh.recInstance==0x6E0)?17:33);
    _s.BLIPFileData.resize(_c);
    in.readBytes(_s.BLIPFileData);
}
void MSO::parseOfficeArtBlipDIB(LEInputStream& in, OfficeArtBlipDIB& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0x7A8 || _s.rh.recInstance == 0x7A9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x7A8 || _s.rh.recInstance == 0x7A9");
    }
    if (!(_s.rh.recType == 0xF01F)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF01F");
    }
    _c = 16;
    _s.rgbUid1.resize(_c);
    in.readBytes(_s.rgbUid1);
    _s._has_rgbUid2 = _s.rh.recInstance == 0x7A9;
    if (_s._has_rgbUid2) {
        _c = 16;
        _s.rgbUid2.resize(_c);
        in.readBytes(_s.rgbUid2);
    }
    _s.tag = in.readuint8();
    _c = _s.rh.recLen-((_s.rh.recInstance==0x7A8)?17:33);
    _s.BLIPFileData.resize(_c);
    in.readBytes(_s.BLIPFileData);
}
void MSO::parseOfficeArtBlipTIFF(LEInputStream& in, OfficeArtBlipTIFF& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0x6E4 || _s.rh.recInstance == 0x6E5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x6E4 || _s.rh.recInstance == 0x6E5");
    }
    if (!(_s.rh.recType == 0xF020)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF020");
    }
    _c = 16;
    _s.rgbUid1.resize(_c);
    in.readBytes(_s.rgbUid1);
    _s._has_rgbUid2 = _s.rh.recInstance == 0x6E5;
    if (_s._has_rgbUid2) {
        _c = 16;
        _s.rgbUid2.resize(_c);
        in.readBytes(_s.rgbUid2);
    }
    _s.tag = in.readuint8();
    _c = _s.rh.recLen-((_s.rh.recInstance==0x6E4)?17:33);
    _s.BLIPFileData.resize(_c);
    in.readBytes(_s.BLIPFileData);
}
void MSO::parseRECT(LEInputStream& in, RECT& _s) {
    _s.streamOffset = in.getPosition();
    _s.left = in.readint32();
    _s.top = in.readint32();
    _s.right = in.readint32();
    _s.bottom = in.readint32();
}
void MSO::parsePOINT(LEInputStream& in, POINT& _s) {
    _s.streamOffset = in.getPosition();
    _s.x = in.readint32();
    _s.y = in.readint32();
}
void MSO::parsePowerPointStructs(LEInputStream& in, PowerPointStructs& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.anon.append(PowerPointStruct(&_s));
            parsePowerPointStruct(in, _s.anon.last());
        } catch(IncorrectValueException _e) {
            _s.anon.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.anon.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseSoundCollectionAtom(LEInputStream& in, SoundCollectionAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x7e5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x7e5");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.soundIdSeed = in.readuint32();
}
void MSO::parseHeadersFootersAtom(LEInputStream& in, HeadersFootersAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFDA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFDA");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.formatId = in.readint16();
    if (!(((qint16)_s.formatId)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint16)_s.formatId)>=0");
    }
    if (!(((qint16)_s.formatId)<=13)) {
        throw IncorrectValueException(in.getPosition(), "((qint16)_s.formatId)<=13");
    }
    _s.fHasDate = in.readbit();
    _s.fHasTodayDate = in.readbit();
    _s.fHasUserDate = in.readbit();
    _s.fHasSlideNumber = in.readbit();
    _s.fHasHeader = in.readbit();
    _s.fHasFooter = in.readbit();
    _s.reserved1 = in.readuint2();
    _s.reserved2 = in.readuint8();
}
void MSO::parseUserDateAtom(LEInputStream& in, UserDateAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    if (!(_s.rh.recLen<=510)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen<=510");
    }
    _c = _s.rh.recLen/2;
    _s.userDate.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.userDate[_i] = in.readuint16();
    }
}
void MSO::parseHeaderAtom(LEInputStream& in, HeaderAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.header.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.header[_i] = in.readuint16();
    }
}
void MSO::parseFooterAtom(LEInputStream& in, FooterAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 2");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.footer.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.footer[_i] = in.readuint16();
    }
}
void MSO::parsePerSlideHeadersFootersContainer(LEInputStream& in, PerSlideHeadersFootersContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFD9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFD9");
    }
    parseHeadersFootersAtom(in, _s.hfAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0)&&(_optionCheck.recLen<=510);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.userDateAtom = QSharedPointer<UserDateAtom>(new UserDateAtom(&_s));
            parseUserDateAtom(in, *_s.userDateAtom.data());
        } catch(IncorrectValueException _e) {
            _s.userDateAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.userDateAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 1)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.headerAtom = QSharedPointer<HeaderAtom>(new HeaderAtom(&_s));
            parseHeaderAtom(in, *_s.headerAtom.data());
        } catch(IncorrectValueException _e) {
            _s.headerAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.headerAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 2)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.footerAtom = QSharedPointer<FooterAtom>(new FooterAtom(&_s));
            parseFooterAtom(in, *_s.footerAtom.data());
        } catch(IncorrectValueException _e) {
            _s.footerAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.footerAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0)&&(_optionCheck.recLen<=510);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.userDateAtom2 = QSharedPointer<UserDateAtom>(new UserDateAtom(&_s));
            parseUserDateAtom(in, *_s.userDateAtom2.data());
        } catch(IncorrectValueException _e) {
            _s.userDateAtom2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.userDateAtom2.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseEndDocumentAtom(LEInputStream& in, EndDocumentAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x3EA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3EA");
    }
    if (!(_s.rh.recLen == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0");
    }
}
void MSO::parseDocInfoListContainer(LEInputStream& in, DocInfoListContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x7D0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x7D0");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgChildRec.append(DocInfoListSubContainerOrAtom(&_s));
            parseDocInfoListSubContainerOrAtom(in, _s.rgChildRec.last());
        } catch(IncorrectValueException _e) {
            _s.rgChildRec.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgChildRec.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseSlideViewInfoAtom(LEInputStream& in, SlideViewInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x3FE)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3FE");
    }
    if (!(_s.rh.recLen == 3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 3");
    }
    _s.unused1 = in.readuint8();
    _s.fSnapToGrid = in.readuint8();
    _s.fSnapToShape = in.readuint8();
}
void MSO::parseGuideAtom(LEInputStream& in, GuideAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 7)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 7");
    }
    if (!(_s.rh.recType == 0x3FB)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3FB");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.type = in.readuint32();
    if (!(((quint32)_s.type) == 0 || ((quint32)_s.type) == 1)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.type) == 0 || ((quint32)_s.type) == 1");
    }
    _s.pos = in.readint32();
    if (!(((qint32)_s.pos)>=-15840)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.pos)>=-15840");
    }
    if (!(((qint32)_s.pos)<=32255)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.pos)<=32255");
    }
}
void MSO::parseDocProgTagsContainer(LEInputStream& in, DocProgTagsContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x1388)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1388");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgChildRec.append(DocProgTagsSubContainerOrAtom(&_s));
        parseDocProgTagsSubContainerOrAtom(in, _s.rgChildRec.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseTextAutoNumberScheme(LEInputStream& in, TextAutoNumberScheme& _s) {
    _s.streamOffset = in.getPosition();
    _s.scheme = in.readuint16();
    if (!(((quint16)_s.scheme)<=40)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.scheme)<=40");
    }
    _s.startNum = in.readuint16();
    if (!(((quint16)_s.startNum)>=1)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.startNum)>=1");
    }
}
void MSO::parseBlipCollection9Container(LEInputStream& in, BlipCollection9Container& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x07F8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x07F8");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgBlipEntityAtom.append(BlipEntityAtom(&_s));
        parseBlipEntityAtom(in, _s.rgBlipEntityAtom.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseKinsoku9Atom(LEInputStream& in, Kinsoku9Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x3");
    }
    if (!(_s.rh.recType == 0x0FD2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FD2");
    }
    if (!(_s.rh.recLen == 0x0004)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x0004");
    }
    _s.korLevel = in.readuint2();
    if (!(((quint8)_s.korLevel) == 0x0 || ((quint8)_s.korLevel) == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.korLevel) == 0x0 || ((quint8)_s.korLevel) == 0x2");
    }
    _s.scLevel = in.readuint2();
    if (!(((quint8)_s.scLevel) == 0x0 || ((quint8)_s.scLevel) == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.scLevel) == 0x0 || ((quint8)_s.scLevel) == 0x2");
    }
    _s.tcLevel = in.readuint2();
    if (!(((quint8)_s.tcLevel) == 0x0 || ((quint8)_s.tcLevel) == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.tcLevel) == 0x0 || ((quint8)_s.tcLevel) == 0x2");
    }
    _s.jpnLevel = in.readuint2();
    if (!(((quint8)_s.jpnLevel) == 0x0 || ((quint8)_s.jpnLevel) == 0x1 || ((quint8)_s.jpnLevel) == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.jpnLevel) == 0x0 || ((quint8)_s.jpnLevel) == 0x1 || ((quint8)_s.jpnLevel) == 0x2");
    }
    _s.reserveda = in.readuint4();
    if (!(((quint8)_s.reserveda) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserveda) == 0");
    }
    _s.reservedb = in.readuint20();
    if (!(((quint32)_s.reservedb) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reservedb) == 0");
    }
}
void MSO::parseExHyperlink9Container(LEInputStream& in, ExHyperlink9Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFE4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFE4");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parsePresAdvisorFlags9Atom(LEInputStream& in, PresAdvisorFlags9Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x177A)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x177A");
    }
    if (!(_s.rh.recLen == 0x4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x4");
    }
    _s.fDisableCaseStyleTitleRule = in.readbit();
    _s.fDisableCaseStyleBodyRule = in.readbit();
    _s.fDisableEndPunctuationTitleRule = in.readbit();
    _s.fDisableEndPunctuationBodyRule = in.readbit();
    _s.fDisableTooManyBulletsRule = in.readbit();
    _s.fDisableFontSizeTitleRule = in.readbit();
    _s.fDisableFontSizeBodyRule = in.readbit();
    _s.fDisableNumberOfLinesTitleRule = in.readbit();
    _s.fDisableNumberOfLinesBodyRule = in.readbit();
    _s.fDisableTooManyFontsRule = in.readbit();
    _s.fDisablePrintTip = in.readbit();
    _s.reserveda = in.readuint5();
    if (!(((quint8)_s.reserveda) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserveda) == 0");
    }
    _s.reservedb = in.readuint16();
    if (!(((quint16)_s.reservedb) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.reservedb) == 0");
    }
}
void MSO::parseEnvelopeData9Atom(LEInputStream& in, EnvelopeData9Atom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1785)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1785");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseEnvelopeFlags9Atom(LEInputStream& in, EnvelopeFlags9Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1784)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1784");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.fHasEnvelope = in.readbit();
    _s.fEnvelopeVisible = in.readbit();
    _s.reserved1 = in.readuint2();
    if (!(((quint8)_s.reserved1) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved1) == 0");
    }
    _s.fEnvelopeDirty = in.readbit();
    _s.reserved2a = in.readuint3();
    if (!(((quint8)_s.reserved2a) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved2a) == 0");
    }
    _s.reserved2b = in.readuint8();
    if (!(((quint8)_s.reserved2b) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved2b) == 0");
    }
    _s.reserved2c = in.readuint16();
    if (!(((quint16)_s.reserved2c) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.reserved2c) == 0");
    }
}
void MSO::parseHTMLDocInfo9Atom(LEInputStream& in, HTMLDocInfo9Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x177B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x177B");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _s.unused1 = in.readuint32();
    _s.encoding = in.readuint32();
    _s.frameColorType = in.readuint16();
    if (!(((quint16)_s.frameColorType) == 0 || ((quint16)_s.frameColorType) == 1 || ((quint16)_s.frameColorType) == 2 || ((quint16)_s.frameColorType) == 3 || ((quint16)_s.frameColorType) == 4 || ((quint16)_s.frameColorType) == 5)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.frameColorType) == 0 || ((quint16)_s.frameColorType) == 1 || ((quint16)_s.frameColorType) == 2 || ((quint16)_s.frameColorType) == 3 || ((quint16)_s.frameColorType) == 4 || ((quint16)_s.frameColorType) == 5");
    }
    _s.screenSize = in.readuint8();
    _s.unused2 = in.readuint8();
    _s.outputType = in.readuint8();
    _s.fShowFrame = in.readbit();
    _s.fResizeGraphics = in.readbit();
    _s.fOrganizeInFolder = in.readbit();
    _s.fUseLongFileNames = in.readbit();
    _s.fRelyOnVML = in.readbit();
    _s.fAllowPNG = in.readbit();
    _s.fShowSlideAnimation = in.readbit();
    _s.reserved1 = in.readbit();
    if (!(((bool)_s.reserved1) == false)) {
        throw IncorrectValueException(in.getPosition(), "((bool)_s.reserved1) == false");
    }
    _s.unused3 = in.readuint16();
}
void MSO::parseHTMLPublishInfo9Container(LEInputStream& in, HTMLPublishInfo9Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x177D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x177D");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseBroadcastDocInfo9Container(LEInputStream& in, BroadcastDocInfo9Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x177E)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x177E");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseOutlineTextProps9Container(LEInputStream& in, OutlineTextProps9Container& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FAE)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FAE");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgOutlineTextProps9Entry.append(OutlineTextProps9Entry(&_s));
            parseOutlineTextProps9Entry(in, _s.rgOutlineTextProps9Entry.last());
        } catch(IncorrectValueException _e) {
            _s.rgOutlineTextProps9Entry.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgOutlineTextProps9Entry.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseOutlineTextPropsHeaderExAtom(LEInputStream& in, OutlineTextPropsHeaderExAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance<=5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance<=5");
    }
    if (!(_s.rh.recType == 0xFAF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFAF");
    }
    _s.slideIdRef = in.readuint32();
    _s.txType = in.readuint32();
}
void MSO::parseStyleTextProp9Atom(LEInputStream& in, StyleTextProp9Atom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFAC)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFAC");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgStyleTextProp9.append(StyleTextProp9(&_s));
        parseStyleTextProp9(in, _s.rgStyleTextProp9.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseFontCollection10Container(LEInputStream& in, FontCollection10Container& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x07D6)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x07D6");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgFontCollectionEntry.append(FontCollectionEntry(&_s));
        parseFontCollectionEntry(in, _s.rgFontCollectionEntry.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseGridSpacing10Atom(LEInputStream& in, GridSpacing10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x040D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x040D");
    }
    if (!(_s.rh.recLen == 0x08)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x08");
    }
    _s.x = in.readuint32();
    if (!(((quint32)_s.x)>=23224)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.x)>=23224");
    }
    if (!(((quint32)_s.x)<=1179648)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.x)<=1179648");
    }
    _s.y = in.readuint32();
    if (!(((quint32)_s.y)>=23224)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.y)>=23224");
    }
    if (!(((quint32)_s.y)<=1179648)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.y)<=1179648");
    }
}
void MSO::parseAuthorNameAtom(LEInputStream& in, AuthorNameAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen<=104)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen<=104");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen;
    _s.authorName.resize(_c);
    in.readBytes(_s.authorName);
}
void MSO::parseCommentIndex10Atom(LEInputStream& in, CommentIndex10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x2EE5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EE5");
    }
    if (!(_s.rh.recLen == 0x08)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x08");
    }
    _s.colorIndex = in.readint32();
    if (!(((qint32)_s.colorIndex)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.colorIndex)>=0");
    }
    _s.commentIndexSeed = in.readint32();
    if (!(((qint32)_s.commentIndexSeed)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.commentIndexSeed)>=0");
    }
}
void MSO::parseFontEmbedFlags10Atom(LEInputStream& in, FontEmbedFlags10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x32C8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x32C8");
    }
    if (!(_s.rh.recLen == 0x04)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x04");
    }
    _s.fSubset = in.readbit();
    _s.fSubsetOptionConfirmed = in.readbit();
    _s.unuseda = in.readuint14();
    _s.unusedb = in.readuint16();
}
void MSO::parseCopyrightAtom(LEInputStream& in, CopyrightAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x1");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen<=510)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen<=510");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen;
    _s.copyright.resize(_c);
    in.readBytes(_s.copyright);
}
void MSO::parseKeywordsAtom(LEInputStream& in, KeywordsAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x2");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen<=510)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen<=510");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen;
    _s.keywords.resize(_c);
    in.readBytes(_s.keywords);
}
void MSO::parseFilterPrivacyFlags10Atom(LEInputStream& in, FilterPrivacyFlags10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x36B0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x36B0");
    }
    if (!(_s.rh.recLen == 0x04)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x04");
    }
    _s.fRemovePII = in.readbit();
    _s.reserved2a = in.readuint7();
    if (!(((quint8)_s.reserved2a) == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved2a) == 0x0");
    }
    _s.reserved2b = in.readuint8();
    if (!(((quint8)_s.reserved2b) == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved2b) == 0x0");
    }
    _s.reserved2c = in.readuint16();
    if (!(((quint16)_s.reserved2c) == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.reserved2c) == 0x0");
    }
}
void MSO::parseOutlineTextProps10Container(LEInputStream& in, OutlineTextProps10Container& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FB3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FB3");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgOutlineTextProps10Entry.append(OutlineTextProps10Entry(&_s));
            parseOutlineTextProps10Entry(in, _s.rgOutlineTextProps10Entry.last());
        } catch(IncorrectValueException _e) {
            _s.rgOutlineTextProps10Entry.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgOutlineTextProps10Entry.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseStyleTextProp10Atom(LEInputStream& in, StyleTextProp10Atom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0xFB1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFB1");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgStyleTextProp10.append(TextCFException10(&_s));
            parseTextCFException10(in, _s.rgStyleTextProp10.last());
        } catch(IncorrectValueException _e) {
            _s.rgStyleTextProp10.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgStyleTextProp10.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseDocToolbarStates10Atom(LEInputStream& in, DocToolbarStates10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x36B1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x36B1");
    }
    if (!(_s.rh.recLen == 0x01)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x01");
    }
    _s.fShowReviewingToolbar = in.readbit();
    _s.fShowReviewingGallery = in.readbit();
    _s.reserved = in.readuint6();
    if (!(((quint8)_s.reserved) == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved) == 0x0");
    }
}
void MSO::parseSlideListTable10Container(LEInputStream& in, SlideListTable10Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2EF1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EF1");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseDiffTree10Container(LEInputStream& in, DiffTree10Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2EEC)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EEC");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseModifyPasswordAtom(LEInputStream& in, ModifyPasswordAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x03)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x03");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen<=510)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen<=510");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen;
    _s.modifyPassword.resize(_c);
    in.readBytes(_s.modifyPassword);
}
void MSO::parsePhotoAlbumInfo10Atom(LEInputStream& in, PhotoAlbumInfo10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x036B2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x036B2");
    }
    if (!(_s.rh.recLen == 0x06)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x06");
    }
    _s.fUseBlackWhite = in.readuint8();
    _s.fHasCaption = in.readuint8();
    _s.layout = in.readuint8();
    if (!(((quint8)_s.layout) == 0 || ((quint8)_s.layout) == 1 || ((quint8)_s.layout) == 2 || ((quint8)_s.layout) == 3 || ((quint8)_s.layout) == 4 || ((quint8)_s.layout) == 5 || ((quint8)_s.layout) == 6)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.layout) == 0 || ((quint8)_s.layout) == 1 || ((quint8)_s.layout) == 2 || ((quint8)_s.layout) == 3 || ((quint8)_s.layout) == 4 || ((quint8)_s.layout) == 5 || ((quint8)_s.layout) == 6");
    }
    _s.unused = in.readuint8();
    _s.frameShape = in.readuint16();
    if (!(((quint16)_s.frameShape) == 0x0000 || ((quint16)_s.frameShape) == 0x0001 || ((quint16)_s.frameShape) == 0x0002 || ((quint16)_s.frameShape) == 0x0003 || ((quint16)_s.frameShape) == 0x0004 || ((quint16)_s.frameShape) == 0x0005 || ((quint16)_s.frameShape) == 0x0006)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.frameShape) == 0x0000 || ((quint16)_s.frameShape) == 0x0001 || ((quint16)_s.frameShape) == 0x0002 || ((quint16)_s.frameShape) == 0x0003 || ((quint16)_s.frameShape) == 0x0004 || ((quint16)_s.frameShape) == 0x0005 || ((quint16)_s.frameShape) == 0x0006");
    }
}
void MSO::parseSmartTagStore11Container(LEInputStream& in, SmartTagStore11Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x36B3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x36B3");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseOutlineTextProps11Container(LEInputStream& in, OutlineTextProps11Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FB5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FB5");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseBinaryTagDataBlob(LEInputStream& in, BinaryTagDataBlob& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x138B");
    }
    _c = _s.rh.recLen;
    _s.data.resize(_c);
    in.readBytes(_s.data);
}
void MSO::parsePP12DocBinaryTagExtension(LEInputStream& in, PP12DocBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _c = 16;
    _s.tagName.resize(_c);
    in.readBytes(_s.tagName);
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0x0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    _c = _s.rhData.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseSorterViewInfoContainer(LEInputStream& in, SorterViewInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x408)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x408");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseVBAInfoAtom(LEInputStream& in, VBAInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 2");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x400)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x400");
    }
    if (!(_s.rh.recLen == 0xC)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0xC");
    }
    _s.persistIdRef = in.readuint32();
    _s.fHasMacros = in.readuint32();
    if (!(((quint32)_s.fHasMacros) == 0 || ((quint32)_s.fHasMacros) == 1)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.fHasMacros) == 0 || ((quint32)_s.fHasMacros) == 1");
    }
    _s.version = in.readuint32();
    if (!(((quint32)_s.version) == 0 || ((quint32)_s.version) == 1 || ((quint32)_s.version) == 2)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.version) == 0 || ((quint32)_s.version) == 1 || ((quint32)_s.version) == 2");
    }
}
void MSO::parseMasterListWithTextContainer(LEInputStream& in, MasterListWithTextContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x1");
    }
    if (!(_s.rh.recType == 0x0FF0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FF0");
    }
    if (!(_s.rh.recLen%28==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%28==0");
    }
    _c = _s.rh.recLen/28;
    for (int _i=0; _i<_c; ++_i) {
        _s.rgMasterPersistAtom.append(MasterPersistAtom(&_s));
        parseMasterPersistAtom(in, _s.rgMasterPersistAtom[_i]);
    }
}
void MSO::parseMasterPersistAtom(LEInputStream& in, MasterPersistAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x3F3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3F3");
    }
    if (!(_s.rh.recLen == 0x14)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x14");
    }
    _s.persistIdRef = in.readuint32();
    _s.reserved1 = in.readuint2();
    if (!(((quint8)_s.reserved1) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved1) == 0");
    }
    _s.fNonOutLineData = in.readbit();
    _s.reserved2 = in.readuint5();
    if (!(((quint8)_s.reserved2) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved2) == 0");
    }
    _s.reserved3 = in.readuint8();
    if (!(((quint8)_s.reserved3) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved3) == 0");
    }
    _s.reserved4 = in.readuint16();
    if (!(((quint16)_s.reserved4) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.reserved4) == 0");
    }
    _s.reserved5 = in.readuint32();
    if (!(((quint32)_s.reserved5) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reserved5) == 0");
    }
    _s.masterId = in.readuint32();
    _s.reserved6 = in.readuint32();
    if (!(((quint32)_s.reserved6) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reserved6) == 0");
    }
}
void MSO::parseSlideListWithTextContainer(LEInputStream& in, SlideListWithTextContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FF0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FF0");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgChildRec.append(SlideListWithTextSubContainerOrAtom(&_s));
            parseSlideListWithTextSubContainerOrAtom(in, _s.rgChildRec.last());
        } catch(IncorrectValueException _e) {
            _s.rgChildRec.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgChildRec.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseNotesListWithTextContainer(LEInputStream& in, NotesListWithTextContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 2");
    }
    if (!(_s.rh.recType == 0x0FF0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FF0");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgNotesPersistAtom.append(NotesPersistAtom(&_s));
            parseNotesPersistAtom(in, _s.rgNotesPersistAtom.last());
        } catch(IncorrectValueException _e) {
            _s.rgNotesPersistAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgNotesPersistAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseNotesPersistAtom(LEInputStream& in, NotesPersistAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x03F3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03F3");
    }
    if (!(_s.rh.recLen == 0x14)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x14");
    }
    _s.persistIdRef = in.readuint32();
    _s.reserved1 = in.readuint2();
    if (!(((quint8)_s.reserved1) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved1) == 0");
    }
    _s.fNonOutlineData = in.readbit();
    _s.reserved2a = in.readuint5();
    if (!(((quint8)_s.reserved2a) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved2a) == 0");
    }
    _s.reserved2b = in.readuint8();
    if (!(((quint8)_s.reserved2b) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved2b) == 0");
    }
    _s.reserved2c = in.readuint16();
    if (!(((quint16)_s.reserved2c) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.reserved2c) == 0");
    }
    _s.reserved3 = in.readuint32();
    if (!(((quint32)_s.reserved3) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reserved3) == 0");
    }
    _s.notesId = in.readuint32();
    _s.reserved4 = in.readuint32();
    if (!(((quint32)_s.reserved4) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reserved4) == 0");
    }
}
void MSO::parseTextHeaderAtom(LEInputStream& in, TextHeaderAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5");
    }
    if (!(_s.rh.recType == 0xF9F)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF9F");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.textType = in.readuint32();
}
void MSO::parseTextCharsAtom(LEInputStream& in, TextCharsAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFA0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFA0");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.textChars.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.textChars[_i] = in.readuint16();
    }
}
void MSO::parseTextBytesAtom(LEInputStream& in, TextBytesAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFA8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFA8");
    }
    _c = _s.rh.recLen;
    _s.textChars.resize(_c);
    in.readBytes(_s.textChars);
}
void MSO::parseMasterTextPropAtom(LEInputStream& in, MasterTextPropAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFA2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFA2");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgMasterTextPropRun.append(MasterTextPropRun(&_s));
        parseMasterTextPropRun(in, _s.rgMasterTextPropRun.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseMasterTextPropRun(LEInputStream& in, MasterTextPropRun& _s) {
    _s.streamOffset = in.getPosition();
    _s.count = in.readuint32();
    _s.indentLevel = in.readuint16();
    if (!(((quint16)_s.indentLevel)<=4)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.indentLevel)<=4");
    }
}
void MSO::parseStyleTextPropAtom(LEInputStream& in, StyleTextPropAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFA1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFA1");
    }
}
void MSO::parseSlideNumberMCAtom(LEInputStream& in, SlideNumberMCAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFD8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFD8");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.position = in.readint32();
}
void MSO::parseDateTimeMCAtom(LEInputStream& in, DateTimeMCAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFF7)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFF7");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.position = in.readint32();
    _s.index = in.readuint8();
    _c = 3;
    _s.unused.resize(_c);
    in.readBytes(_s.unused);
}
void MSO::parseGenericDateMCAtom(LEInputStream& in, GenericDateMCAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFF8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFF8");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.position = in.readint32();
}
void MSO::parseHeaderMCAtom(LEInputStream& in, HeaderMCAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFF9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFF9");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.position = in.readint32();
}
void MSO::parseFooterMCAtom(LEInputStream& in, FooterMCAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFFA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFFA");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.position = in.readint32();
}
void MSO::parseRTFDateTimeMCAtom(LEInputStream& in, RTFDateTimeMCAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1015)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1015");
    }
    if (!(_s.rh.recLen == 0x84)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x84");
    }
    _s.position = in.readint32();
    _c = 128;
    _s.format.resize(_c);
    in.readBytes(_s.format);
}
void MSO::parseTextBookmarkAtom(LEInputStream& in, TextBookmarkAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFA7)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFA7");
    }
    if (!(_s.rh.recLen == 0xC)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0xC");
    }
    _s.begin = in.readint32();
    _s.end = in.readint32();
    _s.bookmarkID = in.readint32();
}
void MSO::parseTextRange(LEInputStream& in, TextRange& _s) {
    _s.streamOffset = in.getPosition();
    _s.begin = in.readint32();
    _s.end = in.readint32();
}
void MSO::parseMouseClickTextInteractiveInfoAtom(LEInputStream& in, MouseClickTextInteractiveInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFDF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFDF");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    parseTextRange(in, _s.range);
}
void MSO::parseMouseOverTextInteractiveInfoAtom(LEInputStream& in, MouseOverTextInteractiveInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0xFDF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFDF");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    parseTextRange(in, _s.range);
}
void MSO::parseSlideId(LEInputStream& in, SlideId& _s) {
    _s.streamOffset = in.getPosition();
    _s.slideId = in.readuint32();
    if (!(((quint32)_s.slideId)>=100)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.slideId)>=100");
    }
    if (!(((quint32)_s.slideId)<2147483647)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.slideId)<2147483647");
    }
}
void MSO::parseTabStops(LEInputStream& in, TabStops& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.count = in.readuint16();
    _c = _s.count;
    for (int _i=0; _i<_c; ++_i) {
        _s.rgTabStop.append(TabStop(&_s));
        parseTabStop(in, _s.rgTabStop[_i]);
    }
}
void MSO::parseTabStop(LEInputStream& in, TabStop& _s) {
    _s.streamOffset = in.getPosition();
    _s.position = in.readint16();
    _s.type = in.readuint16();
}
void MSO::parsePFWrapFlags(LEInputStream& in, PFWrapFlags& _s) {
    _s.streamOffset = in.getPosition();
    _s.charWrap = in.readbit();
    _s.wordWrap = in.readbit();
    _s.overflow = in.readbit();
    _s.reserved1 = in.readuint5();
    _s.reserved2 = in.readuint8();
}
void MSO::parseColorIndexStruct(LEInputStream& in, ColorIndexStruct& _s) {
    _s.streamOffset = in.getPosition();
    _s.red = in.readuint8();
    _s.green = in.readuint8();
    _s.blue = in.readuint8();
    _s.index = in.readuint8();
}
void MSO::parseBulletFlags(LEInputStream& in, BulletFlags& _s) {
    _s.streamOffset = in.getPosition();
    _s.fHasBullet = in.readbit();
    _s.fBulletHasFont = in.readbit();
    _s.fBulletHasColor = in.readbit();
    _s.fBulletHasSize = in.readbit();
    _s.reserved = in.readuint12();
}
void MSO::parsePFMasks(LEInputStream& in, PFMasks& _s) {
    _s.streamOffset = in.getPosition();
    _s.hasBullet = in.readbit();
    _s.bulletHasFont = in.readbit();
    _s.bulletHasColor = in.readbit();
    _s.bulletHasSize = in.readbit();
    _s.bulletFont = in.readbit();
    _s.bulletColor = in.readbit();
    _s.bulletSize = in.readbit();
    _s.bulletChar = in.readbit();
    _s.leftMargin = in.readbit();
    _s.unused = in.readbit();
    _s.indent = in.readbit();
    _s.align = in.readbit();
    _s.lineSpacing = in.readbit();
    _s.spaceBefore = in.readbit();
    _s.spaceAfter = in.readbit();
    _s.defaultTabSize = in.readbit();
    _s.fontAlign = in.readbit();
    _s.charWrap = in.readbit();
    _s.wordWrap = in.readbit();
    _s.overflow = in.readbit();
    _s.tabStops = in.readbit();
    _s.textDirection = in.readbit();
    _s.reserved = in.readbit();
    _s.bulletBlip = in.readbit();
    _s.bulletScheme = in.readbit();
    _s.bulletHasScheme = in.readbit();
    _s.reserved2 = in.readuint6();
}
void MSO::parseCFMasks(LEInputStream& in, CFMasks& _s) {
    _s.streamOffset = in.getPosition();
    _s.bold = in.readbit();
    _s.italic = in.readbit();
    _s.underline = in.readbit();
    _s.unused1 = in.readbit();
    _s.shadow = in.readbit();
    _s.fehint = in.readbit();
    _s.unused2 = in.readbit();
    _s.kumi = in.readbit();
    _s.unused3 = in.readbit();
    _s.emboss = in.readbit();
    _s.fHasStyle = in.readuint4();
    _s.unused4 = in.readuint2();
    _s.typeface = in.readbit();
    _s.size = in.readbit();
    _s.color = in.readbit();
    _s.position = in.readbit();
    _s.pp10ext = in.readbit();
    _s.oldEATypeface = in.readbit();
    _s.ansiTypeface = in.readbit();
    _s.symbolTypeface = in.readbit();
    _s.newEATypeface = in.readbit();
    _s.csTypeface = in.readbit();
    _s.pp11ext = in.readbit();
    _s.reserved = in.readuint5();
}
void MSO::parseCFStyle(LEInputStream& in, CFStyle& _s) {
    _s.streamOffset = in.getPosition();
    _s.bold = in.readbit();
    _s.italic = in.readbit();
    _s.underline = in.readbit();
    _s.unused1 = in.readbit();
    _s.shadow = in.readbit();
    _s.fehint = in.readbit();
    _s.unused2 = in.readbit();
    _s.kumi = in.readbit();
    _s.unused3 = in.readbit();
    _s.emboss = in.readbit();
    _s.pp9rt = in.readuint4();
    _s.unused4 = in.readuint2();
}
void MSO::parseFontCollectionContainer(LEInputStream& in, FontCollectionContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x07D5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x07D5");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgFontCollectionEntry.append(FontCollectionEntry(&_s));
        parseFontCollectionEntry(in, _s.rgFontCollectionEntry.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseFontEntityAtom(LEInputStream& in, FontEntityAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance<=128)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance<=128");
    }
    if (!(_s.rh.recType == 0xFB7)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFB7");
    }
    if (!(_s.rh.recLen == 0x44)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x44");
    }
    _c = 32;
    _s.lfFaceName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.lfFaceName[_i] = in.readuint16();
    }
    _s.lfCharSet = in.readuint8();
    _s.fEmbedSubsetted = in.readbit();
    _s.unused = in.readuint7();
    _s.rasterFontType = in.readbit();
    _s.deviceFontType = in.readbit();
    _s.truetypeFontType = in.readbit();
    _s.fNoFontSubstitution = in.readbit();
    _s.reserved = in.readuint4();
    if (!(((quint8)_s.reserved) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved) == 0");
    }
    _s.lfPitchAndFamily = in.readuint8();
}
void MSO::parseFontEmbedDataBlob(LEInputStream& in, FontEmbedDataBlob& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance<=3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance<=3");
    }
    if (!(_s.rh.recType == 0xFB8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFB8");
    }
    _c = _s.rh.recLen;
    _s.data.resize(_c);
    in.readBytes(_s.data);
}
void MSO::parseKinsokuAtom(LEInputStream& in, KinsokuAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x3");
    }
    if (!(_s.rh.recType == 0x0FD2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FD2");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.level = in.readuint32();
    if (!(((quint32)_s.level) == 0 || ((quint32)_s.level) == 1 || ((quint32)_s.level) == 2 || ((quint32)_s.level) == 128)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.level) == 0 || ((quint32)_s.level) == 1 || ((quint32)_s.level) == 2 || ((quint32)_s.level) == 128");
    }
}
void MSO::parseKinsokuLeadingAtom(LEInputStream& in, KinsokuLeadingAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.kinsokuLeading.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.kinsokuLeading[_i] = in.readuint16();
    }
}
void MSO::parseKinsokuFollowingAtom(LEInputStream& in, KinsokuFollowingAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 1 )) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1 ");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.kinsokuFollowing.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.kinsokuFollowing[_i] = in.readuint16();
    }
}
void MSO::parseTextSpecialInfoAtom(LEInputStream& in, TextSpecialInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0xFAA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFAA");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgSIRun.append(TextSIRun(&_s));
        parseTextSIRun(in, _s.rgSIRun.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseSmartTags(LEInputStream& in, SmartTags& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.count = in.readuint32();
    _c = _s.count;
    _s.rgSmartTagIndex.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.rgSmartTagIndex[_i] = in.readuint32();
    }
}
void MSO::parseExOleEmbedAtom(LEInputStream& in, ExOleEmbedAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FCD)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FCD");
    }
    if (!(_s.rh.recLen == 0x8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x8");
    }
    _s.exColorFollow = in.readuint32();
    if (!(((quint32)_s.exColorFollow) == 0 || ((quint32)_s.exColorFollow) == 1 || ((quint32)_s.exColorFollow) == 2)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.exColorFollow) == 0 || ((quint32)_s.exColorFollow) == 1 || ((quint32)_s.exColorFollow) == 2");
    }
    _s.fCantLockServer = in.readuint8();
    _s.fNoSizeToServer = in.readuint8();
    _s.fIsTable = in.readuint8();
    _s.unused = in.readuint8();
}
void MSO::parsePointStruct(LEInputStream& in, PointStruct& _s) {
    _s.streamOffset = in.getPosition();
    _s.x = in.readint32();
    _s.y = in.readint32();
}
void MSO::parseRatioStruct(LEInputStream& in, RatioStruct& _s) {
    _s.streamOffset = in.getPosition();
    _s.numer = in.readint32();
    _s.denom = in.readint32();
    if (!(((qint32)_s.denom)!= 0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.denom)!= 0");
    }
}
void MSO::parsePersistDirectoryAtom(LEInputStream& in, PersistDirectoryAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1772)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1772");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgPersistDirEntry.append(PersistDirectoryEntry(&_s));
        parsePersistDirectoryEntry(in, _s.rgPersistDirEntry.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseUnknownDocumentContainerChild(LEInputStream& in, UnknownDocumentContainerChild& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recType == 0x416 || _s.rh.recType == 0x41A || _s.rh.recType == 0x101A || _s.rh.recType == 0x1773 || _s.rh.recType == 0x1788 || _s.rh.recType == 0x178c || _s.rh.recType == 0x178d)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x416 || _s.rh.recType == 0x41A || _s.rh.recType == 0x101A || _s.rh.recType == 0x1773 || _s.rh.recType == 0x1788 || _s.rh.recType == 0x178c || _s.rh.recType == 0x178d");
    }
    _c = _s.rh.recLen;
    _s.unknown.resize(_c);
    in.readBytes(_s.unknown);
}
void MSO::parseUnknownOfficeArtClientDataChild(LEInputStream& in, UnknownOfficeArtClientDataChild& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFE8 || _s.rh.recType == 0x1019)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFE8 || _s.rh.recType == 0x1019");
    }
    _c = _s.rh.recLen;
    _s.unknown.resize(_c);
    in.readBytes(_s.unknown);
}
void MSO::parseUnknownSlideContainerChild(LEInputStream& in, UnknownSlideContainerChild& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x101D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x101D");
    }
    _c = _s.rh.recLen;
    _s.unknown.resize(_c);
    in.readBytes(_s.unknown);
}
void MSO::parseUnknownTextContainerChild(LEInputStream& in, UnknownTextContainerChild& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 3");
    }
    if (!(_s.rh.recInstance == 9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 9");
    }
    if (!(_s.rh.recType == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0");
    }
    _c = _s.rh.recLen;
    _s.unknown.resize(_c);
    in.readBytes(_s.unknown);
}
void MSO::parsePersistDirectoryEntry(LEInputStream& in, PersistDirectoryEntry& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.persistId = in.readuint20();
    _s.cPersist = in.readuint12();
    _c = _s.cPersist;
    _s.rgPersistOffset.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.rgPersistOffset[_i] = in.readuint32();
    }
}
void MSO::parsePersistIdRef(LEInputStream& in, PersistIdRef& _s) {
    _s.streamOffset = in.getPosition();
    _s.anon = in.readuint32();
}
void MSO::parseSchemeListElementColorSchemeAtom(LEInputStream& in, SchemeListElementColorSchemeAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 6)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 6");
    }
    if (!(_s.rh.recType == 0x7F0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x7F0");
    }
    if (!(_s.rh.recLen == 0x20)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x20");
    }
    _c = 8;
    for (int _i=0; _i<_c; ++_i) {
        _s.rgSchemeColor.append(ColorStruct(&_s));
        parseColorStruct(in, _s.rgSchemeColor[_i]);
    }
}
void MSO::parseRoundTripOArtTextStyles12Atom(LEInputStream& in, RoundTripOArtTextStyles12Atom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x423)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x423");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseSlideNameAtom(LEInputStream& in, SlideNameAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 3");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.slideName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.slideName[_i] = in.readuint16();
    }
}
void MSO::parseSlideProgTagsContainer(LEInputStream& in, SlideProgTagsContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1388)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1388");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgTypeRec.append(SlideProgTagsSubContainerOrAtom(&_s));
        parseSlideProgTagsSubContainerOrAtom(in, _s.rgTypeRec.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parsePP9SlideBinaryTagExtension(LEInputStream& in, PP9SlideBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen == 0xE)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0xE");
    }
    _c = 7;
    _s.tagName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.tagName[_i] = in.readuint16();
    }
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgTextMasterStyleAtom.append(TextMasterStyle9Atom(&_s));
            parseTextMasterStyle9Atom(in, _s.rgTextMasterStyleAtom.last());
        } catch(IncorrectValueException _e) {
            _s.rgTextMasterStyleAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgTextMasterStyleAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseComment10Container(LEInputStream& in, Comment10Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2EE0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EE0");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseComment10Atom(LEInputStream& in, Comment10Atom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2EE1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EE1");
    }
    if (!(_s.rh.recLen == 0x1C)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x1C");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseLinkedSlide10Atom(LEInputStream& in, LinkedSlide10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2EE7)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EE7");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.linkedSlideIdRef = in.readuint32();
    _s.clinkedShapes = in.readint32();
}
void MSO::parseLinkedShape10Atom(LEInputStream& in, LinkedShape10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2EE6)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EE6");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.shapeIdRef = in.readuint32();
    _s.linkedShapeIdRef = in.readuint32();
}
void MSO::parseSlideFlags10Atom(LEInputStream& in, SlideFlags10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2EEA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EEA");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.fPreserveMaster = in.readbit();
    _s.fOverrideMasterAnimatino = in.readbit();
    _s.unuseda = in.readuint14();
    _s.unusedb = in.readuint16();
}
void MSO::parseHashCode10Atom(LEInputStream& in, HashCode10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2B00)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2B00");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.hash = in.readuint32();
}
void MSO::parseExtTimeNodeContainer(LEInputStream& in, ExtTimeNodeContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0xF144)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF144");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseBuildListContainer(LEInputStream& in, BuildListContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2B02)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2B02");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseRoundTripHeaderFooterDefaults12Atom(LEInputStream& in, RoundTripHeaderFooterDefaults12Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0424)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0424");
    }
    if (!(_s.rh.recLen == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 1");
    }
    _s.fIncludeDate = in.readbit();
    _s.fIncludeFooter = in.readbit();
    _s.fIncludeHeader = in.readbit();
    _s.fIncludeSlideNumber = in.readbit();
    _s.reserved = in.readuint4();
}
void MSO::parseTagNameAtom(LEInputStream& in, TagNameAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2 == 0 )) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2 == 0 ");
    }
    _c = _s.rh.recLen/2;
    _s.tagName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.tagName[_i] = in.readuint16();
    }
}
void MSO::parseTagValueAtom(LEInputStream& in, TagValueAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    _c = _s.rh.recLen/2;
    _s.tagValue.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.tagValue[_i] = in.readuint16();
    }
}
void MSO::parseRoundTripMainMasterRecord(LEInputStream& in, RoundTripMainMasterRecord& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recType == 0x41C || _s.rh.recType == 0x40E || _s.rh.recType == 0x040F || _s.rh.recType == 0x41E || _s.rh.recType == 0x0423 || _s.rh.recType == 0x2B0D || _s.rh.recType == 0x2B0B || _s.rh.recType == 0x041D || _s.rh.recType == 0x2B0C || _s.rh.recType == 0x101D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x41C || _s.rh.recType == 0x40E || _s.rh.recType == 0x040F || _s.rh.recType == 0x41E || _s.rh.recType == 0x0423 || _s.rh.recType == 0x2B0D || _s.rh.recType == 0x2B0B || _s.rh.recType == 0x041D || _s.rh.recType == 0x2B0C || _s.rh.recType == 0x101D");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseTemplateNameAtom(LEInputStream& in, TemplateNameAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 2");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.templateName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.templateName[_i] = in.readuint16();
    }
}
void MSO::parseRoundTripSlideSyncInfo12Container(LEInputStream& in, RoundTripSlideSyncInfo12Container& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x3714)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3714");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseSlideFlags(LEInputStream& in, SlideFlags& _s) {
    _s.streamOffset = in.getPosition();
    _s.fMasterObjects = in.readbit();
    _s.fMasterScheme = in.readbit();
    _s.fMasterBackground = in.readbit();
    _s.unused1 = in.readuint5();
    _s.unused2 = in.readuint8();
}
void MSO::parseNotesRoundTripAtom(LEInputStream& in, NotesRoundTripAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x40E || _s.rh.recType == 0x40F || _s.rh.recType == 0x427)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x40E || _s.rh.recType == 0x40F || _s.rh.recType == 0x427");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseHandoutContainer(LEInputStream& in, HandoutContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FC9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FC9");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExControlStg(LEInputStream& in, ExControlStg& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x1011)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1011");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExOleObjStg(LEInputStream& in, ExOleObjStg& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1011)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1011");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseUserEditAtom(LEInputStream& in, UserEditAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FF5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FF5");
    }
    if (!(_s.rh.recLen == 0x1C || _s.rh.recLen == 0x20)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x1C || _s.rh.recLen == 0x20");
    }
    _s.lastSlideIdRef = in.readuint32();
    _s.version = in.readuint16();
    _s.minorVersion = in.readuint8();
    if (!(((quint8)_s.minorVersion) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.minorVersion) == 0");
    }
    _s.majorVersion = in.readuint8();
    if (!(((quint8)_s.majorVersion) == 3)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.majorVersion) == 3");
    }
    _s.offsetLastEdit = in.readuint32();
    _s.offsetPersistDirectory = in.readuint32();
    _s.docPersistIdRef = in.readuint32();
    if (!(((quint32)_s.docPersistIdRef) == 1)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.docPersistIdRef) == 1");
    }
    _s.persistIdSeed = in.readuint32();
    _s.lastView = in.readuint16();
    if (!(((quint16)_s.lastView)<=18)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.lastView)<=18");
    }
    _s.unused = in.readuint16();
    _s._has_encryptSessionPersistIdRef = _s.rh.recLen==32;
    if (_s._has_encryptSessionPersistIdRef) {
        _s.encryptSessionPersistIdRef = in.readuint32();
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.zeroPadding.append(ZeroByte(&_s));
            parseZeroByte(in, _s.zeroPadding.last());
        } catch(IncorrectValueException _e) {
            _s.zeroPadding.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.zeroPadding.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseVbaProjectStg(LEInputStream& in, VbaProjectStg& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x1011)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1011");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseSlideAtom(LEInputStream& in, SlideAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x2");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x03EF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03EF");
    }
    if (!(_s.rh.recLen == 0x18)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x18");
    }
    _s.geom = in.readuint32();
    _c = 8;
    _s.rgPlaceholderTypes.resize(_c);
    in.readBytes(_s.rgPlaceholderTypes);
    _s.masterIdRef = in.readuint32();
    _s.notesIdRef = in.readuint32();
    parseSlideFlags(in, _s.slideFlags);
    _s.unused = in.readuint16();
}
void MSO::parseSlideShowSlideInfoAtom(LEInputStream& in, SlideShowSlideInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x03F9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03F9");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _s.slidetime = in.readuint32();
    _s.slideIdRef = in.readuint32();
    _s.effectDirection = in.readuint8();
    _s.effectType = in.readuint8();
    _s.fManualAdvance = in.readbit();
    _s.reserved = in.readbit();
    _s.fHidden = in.readbit();
    _s.reserved2 = in.readbit();
    _s.fSound = in.readbit();
    _s.reserved3 = in.readbit();
    _s.fLoopSound = in.readbit();
    _s.reserved4 = in.readbit();
    _s.fStopSound = in.readbit();
    _s.freserved5 = in.readbit();
    _s.fAutoAdvance = in.readbit();
    _s.reserved6 = in.readbit();
    _s.fCursorVisible = in.readbit();
    _s.reserved7 = in.readuint3();
    _s.speed = in.readuint8();
    _c = 3;
    _s.unused.resize(_c);
    in.readBytes(_s.unused);
}
void MSO::parseSlideShowDocInfoAtom(LEInputStream& in, SlideShowDocInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 1");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0401)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0401");
    }
    if (!(_s.rh.recLen == 0x50)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x50");
    }
    parseColorIndexStruct(in, _s.penColor);
    _s.restartTime = in.readint32();
    _s.startSlide = in.readint16();
    if (!(((qint16)_s.startSlide)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint16)_s.startSlide)>=0");
    }
    _s.endSlide = in.readint16();
    if (!(((qint16)_s.endSlide)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint16)_s.endSlide)>=0");
    }
    _c = 64;
    _s.namedShow.resize(_c);
    in.readBytes(_s.namedShow);
    _s.fAutoAdvance = in.readbit();
    _s.fWillSkipBuilds = in.readbit();
    _s.fUseSlideRange = in.readbit();
    _s.fDocUseNamedShow = in.readbit();
    _s.fShowBrowseMode = in.readbit();
    _s.fKioskMode = in.readbit();
    _s.fWillSkipNarration = in.readbit();
    _s.fLoopContinuously = in.readbit();
    _s.fHideScrollBar = in.readbit();
    _s.reserved = in.readuint7();
    _s.unused = in.readuint16();
}
void MSO::parseSlideSchemeColorSchemeAtom(LEInputStream& in, SlideSchemeColorSchemeAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x07F0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x07F0");
    }
    if (!(_s.rh.recLen == 0x20)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x20");
    }
    _c = 8;
    for (int _i=0; _i<_c; ++_i) {
        _s.rgSchemeColor.append(ColorStruct(&_s));
        parseColorStruct(in, _s.rgSchemeColor[_i]);
    }
}
void MSO::parseRoundTripSlideRecord(LEInputStream& in, RoundTripSlideRecord& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recType == 0x40E || _s.rh.recType == 0x40F || _s.rh.recType == 0x41D || _s.rh.recType == 0x3714 || _s.rh.recType == 0x2B0D || _s.rh.recType == 0x2B0B || _s.rh.recType == 0x2B0C || _s.rh.recType == 0x422)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x40E || _s.rh.recType == 0x40F || _s.rh.recType == 0x41D || _s.rh.recType == 0x3714 || _s.rh.recType == 0x2B0D || _s.rh.recType == 0x2B0B || _s.rh.recType == 0x2B0C || _s.rh.recType == 0x422");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseNamedShowsContainer(LEInputStream& in, NamedShowsContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x410)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x410");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseSummaryContainer(LEInputStream& in, SummaryContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x402)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x402");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseDocRoutingSlipAtom(LEInputStream& in, DocRoutingSlipAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x406)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x406");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parsePrintOptionsAtom(LEInputStream& in, PrintOptionsAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1770)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1770");
    }
    if (!(_s.rh.recLen == 5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 5");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseRoundTripCustomTableStyles12Atom(LEInputStream& in, RoundTripCustomTableStyles12Atom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0 || _s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0 || _s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x428)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x428");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseRoundTripCompositeMasterId12Atom(LEInputStream& in, RoundTripCompositeMasterId12Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x41D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x41D");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.compositeMasterId = in.readuint32();
}
void MSO::parseColorStruct(LEInputStream& in, ColorStruct& _s) {
    _s.streamOffset = in.getPosition();
    _s.red = in.readuint8();
    _s.green = in.readuint8();
    _s.blue = in.readuint8();
    _s.unused = in.readuint8();
}
void MSO::parseExObjListAtom(LEInputStream& in, ExObjListAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x040A)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x040A");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.exObjIdSeed = in.readint32();
    if (!(((qint32)_s.exObjIdSeed)>=1)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.exObjIdSeed)>=1");
    }
}
void MSO::parseExAviMovieContainer(LEInputStream& in, ExAviMovieContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1006)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1006");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExCDAudioContainer(LEInputStream& in, ExCDAudioContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x100E)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x100E");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExControlAtom(LEInputStream& in, ExControlAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFFB)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFFB");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.slideIdRef = in.readuint32();
}
void MSO::parseExHyperlinkAtom(LEInputStream& in, ExHyperlinkAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFD3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFD3");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.exHyperLinkId = in.readuint32();
}
void MSO::parseFriendlyNameAtom(LEInputStream& in, FriendlyNameAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.friendlyName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.friendlyName[_i] = in.readuint16();
    }
}
void MSO::parseTargetAtom(LEInputStream& in, TargetAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.target.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.target[_i] = in.readuint16();
    }
}
void MSO::parseLocationAtom(LEInputStream& in, LocationAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 3");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen/2;
    _s.location.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.location[_i] = in.readuint16();
    }
}
void MSO::parseExMCIMovieContainer(LEInputStream& in, ExMCIMovieContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1007)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1007");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExMIDIAudioContainer(LEInputStream& in, ExMIDIAudioContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x100D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x100D");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExWAVAudioEmbeddedContainer(LEInputStream& in, ExWAVAudioEmbeddedContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x100F)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x100F");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExWAVAudioLinkContainer(LEInputStream& in, ExWAVAudioLinkContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1010)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1010");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseUnknownExObjListSubContainerChild(LEInputStream& in, UnknownExObjListSubContainerChild& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFEA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFEA");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExOleLinkAtom(LEInputStream& in, ExOleLinkAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FD1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FD1");
    }
    if (!(_s.rh.recLen == 0xC)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0xC");
    }
    _s.slideIdRef = in.readuint32();
    _s.oleUpdateMode = in.readuint32();
    _s.unused = in.readuint32();
}
void MSO::parseExOleObjAtom(LEInputStream& in, ExOleObjAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x1");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FC3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FC3");
    }
    if (!(_s.rh.recLen == 0x18)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x18");
    }
    _s.drawAspect = in.readuint32();
    _s.type = in.readuint32();
    _s.exObjId = in.readuint32();
    _s.subType = in.readuint32();
    _s.persistIdRef = in.readuint32();
    _s.unused = in.readuint32();
}
void MSO::parseMenuNameAtom(LEInputStream& in, MenuNameAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x1");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen%2 == 0 )) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2 == 0 ");
    }
    _c = _s.rh.recLen;
    _s.menuName.resize(_c);
    in.readBytes(_s.menuName);
}
void MSO::parseProgIDAtom(LEInputStream& in, ProgIDAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x2");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen%2 == 0 )) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2 == 0 ");
    }
    _c = _s.rh.recLen;
    _s.progId.resize(_c);
    in.readBytes(_s.progId);
}
void MSO::parseClipboardNameAtom(LEInputStream& in, ClipboardNameAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x3");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen%2 == 0 )) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2 == 0 ");
    }
    _c = _s.rh.recLen;
    _s.clipboardName.resize(_c);
    in.readBytes(_s.clipboardName);
}
void MSO::parseMetafileBlob(LEInputStream& in, MetafileBlob& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FC1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FC1");
    }
    if (!(_s.rh.recLen>16)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen>16");
    }
    _s.mm = in.readint16();
    _s.xExt = in.readint16();
    _s.yExt = in.readint16();
    _c = _s.rh.recLen-6;
    _s.data.resize(_c);
    in.readBytes(_s.data);
}
void MSO::parseOfficeArtFDGG(LEInputStream& in, OfficeArtFDGG& _s) {
    _s.streamOffset = in.getPosition();
    _s.spidMax = in.readuint32();
    if (!(((quint32)_s.spidMax)<67098623)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.spidMax)<67098623");
    }
    _s.cidcl = in.readuint32();
    if (!(((quint32)_s.cidcl)<268435455)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.cidcl)<268435455");
    }
    _s.cspSaved = in.readuint32();
    _s.cdgSaved = in.readuint32();
}
void MSO::parseOfficeArtFDG(LEInputStream& in, OfficeArtFDG& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance<=4094)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance<=4094");
    }
    if (!(_s.rh.recType == 0x0F008)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F008");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.csp = in.readuint32();
    _s.spidCur = in.readuint32();
}
void MSO::parseOfficeArtFRITContainer(LEInputStream& in, OfficeArtFRITContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recType == 0xF118)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF118");
    }
    if (!(_s.rh.recLen==4*_s.rh.recInstance)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen==4*_s.rh.recInstance");
    }
    _c = _s.rh.recInstance;
    for (int _i=0; _i<_c; ++_i) {
        _s.rgfrit.append(OfficeArtFRIT(&_s));
        parseOfficeArtFRIT(in, _s.rgfrit[_i]);
    }
}
void MSO::parseOfficeArtFRIT(LEInputStream& in, OfficeArtFRIT& _s) {
    _s.streamOffset = in.getPosition();
    _s.fridNew = in.readuint16();
    _s.fridOld = in.readuint16();
}
void MSO::parseOfficeArtBStoreContainer(LEInputStream& in, OfficeArtBStoreContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recType == 0x0F001)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F001");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgfb.append(OfficeArtBStoreContainerFileBlock(&_s));
        parseOfficeArtBStoreContainerFileBlock(in, _s.rgfb.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseOfficeArtSpgrContainer(LEInputStream& in, OfficeArtSpgrContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0F003)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F003");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgfb.append(OfficeArtSpgrContainerFileBlock(&_s));
        parseOfficeArtSpgrContainerFileBlock(in, _s.rgfb.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseOfficeArtSolverContainer(LEInputStream& in, OfficeArtSolverContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recType == 0xF005)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF005");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgfb.append(OfficeArtSolverContainerFileBlock(&_s));
            parseOfficeArtSolverContainerFileBlock(in, _s.rgfb.last());
        } catch(IncorrectValueException _e) {
            _s.rgfb.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgfb.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseOfficeArtFConnectorRule(LEInputStream& in, OfficeArtFConnectorRule& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 1");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF012)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF012");
    }
    if (!(_s.rh.recLen == 0x18)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x18");
    }
    _s.ruid = in.readuint32();
    _s.spidA = in.readuint32();
    _s.spidB = in.readuint32();
    _s.spidC = in.readuint32();
    _s.cptiA = in.readuint32();
    _s.cptiB = in.readuint32();
}
void MSO::parseOfficeArtFArcRule(LEInputStream& in, OfficeArtFArcRule& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF014)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF014");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.ruid = in.readuint32();
    _s.spid = in.readuint32();
}
void MSO::parseOfficeArtFCalloutRule(LEInputStream& in, OfficeArtFCalloutRule& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF017)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF017");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.ruid = in.readuint32();
    _s.spid = in.readuint32();
}
void MSO::parseOfficeArtFSPGR(LEInputStream& in, OfficeArtFSPGR& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x1");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0F009)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F009");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _s.xLeft = in.readint32();
    _s.yTop = in.readint32();
    _s.xRight = in.readint32();
    _s.yBottom = in.readint32();
}
void MSO::parseOfficeArtFSP(LEInputStream& in, OfficeArtFSP& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x2");
    }
    if (!(_s.rh.recInstance<= 202)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance<= 202");
    }
    if (!(_s.rh.recType == 0x0F00A)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F00A");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.spid = in.readuint32();
    _s.fGroup = in.readbit();
    _s.fChild = in.readbit();
    _s.fPatriarch = in.readbit();
    _s.fDeleted = in.readbit();
    _s.fOleShape = in.readbit();
    _s.fHaveMaster = in.readbit();
    _s.fFlipH = in.readbit();
    _s.fFlipV = in.readbit();
    _s.fConnector = in.readbit();
    _s.fHaveAnchor = in.readbit();
    _s.fBackground = in.readbit();
    _s.fHaveSpt = in.readbit();
    _s.unused1 = in.readuint20();
}
void MSO::parseOfficeArtFOPT(LEInputStream& in, OfficeArtFOPT& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x3");
    }
    if (!(_s.rh.recType == 0x0F00B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F00B");
    }
    _c = _s.rh.recInstance;
    for (int _i=0; _i<_c; ++_i) {
        _s.fopt.append(OfficeArtFOPTEChoice(&_s));
        parseOfficeArtFOPTEChoice(in, _s.fopt[_i]);
    }
    _c = _s.rh.recLen-6*_s.rh.recInstance;
    _s.complexData.resize(_c);
    in.readBytes(_s.complexData);
}
void MSO::parseOfficeArtSecondaryFOPT(LEInputStream& in, OfficeArtSecondaryFOPT& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 3");
    }
    if (!(_s.rh.recType == 0xF121)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF121");
    }
    _c = _s.rh.recInstance;
    for (int _i=0; _i<_c; ++_i) {
        _s.fopt.append(OfficeArtFOPTEChoice(&_s));
        parseOfficeArtFOPTEChoice(in, _s.fopt[_i]);
    }
    _c = _s.rh.recLen-6*_s.rh.recInstance;
    _s.complexData.resize(_c);
    in.readBytes(_s.complexData);
}
void MSO::parseOfficeArtTertiaryFOPT(LEInputStream& in, OfficeArtTertiaryFOPT& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 3");
    }
    if (!(_s.rh.recType == 0xF122)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF122");
    }
    _c = _s.rh.recInstance;
    for (int _i=0; _i<_c; ++_i) {
        _s.fopt.append(OfficeArtFOPTEChoice(&_s));
        parseOfficeArtFOPTEChoice(in, _s.fopt[_i]);
    }
    _c = _s.rh.recLen-6*_s.rh.recInstance;
    _s.complexData.resize(_c);
    in.readBytes(_s.complexData);
}
void MSO::parsePSegmentInfo_complex(LEInputStream& in, PSegmentInfo_complex& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.nElems = in.readuint16();
    _s.nElemsAlloc = in.readuint16();
    _s.cbElem = in.readuint16();
    _c = (_s.cbElem==0xFFF0)?(4 * _s.nElems):(_s.cbElem * _s.nElems);
    _s.data.resize(_c);
    in.readBytes(_s.data);
}
void MSO::parseMSOPATHINFO(LEInputStream& in, MSOPATHINFO& _s) {
    _s.streamOffset = in.getPosition();
    _s.type = in.readuint3();
    _s.segments = in.readuint13();
}
void MSO::parseFixedPoint(LEInputStream& in, FixedPoint& _s) {
    _s.streamOffset = in.getPosition();
    _s.fractional = in.readuint16();
    _s.integral = in.readint16();
}
void MSO::parseFillShadeColors_complex(LEInputStream& in, FillShadeColors_complex& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.nElems = in.readuint16();
    _s.nElemsAlloc = in.readuint16();
    _s.cbElem = in.readuint16();
    _c = (_s.cbElem==0xFFF0)?(4 * _s.nElems):(_s.cbElem * _s.nElems);
    _s.data.resize(_c);
    in.readBytes(_s.data);
}
void MSO::parsePWrapPolygonVertices_complex(LEInputStream& in, PWrapPolygonVertices_complex& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.nElems = in.readuint16();
    _s.nElemsAlloc = in.readuint16();
    _s.cbElem = in.readuint16();
    _c = (_s.cbElem==0xFFF0)?(4 * _s.nElems):(_s.cbElem * _s.nElems);
    _s.data.resize(_c);
    in.readBytes(_s.data);
}
void MSO::parseOfficeArtCOLORREF(LEInputStream& in, OfficeArtCOLORREF& _s) {
    _s.streamOffset = in.getPosition();
    _s.red = in.readuint8();
    _s.green = in.readuint8();
    _s.blue = in.readuint8();
    _s.fPaletteIndex = in.readbit();
    _s.fPaletteRGB = in.readbit();
    _s.fSystemRGB = in.readbit();
    _s.fSchemeIndex = in.readbit();
    _s.fSysIndex = in.readbit();
    _s.unused1 = in.readbit();
    _s.unused2 = in.readbit();
    _s.unused3 = in.readbit();
}
void MSO::parseOfficeArtChildAnchor(LEInputStream& in, OfficeArtChildAnchor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF00F)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF00F");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _s.xLeft = in.readint32();
    _s.yTop = in.readint32();
    _s.xRight = in.readint32();
    _s.yBottom = in.readint32();
}
void MSO::parseDocOfficeArtClientAnchor(LEInputStream& in, DocOfficeArtClientAnchor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF010)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF010");
    }
    if (!(_s.rh.recLen == 0x4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x4");
    }
    _s.clientAnchor = in.readint32();
}
void MSO::parseXlsOfficeArtClientAnchor(LEInputStream& in, XlsOfficeArtClientAnchor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF010)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF010");
    }
    if (!(_s.rh.recLen == 0x8 || _s.rh.recLen == 0x12)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x8 || _s.rh.recLen == 0x12");
    }
    _s.fMove = in.readbit();
    _s.fSize = in.readbit();
    _s.unused = in.readuint14();
    _s._has_width = _s.rh.recLen==0x8;
    if (_s._has_width) {
        _s.width = in.readint32();
    }
    _s._has_height = _s.rh.recLen==0x8;
    if (_s._has_height) {
        _s.height = in.readint32();
    }
    _s._has_colL = _s.rh.recLen==0x12;
    if (_s._has_colL) {
        _s.colL = in.readuint16();
    }
    _s._has_dxL = _s.rh.recLen==0x12;
    if (_s._has_dxL) {
        _s.dxL = in.readint16();
    }
    _s._has_rwT = _s.rh.recLen==0x12;
    if (_s._has_rwT) {
        _s.rwT = in.readuint16();
    }
    _s._has_dyT = _s.rh.recLen==0x12;
    if (_s._has_dyT) {
        _s.dyT = in.readint16();
    }
    _s._has_colR = _s.rh.recLen==0x12;
    if (_s._has_colR) {
        _s.colR = in.readuint16();
    }
    _s._has_dxR = _s.rh.recLen==0x12;
    if (_s._has_dxR) {
        _s.dxR = in.readint16();
    }
    _s._has_rwB = _s.rh.recLen==0x12;
    if (_s._has_rwB) {
        _s.rwB = in.readuint16();
    }
    _s._has_dyB = _s.rh.recLen==0x12;
    if (_s._has_dyB) {
        _s.dyB = in.readint16();
    }
}
void MSO::parseOfficeArtFPSPL(LEInputStream& in, OfficeArtFPSPL& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF11D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF11D");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.spid = in.readuint30();
    _s.reserved1 = in.readbit();
    _s.fLast = in.readbit();
}
void MSO::parseRectStruct(LEInputStream& in, RectStruct& _s) {
    _s.streamOffset = in.getPosition();
    _s.top = in.readint32();
    _s.left = in.readint32();
    _s.right = in.readint32();
    _s.bottom = in.readint32();
}
void MSO::parseSmallRectStruct(LEInputStream& in, SmallRectStruct& _s) {
    _s.streamOffset = in.getPosition();
    _s.top = in.readint16();
    _s.left = in.readint16();
    _s.right = in.readint16();
    _s.bottom = in.readint16();
}
void MSO::parseDocOfficeArtClientData(LEInputStream& in, DocOfficeArtClientData& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF011)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF011");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.clientData = in.readuint32();
}
void MSO::parseXlsOfficeArtClientData(LEInputStream& in, XlsOfficeArtClientData& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF011)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF011");
    }
    if (!(_s.rh.recLen == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0");
    }
}
void MSO::parseShapeFlagsAtom(LEInputStream& in, ShapeFlagsAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xBDB)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xBDB");
    }
    if (!(_s.rh.recLen == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 1");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseShapeFlags10Atom(LEInputStream& in, ShapeFlags10Atom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xBDC)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xBDC");
    }
    if (!(_s.rh.recLen == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 1");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseExObjRefAtom(LEInputStream& in, ExObjRefAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xBC1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xBC1");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.exObjIdRef = in.readuint32();
}
void MSO::parseAnimationInfoAtom(LEInputStream& in, AnimationInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x1");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFF1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFF1");
    }
    if (!(_s.rh.recLen == 0x1C)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x1C");
    }
    _c = 0x1C;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseSoundContainer(LEInputStream& in, SoundContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x7E6)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x7E6");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseInteractiveInfoAtom(LEInputStream& in, InteractiveInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFF2 || _s.rh.recType == 0xFF3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFF2 || _s.rh.recType == 0xFF3");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _s.soundIdRef = in.readuint32();
    _s.exHyperlinkIdRef = in.readuint32();
    _s.action = in.readuint8();
    if (!(((quint8)_s.action)<8)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.action)<8");
    }
    _s.oleVerb = in.readuint8();
    if (!(((quint8)_s.oleVerb)<3)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.oleVerb)<3");
    }
    _s.jump = in.readuint8();
    if (!(((quint8)_s.jump)<7)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.jump)<7");
    }
    _s.fAnimated = in.readbit();
    _s.fStopSound = in.readbit();
    _s.fCustomSoundReturn = in.readbit();
    _s.fVisited = in.readbit();
    _s.reserved = in.readuint4();
    _s.hyperlinkType = in.readuint8();
    _c = 3;
    _s.unused.resize(_c);
    in.readBytes(_s.unused);
}
void MSO::parseMacroNameAtom(LEInputStream& in, MacroNameAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 2");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen%2==0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen%2==0");
    }
    _c = _s.rh.recLen;
    _s.macroName.resize(_c);
    in.readBytes(_s.macroName);
}
void MSO::parsePlaceholderAtom(LEInputStream& in, PlaceholderAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xBC3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xBC3");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    _s.position = in.readint32();
    _s.placementId = in.readuint8();
    _s.size = in.readuint8();
    _s.unused = in.readuint16();
}
void MSO::parseRecolorInfoAtom(LEInputStream& in, RecolorInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFE7)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFE7");
    }
    _c = _s.rh.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseOutlineTextRefAtom(LEInputStream& in, OutlineTextRefAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF9E)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF9E");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.index = in.readint32();
    if (!(((qint32)_s.index)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.index)>=0");
    }
}
void MSO::parseShapeProgsTagContainer(LEInputStream& in, ShapeProgsTagContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2");
    }
    if (!(_s.rh.recType == 0x1388)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1388");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgChildRec.append(ShapeProgTagsSubContainerOrAtom(&_s));
            parseShapeProgTagsSubContainerOrAtom(in, _s.rgChildRec.last());
        } catch(IncorrectValueException _e) {
            _s.rgChildRec.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgChildRec.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parsePP9ShapeBinaryTagExtension(LEInputStream& in, PP9ShapeBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen == 0xE)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0xE");
    }
    _c = 7;
    _s.tagName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.tagName[_i] = in.readuint16();
    }
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    parseStyleTextProp9Atom(in, _s.styleTextProp9Atom);
}
void MSO::parsePP10ShapeBinaryTagExtension(LEInputStream& in, PP10ShapeBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _c = 8;
    _s.tagName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.tagName[_i] = in.readuint16();
    }
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    _c = _s.rhData.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parsePP11ShapeBinaryTagExtension(LEInputStream& in, PP11ShapeBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _c = 8;
    _s.tagName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.tagName[_i] = in.readuint16();
    }
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    _c = _s.rhData.recLen;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parseRoundTripNewPlaceHolderId12Atom(LEInputStream& in, RoundTripNewPlaceHolderId12Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xBDD)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xBDD");
    }
    if (!(_s.rh.recLen == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 1");
    }
    _s.newPlaceHolderId = in.readuint8();
}
void MSO::parseRoundTripShapeId12Atom(LEInputStream& in, RoundTripShapeId12Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x41F)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x41F");
    }
    if (!(_s.rh.recLen == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 4");
    }
    _s.shapeId = in.readuint32();
}
void MSO::parseRoundTripHFPlaceholder12Atom(LEInputStream& in, RoundTripHFPlaceholder12Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x420)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x420");
    }
    if (!(_s.rh.recLen == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 1");
    }
    _s.placeHolderId = in.readuint8();
}
void MSO::parseRoundTripShapeCheckSumForCustomLayouts12Atom(LEInputStream& in, RoundTripShapeCheckSumForCustomLayouts12Atom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x426)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x426");
    }
    if (!(_s.rh.recLen == 8 || _s.rh.recLen == 40)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8 || _s.rh.recLen == 40");
    }
    _s.shapeCheckSum = in.readuint32();
    _s.textCheckSum = in.readuint32();
    _c = _s.rh.recLen-8;
    _s.unknown.resize(_c);
    in.readBytes(_s.unknown);
}
void MSO::parseXlsOfficeArtClientTextBox(LEInputStream& in, XlsOfficeArtClientTextBox& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF00D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF00D");
    }
    if (!(_s.rh.recLen == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0");
    }
}
void MSO::parseDocOfficeArtClientTextBox(LEInputStream& in, DocOfficeArtClientTextBox& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0 || _s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0 || _s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF00D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF00D");
    }
    if (!(_s.rh.recLen == 0x4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x4");
    }
    _s.clientTextBox = in.readuint32();
}
void MSO::parsePptOfficeArtClientTextBox(LEInputStream& in, PptOfficeArtClientTextBox& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0 || _s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0 || _s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF00D)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF00D");
    }
    if (!(_s.rh.recLen!=4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen!=4");
    }
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgChildRec.append(TextClientDataSubContainerOrAtom(&_s));
        parseTextClientDataSubContainerOrAtom(in, _s.rgChildRec.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseOfficeArtIDCL(LEInputStream& in, OfficeArtIDCL& _s) {
    _s.streamOffset = in.getPosition();
    _s.dgid = in.readuint32();
    _s.cspidCur = in.readuint32();
}
void MSO::parseOfficeArtFOPTEOPID(LEInputStream& in, OfficeArtFOPTEOPID& _s) {
    _s.streamOffset = in.getPosition();
    _s.opid = in.readuint14();
    _s.fBid = in.readbit();
    _s.fComplex = in.readbit();
}
void MSO::parseOfficeArtColorMRUContainer(LEInputStream& in, OfficeArtColorMRUContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recType == 0xF11A)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF11A");
    }
    if (!(_s.rh.recLen==4*_s.rh.recInstance)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen==4*_s.rh.recInstance");
    }
    _c = _s.rh.recInstance;
    for (int _i=0; _i<_c; ++_i) {
        _s.rgmsocr.append(MSOCR(&_s));
        parseMSOCR(in, _s.rgmsocr[_i]);
    }
}
void MSO::parseMSOCR(LEInputStream& in, MSOCR& _s) {
    _s.streamOffset = in.getPosition();
    _s.red = in.readuint8();
    _s.green = in.readuint8();
    _s.blue = in.readuint8();
    _s.unused1 = in.readuint3();
    _s.fSchemeIndex = in.readbit();
    _s.unused2 = in.readuint4();
}
void MSO::parseOfficeArtSplitMenuColorContainer(LEInputStream& in, OfficeArtSplitMenuColorContainer& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x4");
    }
    if (!(_s.rh.recType == 0xF11E)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF11E");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _c = 4;
    for (int _i=0; _i<_c; ++_i) {
        _s.smca.append(MSOCR(&_s));
        parseMSOCR(in, _s.smca[_i]);
    }
}
void MSO::parsetodo(LEInputStream& in, todo& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    _c = _s.rh.recLen;
    _s.anon.resize(_c);
    in.readBytes(_s.anon);
}
void MSO::parseFibBase(LEInputStream& in, FibBase& _s) {
    _s.streamOffset = in.getPosition();
    _s.wIdent = in.readuint16();
    if (!(((quint16)_s.wIdent) == 0xA5EC)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.wIdent) == 0xA5EC");
    }
    _s.nFib = in.readuint16();
    if (!(((quint16)_s.nFib) == 0xC0 || ((quint16)_s.nFib) == 0xC1 || ((quint16)_s.nFib) == 0xC2 || ((quint16)_s.nFib) == 0x101 || ((quint16)_s.nFib) == 0x10B || ((quint16)_s.nFib) == 0x10C || ((quint16)_s.nFib) == 0x112)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.nFib) == 0xC0 || ((quint16)_s.nFib) == 0xC1 || ((quint16)_s.nFib) == 0xC2 || ((quint16)_s.nFib) == 0x101 || ((quint16)_s.nFib) == 0x10B || ((quint16)_s.nFib) == 0x10C || ((quint16)_s.nFib) == 0x112");
    }
    _s.unused = in.readuint16();
    _s.lid = in.readuint16();
    _s.pnNext = in.readuint16();
    _s.fDot = in.readbit();
    _s.fGlsy = in.readbit();
    _s.fComplex = in.readbit();
    _s.fHasPic = in.readbit();
    _s.cQuickSaves = in.readuint4();
    _s.fEncrypted = in.readbit();
    _s.fWhichTblStm = in.readbit();
    _s.fReadOnlyRecommended = in.readbit();
    _s.fWriteReservation = in.readbit();
    _s.fExtChar = in.readbit();
    _s.fLoadOverride = in.readbit();
    _s.fFarEast = in.readbit();
    _s.fObfuscated = in.readbit();
    _s.nFibBack = in.readuint16();
    if (!(((quint16)_s.nFibBack) == 0xBF || ((quint16)_s.nFibBack) == 0xC1)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.nFibBack) == 0xBF || ((quint16)_s.nFibBack) == 0xC1");
    }
    _s.IKey = in.readuint32();
    _s.envr = in.readuint8();
    if (!(((quint8)_s.envr) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.envr) == 0");
    }
    _s.fMac = in.readbit();
    if (!(((bool)_s.fMac) == false)) {
        throw IncorrectValueException(in.getPosition(), "((bool)_s.fMac) == false");
    }
    _s.fEmptySpecial = in.readbit();
    _s.fLoadOverridePage = in.readbit();
    _s.reserved1 = in.readbit();
    _s.reserved2 = in.readbit();
    _s.fSpare0 = in.readuint3();
    _s.reserved3 = in.readuint16();
    if (!(((quint16)_s.reserved3) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.reserved3) == 0");
    }
    _s.reserved4 = in.readuint16();
    if (!(((quint16)_s.reserved4) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.reserved4) == 0");
    }
    _s.reserved5 = in.readuint32();
    _s.reserved6 = in.readuint32();
}
void MSO::parseFibRgW97(LEInputStream& in, FibRgW97& _s) {
    _s.streamOffset = in.getPosition();
    _s.reserved1 = in.readuint16();
    _s.reserved2 = in.readuint16();
    _s.reserved3 = in.readuint16();
    _s.reserved4 = in.readuint16();
    _s.reserved5 = in.readuint16();
    _s.reserved6 = in.readuint16();
    _s.reserved7 = in.readuint16();
    _s.reserved8 = in.readuint16();
    _s.reserved9 = in.readuint16();
    _s.reserved10 = in.readuint16();
    _s.reserved11 = in.readuint16();
    _s.reserved12 = in.readuint16();
    _s.reserved13 = in.readuint16();
    _s.lidFE = in.readuint16();
}
void MSO::parseFibRgLw97(LEInputStream& in, FibRgLw97& _s) {
    _s.streamOffset = in.getPosition();
    _s.cbMac = in.readuint32();
    _s.reserved1 = in.readuint32();
    _s.reserved2 = in.readuint32();
    _s.ccpText = in.readint32();
    if (!(((qint32)_s.ccpText)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.ccpText)>=0");
    }
    _s.ccpFtn = in.readint32();
    if (!(((qint32)_s.ccpFtn)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.ccpFtn)>=0");
    }
    _s.ccpHdd = in.readint32();
    if (!(((qint32)_s.ccpHdd)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.ccpHdd)>=0");
    }
    _s.reserved3 = in.readuint32();
    if (!(((quint32)_s.reserved3) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reserved3) == 0");
    }
    _s.ccpAtn = in.readint32();
    if (!(((qint32)_s.ccpAtn)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.ccpAtn)>=0");
    }
    _s.ccpEdn = in.readint32();
    if (!(((qint32)_s.ccpEdn)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.ccpEdn)>=0");
    }
    _s.ccpTxbx = in.readint32();
    if (!(((qint32)_s.ccpTxbx)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.ccpTxbx)>=0");
    }
    _s.ccpHdrTxbx = in.readint32();
    if (!(((qint32)_s.ccpHdrTxbx)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.ccpHdrTxbx)>=0");
    }
    _s.reserved4 = in.readuint32();
    _s.reserved5 = in.readuint32();
    _s.reserved6 = in.readuint32();
    _s.reserved7 = in.readuint32();
    _s.reserved8 = in.readuint32();
    _s.reserved9 = in.readuint32();
    _s.reserved10 = in.readuint32();
    _s.reserved11 = in.readuint32();
    _s.reserved12 = in.readuint32();
    _s.reserved13 = in.readuint32();
    if (!(((quint32)_s.reserved13) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reserved13) == 0");
    }
    _s.reserved14 = in.readuint32();
    if (!(((quint32)_s.reserved14) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reserved14) == 0");
    }
}
void MSO::parseFibRgFcLcb97(LEInputStream& in, FibRgFcLcb97& _s) {
    _s.streamOffset = in.getPosition();
    _s.fcStshfOrig = in.readuint32();
    _s.lcbStshfOrig = in.readuint32();
    _s.fcStshf = in.readuint32();
    _s.lcbStshf = in.readuint32();
    _s.fcPlcffndRef = in.readuint32();
    _s.lcbPlcffndRef = in.readuint32();
    _s.fcPlcffndTxt = in.readuint32();
    _s.lcbPlcffndTxt = in.readuint32();
    _s.fcPlcfandRef = in.readuint32();
    _s.lcbPlcfandRef = in.readuint32();
    _s.fcPlcfandTxt = in.readuint32();
    _s.lcbPlcfandTxt = in.readuint32();
    _s.fcPlcfSed = in.readuint32();
    _s.lcbPlcfSed = in.readuint32();
    _s.fcPlcPad = in.readuint32();
    _s.lcbPlcPad = in.readuint32();
    _s.fcPlcfPhe = in.readuint32();
    _s.lcbPlcfPhe = in.readuint32();
    _s.fcSttbfGlsy = in.readuint32();
    _s.lcbSttbfGlsy = in.readuint32();
    _s.fcPlcfGlsy = in.readuint32();
    _s.lcbPlcfGlsy = in.readuint32();
    _s.fcPlcfHdd = in.readuint32();
    _s.lcbPlcfHdd = in.readuint32();
    _s.fcPlcfBteChpx = in.readuint32();
    _s.lcbPlcfBteChpx = in.readuint32();
    _s.fcPlcfBtePapx = in.readuint32();
    _s.lcbPlcfBtePapx = in.readuint32();
    _s.fcPlcfSea = in.readuint32();
    _s.lcbPlcfSea = in.readuint32();
    _s.fcSttbfFfn = in.readuint32();
    _s.lcbSttbfFfn = in.readuint32();
    _s.fcPlcfFldMom = in.readuint32();
    _s.lcbPlcfFldMom = in.readuint32();
    _s.fcPlcfFldHdr = in.readuint32();
    _s.lcbPlcfFldHdr = in.readuint32();
    _s.fcPlcfFldFtn = in.readuint32();
    _s.lcbPlcfFldFtn = in.readuint32();
    _s.fcPlcfFldAtn = in.readuint32();
    _s.lcbPlcfFldAtn = in.readuint32();
    _s.fcPlcfFldMcr = in.readuint32();
    _s.lcbPlcfFldMcr = in.readuint32();
    _s.fcSttbfBkmk = in.readuint32();
    _s.lcbSttbfBkmk = in.readuint32();
    _s.fcPlcfBkf = in.readuint32();
    _s.lcbPlcfBkf = in.readuint32();
    _s.fcPlcfBkl = in.readuint32();
    _s.lcbPlcfBkl = in.readuint32();
    _s.fcCmds = in.readuint32();
    _s.lcbCmds = in.readuint32();
    _s.fcUnused1 = in.readuint32();
    _s.lcbUnused1 = in.readuint32();
    _s.fcSttbfMcr = in.readuint32();
    _s.lcbSttbfMcr = in.readuint32();
    _s.fcPrDrvr = in.readuint32();
    _s.lcbPrDrvr = in.readuint32();
    _s.fcPrEnvPort = in.readuint32();
    _s.lcbPrEnvPort = in.readuint32();
    _s.fcPrEnvLand = in.readuint32();
    _s.lcbPrEnvLand = in.readuint32();
    _s.fcWss = in.readuint32();
    _s.lcbWss = in.readuint32();
    _s.fcDop = in.readuint32();
    _s.lcbDop = in.readuint32();
    _s.fcSttbfAssoc = in.readuint32();
    _s.lcbSttbfAssoc = in.readuint32();
    _s.fcClx = in.readuint32();
    _s.lcbClx = in.readuint32();
    _s.fcPlcfPgdFtn = in.readuint32();
    _s.lcbPlcfPgdFtn = in.readuint32();
    _s.fcAutosaveSource = in.readuint32();
    _s.lcbAutosaveSource = in.readuint32();
    _s.fcGrpXstAtnOwners = in.readuint32();
    _s.lcbGrpXstAtnOwners = in.readuint32();
    _s.fcSttbfAtnBkmk = in.readuint32();
    _s.lcbSttbfAtnBkmk = in.readuint32();
    _s.fcUnused2 = in.readuint32();
    _s.lcbUnused2 = in.readuint32();
    _s.fcUnused3 = in.readuint32();
    _s.lcbUnused3 = in.readuint32();
    _s.fcPlcSpaMom = in.readuint32();
    _s.lcbPlcSpaMom = in.readuint32();
    _s.fcPlcSpaHdr = in.readuint32();
    _s.lcbPlcSpaHdr = in.readuint32();
    _s.fcPlcfAtnBkf = in.readuint32();
    _s.lcbPlcfAtnBkf = in.readuint32();
    _s.fcPlcfAtnBkl = in.readuint32();
    _s.lcbPlcfAtnBkl = in.readuint32();
    _s.fcPms = in.readuint32();
    _s.lcbPms = in.readuint32();
    _s.fcFormFldSttbs = in.readuint32();
    _s.lcbFormFldSttbs = in.readuint32();
    _s.fcPlcfendRef = in.readuint32();
    _s.lcbPlcfendRef = in.readuint32();
    _s.fcPlcfendTxt = in.readuint32();
    _s.lcbPlcfendTxt = in.readuint32();
    _s.fcPlcfFldEdn = in.readuint32();
    _s.lcbPlcfFldEdn = in.readuint32();
    _s.fcUnused4 = in.readuint32();
    _s.lcbUnused4 = in.readuint32();
    _s.fcDggInfo = in.readuint32();
    _s.lcbDggInfo = in.readuint32();
    _s.fcSttbfRMark = in.readuint32();
    _s.lcbSttbfRMark = in.readuint32();
    _s.fcSttbfCaption = in.readuint32();
    _s.lcbSttbfCaption = in.readuint32();
    _s.fcSttbfAutoCaption = in.readuint32();
    _s.lcbSttbfAutoCaption = in.readuint32();
    _s.fcPlcfWkb = in.readuint32();
    _s.lcbPlcfWkb = in.readuint32();
    _s.fcPlcfSpl = in.readuint32();
    _s.lcbPlcfSpl = in.readuint32();
    _s.fcPlcftxbxTxt = in.readuint32();
    _s.lcbPlcftxbxTxt = in.readuint32();
    _s.fcPlcfFldTxbx = in.readuint32();
    _s.lcbPlcfFldTxbx = in.readuint32();
    _s.fcPlcfHdrtxbxTxt = in.readuint32();
    _s.lcbPlcfHdrtxbxTxt = in.readuint32();
    _s.fcPlcffldHdrTxbx = in.readuint32();
    _s.lcbPlcffldHdrTxbx = in.readuint32();
    _s.fcStwUser = in.readuint32();
    _s.lcbStwUser = in.readuint32();
    _s.fcSttbTtmbd = in.readuint32();
    _s.lcbSttbTtmbd = in.readuint32();
    _s.fcCookieData = in.readuint32();
    _s.lcbCookieData = in.readuint32();
    _s.fcPgdMotherOldOld = in.readuint32();
    _s.lcbPgdMotherOldOld = in.readuint32();
    _s.fcBkdMotherOldOld = in.readuint32();
    _s.lcbBkdMotherOldOld = in.readuint32();
    _s.fcPgdFtnOldOld = in.readuint32();
    _s.lcbPgdFtnOldOld = in.readuint32();
    _s.fcBkdFtnOldOld = in.readuint32();
    _s.lcbBkdFtnOldOld = in.readuint32();
    _s.fcPgdEdnOldOld = in.readuint32();
    _s.lcbPgdEdnOldOld = in.readuint32();
    _s.fcBkdEdnOldOld = in.readuint32();
    _s.lcbBkdEdnOldOld = in.readuint32();
    _s.fcSttbfIntlFld = in.readuint32();
    _s.lcbSttbfIntlFld = in.readuint32();
    _s.fcRouteSlip = in.readuint32();
    _s.lcbRouteSlip = in.readuint32();
    _s.fcSttbSavedBy = in.readuint32();
    _s.lcbSttbSavedBy = in.readuint32();
    _s.fcSttbFnm = in.readuint32();
    _s.lcbSttbFnm = in.readuint32();
    _s.fcPlfLst = in.readuint32();
    _s.lcbPlfLst = in.readuint32();
    _s.fcPlfLfo = in.readuint32();
    _s.lcbPlfLfo = in.readuint32();
    _s.fcPlcfTxbxBkd = in.readuint32();
    _s.lcbPlcfTxbxBkd = in.readuint32();
    _s.fcPlcfTxbxHdrBkd = in.readuint32();
    _s.lcbPlcfTxbxHdrBkd = in.readuint32();
    _s.fcDocUndoWord9 = in.readuint32();
    _s.lcbDocUndoWord9 = in.readuint32();
    _s.fcRgbUse = in.readuint32();
    _s.lcbRgbUse = in.readuint32();
    _s.fcUsp = in.readuint32();
    _s.lcbUsp = in.readuint32();
    _s.fcUskf = in.readuint32();
    _s.lcbUskf = in.readuint32();
    _s.fcPlcupcRgbUse = in.readuint32();
    _s.lcbPlcupcRgbUse = in.readuint32();
    _s.fcPlcupcUsp = in.readuint32();
    _s.lcbPlcupcUsp = in.readuint32();
    _s.fcSttbGlsyStyle = in.readuint32();
    _s.lcbSttbGlsyStyle = in.readuint32();
    _s.fcPlgosl = in.readuint32();
    _s.lcbPlgosl = in.readuint32();
    _s.fcPlcocx = in.readuint32();
    _s.lcbPlcocx = in.readuint32();
    _s.fcPlcfBteLvc = in.readuint32();
    _s.lcbPlcfBteLvc = in.readuint32();
    _s.dwLowDateTime = in.readuint32();
    _s.dwHighDateTime = in.readuint32();
    _s.fcPlcfLvcPre10 = in.readuint32();
    _s.lcbPlcfLvcPre10 = in.readuint32();
    _s.fcPlcfAsumy = in.readuint32();
    _s.lcbPlcfAsumy = in.readuint32();
    _s.fcPlcfGram = in.readuint32();
    _s.lcbPlcfGram = in.readuint32();
    _s.fcSttbListNames = in.readuint32();
    _s.lcbSttbListNames = in.readuint32();
    _s.fcSttbfUssr = in.readuint32();
    _s.lcbSttbfUssr = in.readuint32();
}
void MSO::parseFibRgFcLcb2000(LEInputStream& in, FibRgFcLcb2000& _s) {
    _s.streamOffset = in.getPosition();
    _s.fcPlcfTch = in.readuint32();
    _s.lcbPlcfTch = in.readuint32();
    _s.fcRmdThreading = in.readuint32();
    _s.lcbRmdThreading = in.readuint32();
    _s.fcMid = in.readuint32();
    _s.lcbMid = in.readuint32();
    _s.fcSttbRgtplc = in.readuint32();
    _s.lcbSttbRgtplc = in.readuint32();
    _s.fcMsoEnvelope = in.readuint32();
    _s.lcbMsoEnvelope = in.readuint32();
    _s.fcPlcfLad = in.readuint32();
    _s.lcbPlcfLad = in.readuint32();
    _s.fcRgDofr = in.readuint32();
    _s.lcbRgDofr = in.readuint32();
    _s.fcPlcosl = in.readuint32();
    _s.lcbPlcosl = in.readuint32();
    _s.fcPlcfCookieOld = in.readuint32();
    _s.lcbPlcfCookieOld = in.readuint32();
    _s.fcPgdMotherOld = in.readuint32();
    _s.lcbPgdMotherOld = in.readuint32();
    _s.fcBkdMotherOld = in.readuint32();
    _s.lcbBkdMotherOld = in.readuint32();
    _s.fcPgdFtnOld = in.readuint32();
    _s.lcbPgdFtnOld = in.readuint32();
    _s.fcBkdFtnOld = in.readuint32();
    _s.lcbBkdFtnOld = in.readuint32();
    _s.fcPgdEdnOld = in.readuint32();
    _s.lcbPgdEdnOld = in.readuint32();
    _s.fcBkdEdnOld = in.readuint32();
    _s.lcbBkdEdnOld = in.readuint32();
}
void MSO::parseFibRgFcLcb2002(LEInputStream& in, FibRgFcLcb2002& _s) {
    _s.streamOffset = in.getPosition();
    _s.fcUnused1 = in.readuint32();
    _s.lcbUnused1 = in.readuint32();
    _s.fcPlcfPgp = in.readuint32();
    _s.lcbPlcfPgp = in.readuint32();
    _s.fcPlcfuim = in.readuint32();
    _s.lcbPlcfuim = in.readuint32();
    _s.fcPlfguidUim = in.readuint32();
    _s.lcbPlfguidUim = in.readuint32();
    _s.fcAtrdExtra = in.readuint32();
    _s.lcbAtrdExtra = in.readuint32();
    _s.fcPlrsid = in.readuint32();
    _s.lcbPlrsid = in.readuint32();
    _s.fcSttbfBkmkFactoid = in.readuint32();
    _s.lcbSttbfBkmkFactoid = in.readuint32();
    _s.fcPlcfBkfFactoid = in.readuint32();
    _s.lcbPlcfBkfFactoid = in.readuint32();
    _s.fcPlcfcookie = in.readuint32();
    _s.lcbPlcfcookie = in.readuint32();
    _s.fcPlcfBklFactoid = in.readuint32();
    _s.lcbPlcfBklFactoid = in.readuint32();
    _s.fcFactoidData = in.readuint32();
    _s.lcbFactoidData = in.readuint32();
    _s.fcDocUndo = in.readuint32();
    _s.lcbDocUndo = in.readuint32();
    _s.fcSttbfBkmkFcc = in.readuint32();
    _s.lcbSttbfBkmkFcc = in.readuint32();
    _s.fcPlcfBkfFcc = in.readuint32();
    _s.lcbPlcfBkfFcc = in.readuint32();
    _s.fcPlcfBklFcc = in.readuint32();
    _s.lcbPlcfBklFcc = in.readuint32();
    _s.fcSttbfbkmkBPRepairs = in.readuint32();
    _s.lcbSttbfbkmkBPRepairs = in.readuint32();
    _s.fcPlcfbkfBPRepairs = in.readuint32();
    _s.lcbPlcfbkfBPRepairs = in.readuint32();
    _s.fcPlcfbklBPRepairs = in.readuint32();
    _s.lcbPlcfbklBPRepairs = in.readuint32();
    _s.fcPmsNew = in.readuint32();
    _s.lcbPmsNew = in.readuint32();
    _s.fcODSO = in.readuint32();
    _s.lcbODSO = in.readuint32();
    _s.fcPlcfpmiOldXP = in.readuint32();
    _s.lcbPlcfpmiOldXP = in.readuint32();
    _s.fcPlcfpmiNewXP = in.readuint32();
    _s.lcbPlcfpmiNewXP = in.readuint32();
    _s.fcPlcfpmiMixedXP = in.readuint32();
    _s.lcbPlcfpmiMixedXP = in.readuint32();
    _s.fcUnused2 = in.readuint32();
    _s.lcbUnused2 = in.readuint32();
    _s.fcPlcffactoid = in.readuint32();
    _s.lcbPlcffactoid = in.readuint32();
}
void MSO::parseLPStshi(LEInputStream& in, LPStshi& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.cbSthi = in.readuint16();
    _c = _s.cbSthi;
    _s.stshi.resize(_c);
    in.readBytes(_s.stshi);
}
void MSO::parseLPStd(LEInputStream& in, LPStd& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.cbStd = in.readuint16();
    _c = _s.cbStd;
    _s.std.resize(_c);
    in.readBytes(_s.std);
    _s._has_padding = _s.cbStd%2==1;
    if (_s._has_padding) {
        _s.padding = in.readuint8();
    }
}
void MSO::parsePlcfSed(LEInputStream& in, PlcfSed& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _c = 2;
    _s.aCP.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.aCP[_i] = in.readuint32();
    }
    _c = 1;
    for (int _i=0; _i<_c; ++_i) {
        _s.aSed.append(Sed(&_s));
        parseSed(in, _s.aSed[_i]);
    }
}
void MSO::parseSed(LEInputStream& in, Sed& _s) {
    _s.streamOffset = in.getPosition();
    _s.fn = in.readuint16();
    _s.fcSepx = in.readint32();
    _s.fnMpr = in.readuint16();
    _s.fcMpr = in.readuint32();
}
void MSO::parsePlcfhdd(LEInputStream& in, Plcfhdd& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _c = 13;
    _s.aCP.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.aCP[_i] = in.readuint32();
    }
}
void MSO::parsePlcBteChpx(LEInputStream& in, PlcBteChpx& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _c = 2;
    _s.aCP.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.aCP[_i] = in.readuint32();
    }
    _c = 1;
    _s.aPnBteChpx.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.aPnBteChpx[_i] = in.readuint32();
    }
}
void MSO::parsePlcfBtePapx(LEInputStream& in, PlcfBtePapx& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _c = 2;
    _s.aCP.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.aCP[_i] = in.readuint32();
    }
    _c = 1;
    _s.aPnBteChpx.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.aPnBteChpx[_i] = in.readuint32();
    }
}
void MSO::parseTcg(LEInputStream& in, Tcg& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.nTcgVer = in.readuint8();
    if (!(((quint8)_s.nTcgVer) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.nTcgVer) == 0");
    }
    _c = 11;
    _s.todo.resize(_c);
    in.readBytes(_s.todo);
}
void MSO::parsePrcData(LEInputStream& in, PrcData& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.cbGrpprl = in.readint16();
    if (!(((qint16)_s.cbGrpprl)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint16)_s.cbGrpprl)>=0");
    }
    if (!(((qint16)_s.cbGrpprl)<=16290)) {
        throw IncorrectValueException(in.getPosition(), "((qint16)_s.cbGrpprl)<=16290");
    }
    if (!(((qint16)_s.cbGrpprl)%2==0)) {
        throw IncorrectValueException(in.getPosition(), "((qint16)_s.cbGrpprl)%2==0");
    }
    _c = _s.cbGrpprl/2;
    for (int _i=0; _i<_c; ++_i) {
        _s.GrpPrl.append(Sprm(&_s));
        parseSprm(in, _s.GrpPrl[_i]);
    }
}
void MSO::parseSprm(LEInputStream& in, Sprm& _s) {
    _s.streamOffset = in.getPosition();
    _s.ispmd = in.readuint9();
    _s.fSpec = in.readbit();
    _s.sgc = in.readuint3();
    _s.spra = in.readuint3();
}
void MSO::parsePcdt(LEInputStream& in, Pcdt& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.clxt = in.readuint8();
    if (!(((quint8)_s.clxt) == 2)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.clxt) == 2");
    }
    _s.lcb = in.readuint32();
    _c = _s.lcb/8;
    for (int _i=0; _i<_c; ++_i) {
        _s.PlcPcd.append(Pcd(&_s));
        parsePcd(in, _s.PlcPcd[_i]);
    }
}
void MSO::parseFCompressed(LEInputStream& in, FCompressed& _s) {
    _s.streamOffset = in.getPosition();
    _s.fc = in.readuint30();
    _s.fCompressed = in.readbit();
    _s.r1 = in.readbit();
}
void MSO::parsePrm0(LEInputStream& in, Prm0& _s) {
    _s.streamOffset = in.getPosition();
    _s.fComplex = in.readbit();
    if (!(((bool)_s.fComplex) == false)) {
        throw IncorrectValueException(in.getPosition(), "((bool)_s.fComplex) == false");
    }
    _s.isprm = in.readuint7();
    _s.val = in.readuint8();
}
void MSO::parsePrm1(LEInputStream& in, Prm1& _s) {
    _s.streamOffset = in.getPosition();
    _s.fComplex = in.readbit();
    if (!(((bool)_s.fComplex) == true)) {
        throw IncorrectValueException(in.getPosition(), "((bool)_s.fComplex) == true");
    }
    _s.igrpprl = in.readuint15();
}
void MSO::parseSttbfFfn(LEInputStream& in, SttbfFfn& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.cData = in.readuint16();
    _s.cbExtra = in.readuint16();
    if (!(((quint16)_s.cbExtra) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.cbExtra) == 0");
    }
    _c = _s.cData;
    for (int _i=0; _i<_c; ++_i) {
        _s.data.append(SttbfFfnEntry(&_s));
        parseSttbfFfnEntry(in, _s.data[_i]);
    }
}
void MSO::parseSttbfFfnEntry(LEInputStream& in, SttbfFfnEntry& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.cchData = in.readuint8();
    _c = _s.cchData;
    _s.Data.resize(_c);
    in.readBytes(_s.Data);
}
void MSO::parseCodePageString(LEInputStream& in, CodePageString& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.size = in.readuint32();
    _c = 4*(_s.size/4)+((_s.size%4!=0)?4:0);
    _s.characters.resize(_c);
    in.readBytes(_s.characters);
}
void MSO::parseFILETIME(LEInputStream& in, FILETIME& _s) {
    _s.streamOffset = in.getPosition();
    _s.dwLowDateTime = in.readuint32();
    _s.dwHighDateTime = in.readuint32();
}
void MSO::parseClipboardData(LEInputStream& in, ClipboardData& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.size = in.readuint32();
    _s.format = in.readuint32();
    _c = 4*(_s.size/4)+((_s.size%4!=0)?4:0)-4;
    _s.data.resize(_c);
    in.readBytes(_s.data);
}
void MSO::parsePropertyIdentifierAndOffset(LEInputStream& in, PropertyIdentifierAndOffset& _s) {
    _s.streamOffset = in.getPosition();
    _s.propertyIdentifier = in.readuint32();
    _s.offset = in.readuint32();
}
void MSO::parseTypedPropertyValue(LEInputStream& in, TypedPropertyValue& _s) {
    _s.streamOffset = in.getPosition();
    _s.type = in.readuint16();
    _s.padding = in.readuint16();
    _s._has_vt_I2 = _s.type==2;
    if (_s._has_vt_I2) {
        _s.vt_I2 = in.readuint16();
    }
    _s._has_paddingI2 = _s.type==2;
    if (_s._has_paddingI2) {
        _s.paddingI2 = in.readuint16();
    }
    _s._has_vg_ERROR = _s.type==10;
    if (_s._has_vg_ERROR) {
        _s.vg_ERROR = in.readuint32();
    }
    if (_s.type==30) {
        _s.vt_lpstr = QSharedPointer<CodePageString>(new CodePageString(&_s));
        parseCodePageString(in, *_s.vt_lpstr.data());
    }
    if (_s.type==64) {
        _s.vg_FILETIME = QSharedPointer<FILETIME>(new FILETIME(&_s));
        parseFILETIME(in, *_s.vg_FILETIME.data());
    }
    if (_s.type==71) {
        _s.vg_CF = QSharedPointer<ClipboardData>(new ClipboardData(&_s));
        parseClipboardData(in, *_s.vg_CF.data());
    }
}
void MSO::parsePropertySet(LEInputStream& in, PropertySet& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    _s.size = in.readuint32();
    _s.numProperties = in.readuint32();
    _c = _s.numProperties;
    for (int _i=0; _i<_c; ++_i) {
        _s.propertyIdentifierAndOffset.append(PropertyIdentifierAndOffset(&_s));
        parsePropertyIdentifierAndOffset(in, _s.propertyIdentifierAndOffset[_i]);
    }
    _c = _s.numProperties;
    for (int _i=0; _i<_c; ++_i) {
        _s.property.append(TypedPropertyValue(&_s));
        parseTypedPropertyValue(in, _s.property[_i]);
    }
}
void MSO::parsePropertySetStream(LEInputStream& in, PropertySetStream& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    bool _atend;
    _s.byteOrder = in.readuint16();
    if (!(((quint16)_s.byteOrder) == 0xFFFE)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.byteOrder) == 0xFFFE");
    }
    _s.version = in.readuint16();
    _s.systemIdentifier = in.readuint32();
    _c = 16;
    _s.clsID.resize(_c);
    in.readBytes(_s.clsID);
    _s.numPropertySets = in.readuint32();
    if (!(((quint32)_s.numPropertySets) == 1 || ((quint32)_s.numPropertySets) == 2)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.numPropertySets) == 1 || ((quint32)_s.numPropertySets) == 2");
    }
    _c = 16;
    _s.fmtID0.resize(_c);
    in.readBytes(_s.fmtID0);
    _s.offset0 = in.readuint32();
    _s._has_fmtID1 = _s.numPropertySets==2;
    if (_s._has_fmtID1) {
        _c = 16;
        _s.fmtID1.resize(_c);
        in.readBytes(_s.fmtID1);
    }
    _s._has_offset1 = _s.numPropertySets==2;
    if (_s._has_offset1) {
        _s.offset1 = in.readuint32();
    }
    parsePropertySet(in, _s.propertySet1);
    if (_s.numPropertySets==2) {
        _s.propertySet2 = QSharedPointer<PropertySet>(new PropertySet(&_s));
        parsePropertySet(in, *_s.propertySet2.data());
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.padding.append(Byte(&_s));
            parseByte(in, _s.padding.last());
        } catch(IncorrectValueException _e) {
            _s.padding.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.padding.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseSummaryInformationPropertySetStream(LEInputStream& in, SummaryInformationPropertySetStream& _s) {
    _s.streamOffset = in.getPosition();
    parsePropertySetStream(in, _s.propertySet);
    if (!(_s.propertySet.version == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.propertySet.version == 0");
    }
}
void MSO::parseDocumentSummaryInformationPropertySetStream(LEInputStream& in, DocumentSummaryInformationPropertySetStream& _s) {
    _s.streamOffset = in.getPosition();
    parsePropertySetStream(in, _s.propertySet);
    if (!(_s.propertySet.version == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.propertySet.version == 0");
    }
}
void MSO::parsePicturesStream(LEInputStream& in, PicturesStream& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseOfficeArtBStoreDelay(in, _s.anon1);
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.trailing.append(Byte(&_s));
            parseByte(in, _s.trailing.last());
        } catch(IncorrectValueException _e) {
            _s.trailing.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.trailing.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseOfficeArtMetafileHeader(LEInputStream& in, OfficeArtMetafileHeader& _s) {
    _s.streamOffset = in.getPosition();
    _s.cbSize = in.readuint32();
    parseRECT(in, _s.rcBounds);
    parsePOINT(in, _s.ptSize);
    _s.cbsave = in.readuint32();
    _s.compression = in.readuint8();
    _s.filter = in.readuint8();
}
void MSO::parseSoundCollectionContainer(LEInputStream& in, SoundCollectionContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 5");
    }
    if (!(_s.rh.recType == 0x7E4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x7E4");
    }
    parseSoundCollectionAtom(in, _s.soundCollectionAtom);
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen-12, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgSoundContainer.append(SoundContainer(&_s));
        parseSoundContainer(in, _s.rgSoundContainer.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseSlideHeadersFootersContainer(LEInputStream& in, SlideHeadersFootersContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 3");
    }
    if (!(_s.rh.recType == 0xFD9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFD9");
    }
    parseHeadersFootersAtom(in, _s.hfAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0)&&(_optionCheck.recLen<=510);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.userDateAtom = QSharedPointer<UserDateAtom>(new UserDateAtom(&_s));
            parseUserDateAtom(in, *_s.userDateAtom.data());
        } catch(IncorrectValueException _e) {
            _s.userDateAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.userDateAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 2)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.footerAtom = QSharedPointer<FooterAtom>(new FooterAtom(&_s));
            parseFooterAtom(in, *_s.footerAtom.data());
        } catch(IncorrectValueException _e) {
            _s.footerAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.footerAtom.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseNotesHeadersFootersContainer(LEInputStream& in, NotesHeadersFootersContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 4");
    }
    if (!(_s.rh.recType == 0xFD9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFD9");
    }
    parseHeadersFootersAtom(in, _s.hfAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0)&&(_optionCheck.recLen<=510);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.userDateAtom = QSharedPointer<UserDateAtom>(new UserDateAtom(&_s));
            parseUserDateAtom(in, *_s.userDateAtom.data());
        } catch(IncorrectValueException _e) {
            _s.userDateAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.userDateAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 1)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.headerAtom = QSharedPointer<HeaderAtom>(new HeaderAtom(&_s));
            parseHeaderAtom(in, *_s.headerAtom.data());
        } catch(IncorrectValueException _e) {
            _s.headerAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.headerAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 2)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.footerAtom = QSharedPointer<FooterAtom>(new FooterAtom(&_s));
            parseFooterAtom(in, *_s.footerAtom.data());
        } catch(IncorrectValueException _e) {
            _s.footerAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.footerAtom.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseScalingStruct(LEInputStream& in, ScalingStruct& _s) {
    _s.streamOffset = in.getPosition();
    parseRatioStruct(in, _s.x);
    parseRatioStruct(in, _s.y);
}
void MSO::parseTextPFException9(LEInputStream& in, TextPFException9& _s) {
    _s.streamOffset = in.getPosition();
    parsePFMasks(in, _s.masks);
    if (!(_s.masks.hasBullet == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.hasBullet == false");
    }
    if (!(_s.masks.bulletHasFont == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletHasFont == false");
    }
    if (!(_s.masks.bulletHasColor == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletHasColor == false");
    }
    if (!(_s.masks.bulletHasSize == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletHasSize == false");
    }
    if (!(_s.masks.bulletFont == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletFont == false");
    }
    if (!(_s.masks.bulletColor == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletColor == false");
    }
    if (!(_s.masks.bulletSize == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletSize == false");
    }
    if (!(_s.masks.bulletChar == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletChar == false");
    }
    if (!(_s.masks.leftMargin == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.leftMargin == false");
    }
    if (!(_s.masks.indent == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.indent == false");
    }
    if (!(_s.masks.align == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.align == false");
    }
    if (!(_s.masks.lineSpacing == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.lineSpacing == false");
    }
    if (!(_s.masks.spaceBefore == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.spaceBefore == false");
    }
    if (!(_s.masks.spaceAfter == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.spaceAfter == false");
    }
    if (!(_s.masks.defaultTabSize == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.defaultTabSize == false");
    }
    if (!(_s.masks.fontAlign == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.fontAlign == false");
    }
    if (!(_s.masks.charWrap == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.charWrap == false");
    }
    if (!(_s.masks.wordWrap == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.wordWrap == false");
    }
    if (!(_s.masks.overflow == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.overflow == false");
    }
    if (!(_s.masks.tabStops == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.tabStops == false");
    }
    if (!(_s.masks.textDirection == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.textDirection == false");
    }
    _s._has_bulletBlipRef = _s.masks.bulletBlip;
    if (_s._has_bulletBlipRef) {
        _s.bulletBlipRef = in.readuint16();
    }
    _s._has_fBulletHasAutoNumber = _s.masks.bulletHasScheme;
    if (_s._has_fBulletHasAutoNumber) {
        _s.fBulletHasAutoNumber = in.readuint16();
        if (!(((quint16)_s.fBulletHasAutoNumber) == 0 || ((quint16)_s.fBulletHasAutoNumber) == 1)) {
            throw IncorrectValueException(in.getPosition(), "((quint16)_s.fBulletHasAutoNumber) == 0 || ((quint16)_s.fBulletHasAutoNumber) == 1");
        }
    }
    if (_s.masks.bulletScheme) {
        _s.bulletAutoNumberScheme = QSharedPointer<TextAutoNumberScheme>(new TextAutoNumberScheme(&_s));
        parseTextAutoNumberScheme(in, *_s.bulletAutoNumberScheme.data());
    }
}
void MSO::parseTextCFException9(LEInputStream& in, TextCFException9& _s) {
    _s.streamOffset = in.getPosition();
    parseCFMasks(in, _s.masks);
    if (!(_s.masks.bold == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bold == false");
    }
    if (!(_s.masks.italic == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.italic == false");
    }
    if (!(_s.masks.underline == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.underline == false");
    }
    if (!(_s.masks.shadow == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.shadow == false");
    }
    if (!(_s.masks.fehint == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.fehint == false");
    }
    if (!(_s.masks.kumi == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.kumi == false");
    }
    if (!(_s.masks.emboss == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.emboss == false");
    }
    if (!(_s.masks.reserved == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.reserved == 0");
    }
    if (!(_s.masks.typeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.typeface == false");
    }
    if (!(_s.masks.size == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.size == false");
    }
    if (!(_s.masks.color == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.color == false");
    }
    if (!(_s.masks.position == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.position == false");
    }
    if (!(_s.masks.oldEATypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.oldEATypeface == false");
    }
    if (!(_s.masks.ansiTypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.ansiTypeface == false");
    }
    if (!(_s.masks.symbolTypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.symbolTypeface == false");
    }
    if (!(_s.masks.newEATypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.newEATypeface == false");
    }
    if (!(_s.masks.csTypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.csTypeface == false");
    }
    if (!(_s.masks.pp11ext == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.pp11ext == false");
    }
    _s._has_pp10runid = _s.masks.pp10ext;
    if (_s._has_pp10runid) {
        _s.pp10runid = in.readuint4();
    }
    _s._has_unuseda = _s.masks.pp10ext;
    if (_s._has_unuseda) {
        _s.unuseda = in.readuint20();
    }
    _s._has_unusedb = _s.masks.pp10ext;
    if (_s._has_unusedb) {
        _s.unusedb = in.readuint8();
    }
}
void MSO::parseTextDefaults9Atom(LEInputStream& in, TextDefaults9Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x00)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x00");
    }
    if (!(_s.rh.recType == 0x0FB0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FB0");
    }
    parseTextCFException9(in, _s.cf9);
    parseTextPFException9(in, _s.pf9);
}
void MSO::parseKinsoku9Container(LEInputStream& in, Kinsoku9Container& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x2");
    }
    if (!(_s.rh.recType == 0x0FC8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FC8");
    }
    parseKinsoku9Atom(in, _s.kinsoku9Atom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.kinsokuLeadingAtom = QSharedPointer<KinsokuLeadingAtom>(new KinsokuLeadingAtom(&_s));
            parseKinsokuLeadingAtom(in, *_s.kinsokuLeadingAtom.data());
        } catch(IncorrectValueException _e) {
            _s.kinsokuLeadingAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.kinsokuLeadingAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 1 )&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.kinsokuFollowingAtom = QSharedPointer<KinsokuFollowingAtom>(new KinsokuFollowingAtom(&_s));
            parseKinsokuFollowingAtom(in, *_s.kinsokuFollowingAtom.data());
        } catch(IncorrectValueException _e) {
            _s.kinsokuFollowingAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.kinsokuFollowingAtom.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseOutlineTextProps9Entry(LEInputStream& in, OutlineTextProps9Entry& _s) {
    _s.streamOffset = in.getPosition();
    parseOutlineTextPropsHeaderExAtom(in, _s.outlineTextHeaderAtom);
    parseStyleTextProp9Atom(in, _s.styleTextProp9Atom);
}
void MSO::parseTextCFException10(LEInputStream& in, TextCFException10& _s) {
    _s.streamOffset = in.getPosition();
    parseCFMasks(in, _s.masks);
    if (!(_s.masks.bold == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bold == false");
    }
    if (!(_s.masks.italic == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.italic == false");
    }
    if (!(_s.masks.underline == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.underline == false");
    }
    if (!(_s.masks.shadow == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.shadow == false");
    }
    if (!(_s.masks.fehint == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.fehint == false");
    }
    if (!(_s.masks.kumi == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.kumi == false");
    }
    if (!(_s.masks.emboss == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.emboss == false");
    }
    if (!(_s.masks.reserved == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.reserved == 0");
    }
    if (!(_s.masks.typeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.typeface == false");
    }
    if (!(_s.masks.size == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.size == false");
    }
    if (!(_s.masks.color == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.color == false");
    }
    if (!(_s.masks.position == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.position == false");
    }
    if (!(_s.masks.pp10ext == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.pp10ext == false");
    }
    if (!(_s.masks.oldEATypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.oldEATypeface == false");
    }
    if (!(_s.masks.ansiTypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.ansiTypeface == false");
    }
    if (!(_s.masks.symbolTypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.symbolTypeface == false");
    }
    _s._has_newEAFontRef = _s.masks.newEATypeface;
    if (_s._has_newEAFontRef) {
        _s.newEAFontRef = in.readuint16();
    }
    _s._has_csFontRef = _s.masks.csTypeface;
    if (_s._has_csFontRef) {
        _s.csFontRef = in.readuint16();
    }
    _s._has_pp11ext = _s.masks.pp11ext;
    if (_s._has_pp11ext) {
        _s.pp11ext = in.readuint32();
    }
}
void MSO::parseTextDefaults10Atom(LEInputStream& in, TextDefaults10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FB4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FB4");
    }
    parseTextCFException10(in, _s.cf10);
}
void MSO::parseCommentIndex10Container(LEInputStream& in, CommentIndex10Container& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x2EE4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EE4");
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen<=104)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.authorNameAtom = QSharedPointer<AuthorNameAtom>(new AuthorNameAtom(&_s));
            parseAuthorNameAtom(in, *_s.authorNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.authorNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.authorNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x2EE5)&&(_optionCheck.recLen == 0x08);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.authorIndexAtom = QSharedPointer<CommentIndex10Atom>(new CommentIndex10Atom(&_s));
            parseCommentIndex10Atom(in, *_s.authorIndexAtom.data());
        } catch(IncorrectValueException _e) {
            _s.authorIndexAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.authorIndexAtom.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseOutlineTextProps10Entry(LEInputStream& in, OutlineTextProps10Entry& _s) {
    _s.streamOffset = in.getPosition();
    parseOutlineTextPropsHeaderExAtom(in, _s.outlineTextHeaderAtom);
    parseStyleTextProp10Atom(in, _s.styleTextProp10Atom);
}
void MSO::parsePP11DocBinaryTagExtension(LEInputStream& in, PP11DocBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _c = 16;
    _s.tagName.resize(_c);
    in.readBytes(_s.tagName);
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0x0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    parseSmartTagStore11Container(in, _s.smartTagStore11);
    parseOutlineTextProps11Container(in, _s.outlineTextProps);
}
void MSO::parseUnknownBinaryTag(LEInputStream& in, UnknownBinaryTag& _s) {
    _s.streamOffset = in.getPosition();
    parseTagNameAtom(in, _s.tagNameAtom);
    parseBinaryTagDataBlob(in, _s.tagData);
}
void MSO::parseNoZoomViewInfoAtom(LEInputStream& in, NoZoomViewInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x3FD)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3FD");
    }
    if (!(_s.rh.recLen == 0x34)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x34");
    }
    parseScalingStruct(in, _s.curScale);
    _c = 24;
    _s.unused1.resize(_c);
    in.readBytes(_s.unused1);
    parsePointStruct(in, _s.origin);
    _s.unused2 = in.readuint8();
    _s.fDraftMode = in.readuint8();
    _s.unused3 = in.readuint16();
}
void MSO::parseVBAInfoContainer(LEInputStream& in, VBAInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x3FF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3FF");
    }
    if (!(_s.rh.recLen == 0x14)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x14");
    }
    parseVBAInfoAtom(in, _s.vbaInfoAtom);
}
void MSO::parseNormalViewSetInfoAtom(LEInputStream& in, NormalViewSetInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x415)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x415");
    }
    if (!(_s.rh.recLen == 0x14)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x14");
    }
    parseRatioStruct(in, _s.leftPortion);
    parseRatioStruct(in, _s.topPortion);
    _s.vertBarState = in.readuint8();
    _s.horizBarState = in.readuint8();
    _s.fPreferSingleSet = in.readuint8();
    if (!(((quint8)_s.fPreferSingleSet) == 0 || ((quint8)_s.fPreferSingleSet) == 1)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.fPreferSingleSet) == 0 || ((quint8)_s.fPreferSingleSet) == 1");
    }
    _s.fHideThumbnails = in.readbit();
    _s.fBarSnapped = in.readbit();
    _s.reserved = in.readuint6();
    if (!(((quint8)_s.reserved) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved) == 0");
    }
}
void MSO::parseTextContainerMeta(LEInputStream& in, TextContainerMeta& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    RecordHeader _choice(&_s);
    parseRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0)&&(_choice.recType == 0xFD8)&&(_choice.recLen == 4)) {
        _s.meta = TextContainerMeta::choice242357012(new SlideNumberMCAtom(&_s));
        parseSlideNumberMCAtom(in, *(SlideNumberMCAtom*)_s.meta.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0xFF7)&&(_choice.recLen == 8)) {
        _s.meta = TextContainerMeta::choice242357012(new DateTimeMCAtom(&_s));
        parseDateTimeMCAtom(in, *(DateTimeMCAtom*)_s.meta.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0xFF8)&&(_choice.recLen == 4)) {
        _s.meta = TextContainerMeta::choice242357012(new GenericDateMCAtom(&_s));
        parseGenericDateMCAtom(in, *(GenericDateMCAtom*)_s.meta.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0xFF9)&&(_choice.recLen == 4)) {
        _s.meta = TextContainerMeta::choice242357012(new HeaderMCAtom(&_s));
        parseHeaderMCAtom(in, *(HeaderMCAtom*)_s.meta.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0xFFA)&&(_choice.recLen == 4)) {
        _s.meta = TextContainerMeta::choice242357012(new FooterMCAtom(&_s));
        parseFooterMCAtom(in, *(FooterMCAtom*)_s.meta.data());
    } else {
        _s.meta = TextContainerMeta::choice242357012(new RTFDateTimeMCAtom(&_s));
        parseRTFDateTimeMCAtom(in, *(RTFDateTimeMCAtom*)_s.meta.data());
    }
}
void MSO::parseSlidePersistAtom(LEInputStream& in, SlidePersistAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x3F3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3F3");
    }
    if (!(_s.rh.recLen == 0x14)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x14");
    }
    _s.persistIdRef = in.readuint32();
    _s.reserved1 = in.readbit();
    if (!(((bool)_s.reserved1) == false)) {
        throw IncorrectValueException(in.getPosition(), "((bool)_s.reserved1) == false");
    }
    _s.fShouldCollapse = in.readbit();
    _s.fNonOutlineData = in.readbit();
    _s.reserved2 = in.readuint5();
    if (!(((quint8)_s.reserved2) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved2) == 0");
    }
    _s.reserved3 = in.readuint8();
    if (!(((quint8)_s.reserved3) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.reserved3) == 0");
    }
    _s.reserved4 = in.readuint16();
    if (!(((quint16)_s.reserved4) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.reserved4) == 0");
    }
    _s.cTexts = in.readint32();
    if (!(((qint32)_s.cTexts)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.cTexts)>=0");
    }
    if (!(((qint32)_s.cTexts)<=8)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.cTexts)<=8");
    }
    parseSlideId(in, _s.slideId);
    _s.reserved5 = in.readuint32();
    if (!(((quint32)_s.reserved5) == 0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.reserved5) == 0");
    }
}
void MSO::parseTextRuler(LEInputStream& in, TextRuler& _s) {
    _s.streamOffset = in.getPosition();
    _s.fDefaultTabSize = in.readbit();
    _s.fCLevels = in.readbit();
    _s.fTabStops = in.readbit();
    _s.fLeftMargin1 = in.readbit();
    _s.fLeftMargin2 = in.readbit();
    _s.fLeftMargin3 = in.readbit();
    _s.fLeftMargin4 = in.readbit();
    _s.fLeftMargin5 = in.readbit();
    _s.fIndent1 = in.readbit();
    _s.fIndent2 = in.readbit();
    _s.fIndent3 = in.readbit();
    _s.fIndent4 = in.readbit();
    _s.fIndent5 = in.readbit();
    _s.reserved1 = in.readuint3();
    _s.reserved2 = in.readuint16();
    _s._has_cLevels = _s.fCLevels;
    if (_s._has_cLevels) {
        _s.cLevels = in.readint16();
    }
    _s._has_defaultTabSize = _s.fDefaultTabSize;
    if (_s._has_defaultTabSize) {
        _s.defaultTabSize = in.readuint16();
    }
    if (_s.fTabStops) {
        _s.tabs = QSharedPointer<TabStops>(new TabStops(&_s));
        parseTabStops(in, *_s.tabs.data());
    }
    _s._has_leftMargin1 = _s.fLeftMargin1;
    if (_s._has_leftMargin1) {
        _s.leftMargin1 = in.readuint16();
    }
    _s._has_indent1 = _s.fIndent1;
    if (_s._has_indent1) {
        _s.indent1 = in.readuint16();
    }
    _s._has_leftMargin2 = _s.fLeftMargin2;
    if (_s._has_leftMargin2) {
        _s.leftMargin2 = in.readuint16();
    }
    _s._has_indent2 = _s.fIndent2;
    if (_s._has_indent2) {
        _s.indent2 = in.readuint16();
    }
    _s._has_leftMargin3 = _s.fLeftMargin3;
    if (_s._has_leftMargin3) {
        _s.leftMargin3 = in.readuint16();
    }
    _s._has_indent3 = _s.fIndent3;
    if (_s._has_indent3) {
        _s.indent3 = in.readuint16();
    }
    _s._has_leftMargin4 = _s.fLeftMargin4;
    if (_s._has_leftMargin4) {
        _s.leftMargin4 = in.readuint16();
    }
    _s._has_indent4 = _s.fIndent4;
    if (_s._has_indent4) {
        _s.indent4 = in.readuint16();
    }
    _s._has_leftMargin5 = _s.fLeftMargin5;
    if (_s._has_leftMargin5) {
        _s.leftMargin5 = in.readuint16();
    }
    _s._has_indent5 = _s.fIndent5;
    if (_s._has_indent5) {
        _s.indent5 = in.readuint16();
    }
}
void MSO::parseTextPFException(LEInputStream& in, TextPFException& _s) {
    _s.streamOffset = in.getPosition();
    parsePFMasks(in, _s.masks);
    if (!(_s.masks.bulletBlip == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletBlip == false");
    }
    if (!(_s.masks.bulletHasScheme == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletHasScheme == false");
    }
    if (!(_s.masks.bulletScheme == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.bulletScheme == false");
    }
    if (_s.masks.hasBullet||_s.masks.bulletHasFont||_s.masks.bulletHasColor||_s.masks.bulletHasSize) {
        _s.bulletFlags = QSharedPointer<BulletFlags>(new BulletFlags(&_s));
        parseBulletFlags(in, *_s.bulletFlags.data());
    }
    _s._has_bulletChar = _s.masks.bulletChar;
    if (_s._has_bulletChar) {
        _s.bulletChar = in.readint16();
    }
    _s._has_bulletFontRef = _s.masks.bulletFont;
    if (_s._has_bulletFontRef) {
        _s.bulletFontRef = in.readuint16();
    }
    _s._has_bulletSize = _s.masks.bulletSize;
    if (_s._has_bulletSize) {
        _s.bulletSize = in.readint16();
    }
    if (_s.masks.bulletColor) {
        _s.bulletColor = QSharedPointer<ColorIndexStruct>(new ColorIndexStruct(&_s));
        parseColorIndexStruct(in, *_s.bulletColor.data());
    }
    _s._has_textAlignment = _s.masks.align;
    if (_s._has_textAlignment) {
        _s.textAlignment = in.readuint16();
    }
    _s._has_lineSpacing = _s.masks.lineSpacing;
    if (_s._has_lineSpacing) {
        _s.lineSpacing = in.readint16();
    }
    _s._has_spaceBefore = _s.masks.spaceBefore;
    if (_s._has_spaceBefore) {
        _s.spaceBefore = in.readint16();
    }
    _s._has_spaceAfter = _s.masks.spaceAfter;
    if (_s._has_spaceAfter) {
        _s.spaceAfter = in.readint16();
    }
    _s._has_leftMargin = _s.masks.leftMargin;
    if (_s._has_leftMargin) {
        _s.leftMargin = in.readuint16();
    }
    _s._has_indent = _s.masks.indent;
    if (_s._has_indent) {
        _s.indent = in.readuint16();
    }
    _s._has_defaultTabSize = _s.masks.defaultTabSize;
    if (_s._has_defaultTabSize) {
        _s.defaultTabSize = in.readuint16();
    }
    if (_s.masks.tabStops) {
        _s.tabStops = QSharedPointer<TabStops>(new TabStops(&_s));
        parseTabStops(in, *_s.tabStops.data());
    }
    _s._has_fontAlign = _s.masks.fontAlign;
    if (_s._has_fontAlign) {
        _s.fontAlign = in.readuint16();
    }
    if (_s.masks.charWrap||_s.masks.wordWrap||_s.masks.overflow) {
        _s.wrapFlags = QSharedPointer<PFWrapFlags>(new PFWrapFlags(&_s));
        parsePFWrapFlags(in, *_s.wrapFlags.data());
    }
    _s._has_textDirection = _s.masks.textDirection;
    if (_s._has_textDirection) {
        _s.textDirection = in.readuint16();
    }
}
void MSO::parseTextCFException(LEInputStream& in, TextCFException& _s) {
    _s.streamOffset = in.getPosition();
    parseCFMasks(in, _s.masks);
    if (!(_s.masks.pp10ext == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.pp10ext == false");
    }
    if (!(_s.masks.newEATypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.newEATypeface == false");
    }
    if (!(_s.masks.csTypeface == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.csTypeface == false");
    }
    if (!(_s.masks.pp11ext == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.masks.pp11ext == false");
    }
    if (_s.masks.bold || _s.masks.italic || _s.masks.underline || _s.masks.shadow || _s.masks.fehint || _s.masks.kumi || _s.masks.emboss || _s.masks.fHasStyle != 0) {
        _s.fontStyle = QSharedPointer<CFStyle>(new CFStyle(&_s));
        parseCFStyle(in, *_s.fontStyle.data());
    }
    _s._has_fontRef = _s.masks.typeface;
    if (_s._has_fontRef) {
        _s.fontRef = in.readuint16();
    }
    _s._has_oldEAFontRef = _s.masks.oldEATypeface;
    if (_s._has_oldEAFontRef) {
        _s.oldEAFontRef = in.readuint16();
    }
    _s._has_ansiFontRef = _s.masks.ansiTypeface;
    if (_s._has_ansiFontRef) {
        _s.ansiFontRef = in.readuint16();
    }
    _s._has_symbolFontRef = _s.masks.symbolTypeface;
    if (_s._has_symbolFontRef) {
        _s.symbolFontRef = in.readuint16();
    }
    _s._has_fontSize = _s.masks.size;
    if (_s._has_fontSize) {
        _s.fontSize = in.readuint16();
        if (!(((quint16)_s.fontSize)>=1)) {
            throw IncorrectValueException(in.getPosition(), "((quint16)_s.fontSize)>=1");
        }
        if (!(((quint16)_s.fontSize)<=4000)) {
            throw IncorrectValueException(in.getPosition(), "((quint16)_s.fontSize)<=4000");
        }
    }
    if (_s.masks.color) {
        _s.color = QSharedPointer<ColorIndexStruct>(new ColorIndexStruct(&_s));
        parseColorIndexStruct(in, *_s.color.data());
    }
    _s._has_position = _s.masks.position;
    if (_s._has_position) {
        _s.position = in.readint16();
        if (!(((qint16)_s.position)>=-100)) {
            throw IncorrectValueException(in.getPosition(), "((qint16)_s.position)>=-100");
        }
        if (!(((qint16)_s.position)<=100)) {
            throw IncorrectValueException(in.getPosition(), "((qint16)_s.position)<=100");
        }
    }
}
void MSO::parseFontCollectionEntry(LEInputStream& in, FontCollectionEntry& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseFontEntityAtom(in, _s.fontEntityAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance<=3)&&(_optionCheck.recType == 0xFB8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.fontEmbedData1 = QSharedPointer<FontEmbedDataBlob>(new FontEmbedDataBlob(&_s));
            parseFontEmbedDataBlob(in, *_s.fontEmbedData1.data());
        } catch(IncorrectValueException _e) {
            _s.fontEmbedData1.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.fontEmbedData1.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance<=3)&&(_optionCheck.recType == 0xFB8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.fontEmbedData2 = QSharedPointer<FontEmbedDataBlob>(new FontEmbedDataBlob(&_s));
            parseFontEmbedDataBlob(in, *_s.fontEmbedData2.data());
        } catch(IncorrectValueException _e) {
            _s.fontEmbedData2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.fontEmbedData2.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance<=3)&&(_optionCheck.recType == 0xFB8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.fontEmbedData3 = QSharedPointer<FontEmbedDataBlob>(new FontEmbedDataBlob(&_s));
            parseFontEmbedDataBlob(in, *_s.fontEmbedData3.data());
        } catch(IncorrectValueException _e) {
            _s.fontEmbedData3.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.fontEmbedData3.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance<=3)&&(_optionCheck.recType == 0xFB8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.fontEmbedData4 = QSharedPointer<FontEmbedDataBlob>(new FontEmbedDataBlob(&_s));
            parseFontEmbedDataBlob(in, *_s.fontEmbedData4.data());
        } catch(IncorrectValueException _e) {
            _s.fontEmbedData4.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.fontEmbedData4.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseKinsokuContainer(LEInputStream& in, KinsokuContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x2");
    }
    if (!(_s.rh.recType == 0x0FC8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FC8");
    }
    parseKinsokuAtom(in, _s.kinsokuAtom);
    if (_s.kinsokuAtom.level==2) {
        _s.kinsokuLeadingAtom = QSharedPointer<KinsokuLeadingAtom>(new KinsokuLeadingAtom(&_s));
        parseKinsokuLeadingAtom(in, *_s.kinsokuLeadingAtom.data());
    }
    if (_s.kinsokuAtom.level==2) {
        _s.kinsokuFollowingAtom = QSharedPointer<KinsokuFollowingAtom>(new KinsokuFollowingAtom(&_s));
        parseKinsokuFollowingAtom(in, *_s.kinsokuFollowingAtom.data());
    }
}
void MSO::parseTextSIException(LEInputStream& in, TextSIException& _s) {
    _s.streamOffset = in.getPosition();
    _s.spell = in.readbit();
    _s.lang = in.readbit();
    _s.altLang = in.readbit();
    _s.unused1 = in.readbit();
    _s.unused2 = in.readbit();
    _s.fPp10ext = in.readbit();
    _s.fBidi = in.readbit();
    _s.unused3 = in.readbit();
    _s.reserved1 = in.readbit();
    _s.smartTag = in.readbit();
    _s.reserved2a = in.readuint2();
    _s.reserved2b = in.readuint20();
    _s._has_spellInfo = _s.spell;
    if (_s._has_spellInfo) {
        _s.spellInfo = in.readuint16();
    }
    _s._has_lid = _s.lang;
    if (_s._has_lid) {
        _s.lid = in.readuint16();
    }
    _s._has_altLid = _s.altLang;
    if (_s._has_altLid) {
        _s.altLid = in.readuint16();
    }
    _s._has_bidi = _s.fBidi;
    if (_s._has_bidi) {
        _s.bidi = in.readint16();
        if (!(((qint16)_s.bidi) == 0 || ((qint16)_s.bidi) == 1)) {
            throw IncorrectValueException(in.getPosition(), "((qint16)_s.bidi) == 0 || ((qint16)_s.bidi) == 1");
        }
    }
    _s._has_pp10runid = _s.fPp10ext;
    if (_s._has_pp10runid) {
        _s.pp10runid = in.readuint4();
    }
    _s._has_reserved3a = _s.fPp10ext;
    if (_s._has_reserved3a) {
        _s.reserved3a = in.readuint4();
    }
    _s._has_reserved3b = _s.fPp10ext;
    if (_s._has_reserved3b) {
        _s.reserved3b = in.readuint16();
    }
    _s._has_reserved3bc = _s.fPp10ext;
    if (_s._has_reserved3bc) {
        _s.reserved3bc = in.readuint7();
    }
    _s._has_grammarError = _s.fPp10ext;
    if (_s._has_grammarError) {
        _s.grammarError = in.readbit();
    }
    if (_s.smartTag) {
        _s.smartTags = QSharedPointer<SmartTags>(new SmartTags(&_s));
        parseSmartTags(in, *_s.smartTags.data());
    }
}
void MSO::parseTextMasterStyleLevel(LEInputStream& in, TextMasterStyleLevel& _s) {
    _s.streamOffset = in.getPosition();
    parseTextPFException(in, _s.pf);
    parseTextCFException(in, _s.cf);
}
void MSO::parseDocumentAtom(LEInputStream& in, DocumentAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 1");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x03E9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03E9");
    }
    if (!(_s.rh.recLen == 0x28)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x28");
    }
    parsePointStruct(in, _s.slideSize);
    parsePointStruct(in, _s.notesSize);
    parseRatioStruct(in, _s.serverZoom);
    if (!(_s.serverZoom.numer*_s.serverZoom.denom > 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.serverZoom.numer*_s.serverZoom.denom > 0");
    }
    _s.notesMasterPersistIdRef = in.readuint32();
    _s.handoutMasterPersistIdRef = in.readuint32();
    _s.firstSlideNumber = in.readuint16();
    if (!(((quint16)_s.firstSlideNumber)<10000)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.firstSlideNumber)<10000");
    }
    _s.slideSizeType = in.readuint16();
    if (!(((quint16)_s.slideSizeType) == 0 || ((quint16)_s.slideSizeType) == 1 || ((quint16)_s.slideSizeType) == 2 || ((quint16)_s.slideSizeType) == 3 || ((quint16)_s.slideSizeType) == 4 || ((quint16)_s.slideSizeType) == 5 || ((quint16)_s.slideSizeType) == 6)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.slideSizeType) == 0 || ((quint16)_s.slideSizeType) == 1 || ((quint16)_s.slideSizeType) == 2 || ((quint16)_s.slideSizeType) == 3 || ((quint16)_s.slideSizeType) == 4 || ((quint16)_s.slideSizeType) == 5 || ((quint16)_s.slideSizeType) == 6");
    }
    _s.fSaveWithFonts = in.readuint8();
    _s.fOmitTitlePlace = in.readuint8();
    _s.fRightToLeft = in.readuint8();
    _s.fShowComments = in.readuint8();
}
void MSO::parseSlideTime10Atom(LEInputStream& in, SlideTime10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x2EEB)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x2EEB");
    }
    if (!(_s.rh.recLen == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 8");
    }
    parseFILETIME(in, _s.fileTime);
}
void MSO::parsePP12SlideBinaryTagExtension(LEInputStream& in, PP12SlideBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _c = 8;
    _s.tagName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.tagName[_i] = in.readuint16();
    }
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    if (_s.rhData.recLen > 8) {
        _s.roundTripHeaderFooterDefaultsAtom = QSharedPointer<RoundTripHeaderFooterDefaults12Atom>(new RoundTripHeaderFooterDefaults12Atom(&_s));
        parseRoundTripHeaderFooterDefaults12Atom(in, *_s.roundTripHeaderFooterDefaultsAtom.data());
    }
}
void MSO::parseProgStringTagContainer(LEInputStream& in, ProgStringTagContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1389)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1389");
    }
    parseTagNameAtom(in, _s.tagNameAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 1)&&(_optionCheck.recType == 0xFBA);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.tagValueAtom = QSharedPointer<TagValueAtom>(new TagValueAtom(&_s));
            parseTagValueAtom(in, *_s.tagValueAtom.data());
        } catch(IncorrectValueException _e) {
            _s.tagValueAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.tagValueAtom.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseNotesAtom(LEInputStream& in, NotesAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 1");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x3F1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3F1");
    }
    if (!(_s.rh.recLen == 0x8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x8");
    }
    _s.slideIdRef = in.readuint32();
    parseSlideFlags(in, _s.slideFlags);
    _s.unused = in.readuint16();
}
void MSO::parseExObjListContainer(LEInputStream& in, ExObjListContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0409)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0409");
    }
    if (!(_s.rh.recLen>=12)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen>=12");
    }
    parseExObjListAtom(in, _s.exObjListAtom);
    qint64 _startPos = in.getPosition();
    int _totalSize = qMin(_s.rh.recLen-12, quint32(in.getSize() - _startPos));
    _atend = in.getPosition() - _startPos >= _totalSize;
    while (!_atend) {
        _s.rgChildRec.append(ExObjListSubContainer(&_s));
        parseExObjListSubContainer(in, _s.rgChildRec.last());
        _atend = in.getPosition() - _startPos >= _totalSize;
    }
}
void MSO::parseExControlContainer(LEInputStream& in, ExControlContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFEE)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFEE");
    }
    parseExControlAtom(in, _s.exControlAtom);
    parseExOleObjAtom(in, _s.exOleObjAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x1)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.menuNameAtom = QSharedPointer<MenuNameAtom>(new MenuNameAtom(&_s));
            parseMenuNameAtom(in, *_s.menuNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.menuNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.menuNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x2)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.progIdAtom = QSharedPointer<ProgIDAtom>(new ProgIDAtom(&_s));
            parseProgIDAtom(in, *_s.progIdAtom.data());
        } catch(IncorrectValueException _e) {
            _s.progIdAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.progIdAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x3)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.clipboardNameAtom = QSharedPointer<ClipboardNameAtom>(new ClipboardNameAtom(&_s));
            parseClipboardNameAtom(in, *_s.clipboardNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.clipboardNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.clipboardNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FC1)&&(_optionCheck.recLen>16);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.metafile = QSharedPointer<MetafileBlob>(new MetafileBlob(&_s));
            parseMetafileBlob(in, *_s.metafile.data());
        } catch(IncorrectValueException _e) {
            _s.metafile.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.metafile.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseExHyperlinkContainer(LEInputStream& in, ExHyperlinkContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFD7)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFD7");
    }
    parseExHyperlinkAtom(in, _s.exHyperlinkAtom);
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.friendlyNameAtom = QSharedPointer<FriendlyNameAtom>(new FriendlyNameAtom(&_s));
            parseFriendlyNameAtom(in, *_s.friendlyNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.friendlyNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.friendlyNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 1)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.targetAtom = QSharedPointer<TargetAtom>(new TargetAtom(&_s));
            parseTargetAtom(in, *_s.targetAtom.data());
        } catch(IncorrectValueException _e) {
            _s.targetAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.targetAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 3)&&(_optionCheck.recType == 0xFBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.locationAtom = QSharedPointer<LocationAtom>(new LocationAtom(&_s));
            parseLocationAtom(in, *_s.locationAtom.data());
        } catch(IncorrectValueException _e) {
            _s.locationAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.locationAtom.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseExOleLinkContainer(LEInputStream& in, ExOleLinkContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FCE)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FCE");
    }
    parseExOleLinkAtom(in, _s.exOleLinkAtom);
    parseExOleObjAtom(in, _s.exOleObjAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x1)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.menuNameAtom = QSharedPointer<MenuNameAtom>(new MenuNameAtom(&_s));
            parseMenuNameAtom(in, *_s.menuNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.menuNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.menuNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x2)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.progIdAtom = QSharedPointer<ProgIDAtom>(new ProgIDAtom(&_s));
            parseProgIDAtom(in, *_s.progIdAtom.data());
        } catch(IncorrectValueException _e) {
            _s.progIdAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.progIdAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x3)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.clipboardNameAtom = QSharedPointer<ClipboardNameAtom>(new ClipboardNameAtom(&_s));
            parseClipboardNameAtom(in, *_s.clipboardNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.clipboardNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.clipboardNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FC1)&&(_optionCheck.recLen>16);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.metafile = QSharedPointer<MetafileBlob>(new MetafileBlob(&_s));
            parseMetafileBlob(in, *_s.metafile.data());
        } catch(IncorrectValueException _e) {
            _s.metafile.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.metafile.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseExOleEmbedContainer(LEInputStream& in, ExOleEmbedContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FCC)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FCC");
    }
    parseExOleEmbedAtom(in, _s.exOleEmbedAtom);
    parseExOleObjAtom(in, _s.exOleObjAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x1)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.menuNameAtom = QSharedPointer<MenuNameAtom>(new MenuNameAtom(&_s));
            parseMenuNameAtom(in, *_s.menuNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.menuNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.menuNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x2)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.progIdAtom = QSharedPointer<ProgIDAtom>(new ProgIDAtom(&_s));
            parseProgIDAtom(in, *_s.progIdAtom.data());
        } catch(IncorrectValueException _e) {
            _s.progIdAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.progIdAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x3)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2 == 0 );
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.clipboardNameAtom = QSharedPointer<ClipboardNameAtom>(new ClipboardNameAtom(&_s));
            parseClipboardNameAtom(in, *_s.clipboardNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.clipboardNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.clipboardNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FC1)&&(_optionCheck.recLen>16);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.metafile = QSharedPointer<MetafileBlob>(new MetafileBlob(&_s));
            parseMetafileBlob(in, *_s.metafile.data());
        } catch(IncorrectValueException _e) {
            _s.metafile.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.metafile.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseOfficeArtFDGGBlock(LEInputStream& in, OfficeArtFDGGBlock& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0F006)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F006");
    }
    parseOfficeArtFDGG(in, _s.head);
    _c = _s.head.cidcl-1;
    for (int _i=0; _i<_c; ++_i) {
        _s.Rgidcl.append(OfficeArtIDCL(&_s));
        parseOfficeArtIDCL(in, _s.Rgidcl[_i]);
    }
}
void MSO::parseOfficeArtSolverContainerFileBlock(LEInputStream& in, OfficeArtSolverContainerFileBlock& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recVer == 1)&&(_choice.recType == 0xF012)&&(_choice.recLen == 0x18)) {
        _s.anon = OfficeArtSolverContainerFileBlock::choice3062460075(new OfficeArtFConnectorRule(&_s));
        parseOfficeArtFConnectorRule(in, *(OfficeArtFConnectorRule*)_s.anon.data());
    } else if ((_choice.recVer == 0)&&(_choice.recType == 0xF014)&&(_choice.recLen == 8)) {
        _s.anon = OfficeArtSolverContainerFileBlock::choice3062460075(new OfficeArtFArcRule(&_s));
        parseOfficeArtFArcRule(in, *(OfficeArtFArcRule*)_s.anon.data());
    } else {
        _s.anon = OfficeArtSolverContainerFileBlock::choice3062460075(new OfficeArtFCalloutRule(&_s));
        parseOfficeArtFCalloutRule(in, *(OfficeArtFCalloutRule*)_s.anon.data());
    }
}
void MSO::parsePVertices(LEInputStream& in, PVertices& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0145)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0145");
    }
    _s.pVertices = in.readuint32();
}
void MSO::parsePSegmentInfo(LEInputStream& in, PSegmentInfo& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0146)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0146");
    }
    _s.pSegmentInfo = in.readuint32();
}
void MSO::parseProtectionBooleanProperties(LEInputStream& in, ProtectionBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x007F)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x007F");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fLockAgainstGrouping = in.readbit();
    _s.fLockAdjustHandles = in.readbit();
    _s.fLockText = in.readbit();
    _s.fLockVertices = in.readbit();
    _s.fLockCropping = in.readbit();
    _s.fLockAgainstSelect = in.readbit();
    _s.fLockPosition = in.readbit();
    _s.fLockAspectRatio = in.readbit();
    _s.fLockRotation = in.readbit();
    _s.fLockAgainstUngrouping = in.readbit();
    _s.unused6 = in.readuint6();
    _s.fUsefLockAgainstGrouping = in.readbit();
    _s.fUseLockAdjustHandles = in.readbit();
    _s.fUseLockText = in.readbit();
    _s.fUsefLockVertices = in.readbit();
    _s.fUsefLockCropping = in.readbit();
    _s.fUsefLockAgainstSelect = in.readbit();
    _s.fUsefLockPosition = in.readbit();
    _s.fUsefLockAspectRatio = in.readbit();
    _s.fUsefLockRotation = in.readbit();
    _s.fUsefLockAgainstUngrouping = in.readbit();
    _s.unused2 = in.readuint6();
}
void MSO::parseRotation(LEInputStream& in, Rotation& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0004)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0004");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.rotation);
}
void MSO::parseITxid(LEInputStream& in, ITxid& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0080)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0080");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.iTxid = in.readint32();
}
void MSO::parseDiagramBooleanProperties(LEInputStream& in, DiagramBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x053F)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x053F");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fLockAgainstGrouping = in.readbit();
    _s.fLockAdjustHandles = in.readbit();
    _s.fLockText = in.readbit();
    _s.fLockVertices = in.readbit();
    _s.fLockCropping = in.readbit();
    _s.fLockAgainstSelect = in.readbit();
    _s.fLockPosition = in.readbit();
    _s.fLockAspectRatio = in.readbit();
    _s.fLockRotation = in.readbit();
    _s.fLockAgainstUngrouping = in.readbit();
    _s.unused6 = in.readuint6();
    _s.fUsefLockAgainstGrouping = in.readbit();
    _s.fUseLockAdjustHandles = in.readbit();
    _s.fUseLockText = in.readbit();
    _s.fUsefLockVertices = in.readbit();
    _s.fUsefLockCropping = in.readbit();
    _s.fUsefLockAgainstSelect = in.readbit();
    _s.fUsefLockPosition = in.readbit();
    _s.fUsefLockAspectRatio = in.readbit();
    _s.fUsefLockRotation = in.readbit();
    _s.fUsefLockAgainstUngrouping = in.readbit();
    _s.unused2 = in.readuint6();
}
void MSO::parseDxTextLeft(LEInputStream& in, DxTextLeft& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0081)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0081");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxTextLeft = in.readint32();
}
void MSO::parseDyTextTop(LEInputStream& in, DyTextTop& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0082)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0082");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dyTextTop = in.readint32();
}
void MSO::parseDxTextRight(LEInputStream& in, DxTextRight& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0083)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0083");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxTextRight = in.readint32();
}
void MSO::parseDyTextBottom(LEInputStream& in, DyTextBottom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0084)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0084");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dyTextBottom = in.readint32();
}
void MSO::parseWrapText(LEInputStream& in, WrapText& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0085)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0085");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.wrapText = in.readuint32();
    if (!(((quint32)_s.wrapText)<5)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.wrapText)<5");
    }
}
void MSO::parseAnchorText(LEInputStream& in, AnchorText& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0087)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0087");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.anchorText = in.readuint32();
    if (!(((quint32)_s.anchorText)<=9)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.anchorText)<=9");
    }
}
void MSO::parseTextBooleanProperties(LEInputStream& in, TextBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x00BF)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x00BF");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.unused1 = in.readbit();
    _s.fFitShapeToText = in.readbit();
    _s.unused2 = in.readbit();
    _s.fAutoTextMargin = in.readbit();
    _s.fSelectText = in.readbit();
    _s.unused3a = in.readuint3();
    _s.unused3b = in.readuint8();
    _s.unused4 = in.readbit();
    _s.fUsefFitShapeToText = in.readbit();
    _s.unused5 = in.readbit();
    _s.fUsefAutoTextMargin = in.readbit();
    _s.fUsefSelectText = in.readbit();
    _s.unused6a = in.readuint3();
    _s.unused6b = in.readuint8();
}
void MSO::parseHspNext(LEInputStream& in, HspNext& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x008A)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x008A");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.hspNext = in.readint32();
}
void MSO::parsePib(LEInputStream& in, Pib& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0104)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0104");
    }
    _s.pib = in.readuint32();
}
void MSO::parsePibName(LEInputStream& in, PibName& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0105)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0105");
    }
    _s.pibName = in.readuint32();
}
void MSO::parseShapePath(LEInputStream& in, ShapePath& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0144)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0144");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.shapePath = in.readuint32();
    if (!(((quint32)_s.shapePath)<=4)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.shapePath)<=4");
    }
}
void MSO::parseAdjustValue(LEInputStream& in, AdjustValue& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0147)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0147");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.adjustvalue = in.readint32();
}
void MSO::parseAdjust2Value(LEInputStream& in, Adjust2Value& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0148)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0148");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.adjust2value = in.readint32();
}
void MSO::parseAdjust3Value(LEInputStream& in, Adjust3Value& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0149)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0149");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.adjust3value = in.readint32();
}
void MSO::parseAdjust4Value(LEInputStream& in, Adjust4Value& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x014A)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x014A");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.adjust4value = in.readint32();
}
void MSO::parseAdjust5Value(LEInputStream& in, Adjust5Value& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x014B)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x014B");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.adjust5value = in.readint32();
}
void MSO::parseAdjust6Value(LEInputStream& in, Adjust6Value& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x014C)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x014C");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.adjust6value = in.readint32();
}
void MSO::parseAdjust7Value(LEInputStream& in, Adjust7Value& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x014D)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x014D");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.adjust7value = in.readint32();
}
void MSO::parseAdjust8Value(LEInputStream& in, Adjust8Value& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x014E)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x014E");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.adjust8value = in.readint32();
}
void MSO::parseGeometryBooleanProperties(LEInputStream& in, GeometryBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x017F)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x017F");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fFillOk = in.readbit();
    _s.fFillShadeShapeOK = in.readbit();
    _s.fGtextOK = in.readbit();
    _s.fLineOK = in.readbit();
    _s.f3DOK = in.readbit();
    _s.fShadowOK = in.readbit();
    _s.unuseda = in.readbit();
    _s.unusedb = in.readbit();
    _s.unused2 = in.readuint8();
    _s.fUsefFillOK = in.readbit();
    _s.fUsefFillShadeShapeOK = in.readbit();
    _s.fUsefGtextOK = in.readbit();
    _s.fUsefLineOK = in.readbit();
    _s.fUsef3DOK = in.readbit();
    _s.fUsefShadowOK = in.readbit();
    _s.unused3a = in.readbit();
    _s.unused3b = in.readbit();
    _s.unused4 = in.readuint8();
}
void MSO::parseFillType(LEInputStream& in, FillType& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0180)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0180");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillType = in.readuint32();
    if (!(((quint32)_s.fillType)<=9)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.fillType)<=9");
    }
}
void MSO::parseFillColor(LEInputStream& in, FillColor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0181)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0181");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseOfficeArtCOLORREF(in, _s.fillColor);
}
void MSO::parseFillOpacity(LEInputStream& in, FillOpacity& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0182)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0182");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillOpacity);
}
void MSO::parseFillBackColor(LEInputStream& in, FillBackColor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0183)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0183");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseOfficeArtCOLORREF(in, _s.fillBackColor);
}
void MSO::parseFillBackOpacity(LEInputStream& in, FillBackOpacity& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0184)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0184");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillBackOpacity);
}
void MSO::parseFillCrMod(LEInputStream& in, FillCrMod& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0185)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0185");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseOfficeArtCOLORREF(in, _s.fillCrMod);
}
void MSO::parseFillBlip(LEInputStream& in, FillBlip& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0186)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0186");
    }
    _s.fillBlip = in.readuint32();
}
void MSO::parseFillBlipName(LEInputStream& in, FillBlipName& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0187)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0187");
    }
    _s.fillBlipName = in.readuint32();
}
void MSO::parseFillBlipFlags(LEInputStream& in, FillBlipFlags& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0188)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0188");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillBlipFlags = in.readuint32();
}
void MSO::parseFillWidth(LEInputStream& in, FillWidth& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0189)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0189");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillWidth = in.readint32();
}
void MSO::parseFillHeight(LEInputStream& in, FillHeight& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x018A)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x018A");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillHeight = in.readint32();
}
void MSO::parseFillAngle(LEInputStream& in, FillAngle& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x018B)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x018B");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillAngle);
}
void MSO::parseFillFocus(LEInputStream& in, FillFocus& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x018C)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x018C");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillFocus = in.readint32();
}
void MSO::parseFillToLeft(LEInputStream& in, FillToLeft& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x018D)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x018D");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillToLeft);
}
void MSO::parseFillToTop(LEInputStream& in, FillToTop& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x018E)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x018E");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillToTop);
}
void MSO::parseFillToRight(LEInputStream& in, FillToRight& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x018F)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x018F");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillToRight);
}
void MSO::parseFillToBottom(LEInputStream& in, FillToBottom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0190)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0190");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillToBottom);
}
void MSO::parseFillRectLeft(LEInputStream& in, FillRectLeft& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0191)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0191");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillRectLeft = in.readint32();
}
void MSO::parseFillRectTop(LEInputStream& in, FillRectTop& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0192)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0192");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillRectTop = in.readint32();
}
void MSO::parseFillRectRight(LEInputStream& in, FillRectRight& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0193)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0193");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillRectRight = in.readint32();
}
void MSO::parseFillRectBottom(LEInputStream& in, FillRectBottom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0194)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0194");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillRectBottom = in.readint32();
}
void MSO::parseFillDztype(LEInputStream& in, FillDztype& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0195)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0195");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillDztype = in.readint32();
}
void MSO::parseFillShadePreset(LEInputStream& in, FillShadePreset& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0196)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0196");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fillShadePreset = in.readint32();
}
void MSO::parseFillShadeColors(LEInputStream& in, FillShadeColors& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0197)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0197");
    }
    _s.fillShadeColors = in.readuint32();
}
void MSO::parseFillOriginX(LEInputStream& in, FillOriginX& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0198)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0198");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillOriginX);
}
void MSO::parseFillOriginY(LEInputStream& in, FillOriginY& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0199)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0199");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillOriginY);
}
void MSO::parseFillShapeOriginX(LEInputStream& in, FillShapeOriginX& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x019A)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x019A");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillShapeOriginX);
}
void MSO::parseFillShapeOriginY(LEInputStream& in, FillShapeOriginY& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x019B)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x019B");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.fillShapeOriginY);
}
void MSO::parseFillColorExt(LEInputStream& in, FillColorExt& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x019E)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x019E");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseOfficeArtCOLORREF(in, _s.fillColorExt);
}
void MSO::parseFillBackColorExt(LEInputStream& in, FillBackColorExt& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01A2)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01A2");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseOfficeArtCOLORREF(in, _s.fillBackColorExt);
}
void MSO::parseFillStyleBooleanProperties(LEInputStream& in, FillStyleBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01BF)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01BF");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fNoFillHitTest = in.readbit();
    _s.fillUseRect = in.readbit();
    _s.fillShape = in.readbit();
    _s.fHitTestFill = in.readbit();
    _s.fFilled = in.readbit();
    _s.fUseShapeAnchor = in.readbit();
    _s.fRecolorFillAsPicture = in.readbit();
    _s.unused1a = in.readbit();
    _s.unused1b = in.readuint8();
    _s.fUseNoFillHitTest = in.readbit();
    _s.fUseFillUseRect = in.readbit();
    _s.fUseFillShape = in.readbit();
    _s.fUseHitTestFill = in.readbit();
    _s.fUseFilled = in.readbit();
    _s.fUseUseShapeAnchor = in.readbit();
    _s.fUsefRecolorFillAsPicture = in.readbit();
    _s.unused2a = in.readbit();
    _s.unused2b = in.readuint8();
}
void MSO::parseLineColor(LEInputStream& in, LineColor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01C0)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01C0");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseOfficeArtCOLORREF(in, _s.lineColor);
}
void MSO::parseLineOpacity(LEInputStream& in, LineOpacity& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01C1)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01C1");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineOpacity = in.readint32();
    if (!(((qint32)_s.lineOpacity)>=0)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.lineOpacity)>=0");
    }
    if (!(((qint32)_s.lineOpacity)<=65536)) {
        throw IncorrectValueException(in.getPosition(), "((qint32)_s.lineOpacity)<=65536");
    }
}
void MSO::parseLineBackColor(LEInputStream& in, LineBackColor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01C2)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01C2");
    }
    parseOfficeArtCOLORREF(in, _s.lineBackColor);
}
void MSO::parseLineFillBlip(LEInputStream& in, LineFillBlip& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01C5)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01C5");
    }
    _s.lineFillBlip = in.readuint32();
}
void MSO::parseLineWidth(LEInputStream& in, LineWidth& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01CB)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01CB");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineWidth = in.readuint32();
}
void MSO::parseLineStyle(LEInputStream& in, LineStyle& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01CD)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01CD");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineStyle = in.readuint32();
}
void MSO::parseLineDashing(LEInputStream& in, LineDashing& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01CE)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01CE");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineDashing = in.readuint32();
}
void MSO::parseLineStartArrowhead(LEInputStream& in, LineStartArrowhead& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01D0)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01D0");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineStartArrowhead = in.readuint32();
    if (!(((quint32)_s.lineStartArrowhead)<=8)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.lineStartArrowhead)<=8");
    }
}
void MSO::parseLineEndArrowhead(LEInputStream& in, LineEndArrowhead& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01D1)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01D1");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineEndArrowhead = in.readuint32();
    if (!(((quint32)_s.lineEndArrowhead)<=8)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.lineEndArrowhead)<=8");
    }
}
void MSO::parseLineStartArrowWidth(LEInputStream& in, LineStartArrowWidth& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01D2)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01D2");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineStartArrowWidth = in.readuint32();
}
void MSO::parseLineStartArrowLength(LEInputStream& in, LineStartArrowLength& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01D3)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01D3");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineStartArrowLength = in.readuint32();
}
void MSO::parseLineEndArrowWidth(LEInputStream& in, LineEndArrowWidth& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01D4)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01D4");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineEndArrowWidth = in.readuint32();
}
void MSO::parseLineEndArrowLength(LEInputStream& in, LineEndArrowLength& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01D5)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01D5");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineEndArrowLength = in.readuint32();
}
void MSO::parseLineJoinStyle(LEInputStream& in, LineJoinStyle& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01D6)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01D6");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lineJoinStyle = in.readuint32();
    if (!(((quint32)_s.lineJoinStyle)<=2)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.lineJoinStyle)<=2");
    }
}
void MSO::parseLineStyleBooleanProperties(LEInputStream& in, LineStyleBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x01FF)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x01FF");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fNoLineDrawDash = in.readbit();
    _s.fLineFillShape = in.readbit();
    _s.fHitTestLine = in.readbit();
    _s.fLine = in.readbit();
    _s.fArrowHeadsOK = in.readbit();
    _s.fInsetPenOK = in.readbit();
    _s.fInsetPen = in.readbit();
    _s.reserved1 = in.readbit();
    _s.reserved2 = in.readbit();
    _s.fLineOpaqueBackColor = in.readbit();
    _s.unused1 = in.readuint6();
    _s.fUseNoLineDrawDash = in.readbit();
    _s.fUseLineFillShape = in.readbit();
    _s.fUseHitTestLine = in.readbit();
    _s.fUsefLine = in.readbit();
    _s.fUsefArrowHeadsOK = in.readbit();
    _s.fUseInsetPenOK = in.readbit();
    _s.fUseInsetPen = in.readbit();
    _s.unused2 = in.readbit();
    _s.unused3 = in.readbit();
    _s.fUsefLineOpaqueBackColor = in.readbit();
    _s.unused4 = in.readuint6();
}
void MSO::parseShadowType(LEInputStream& in, ShadowType& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0200)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0200");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.shadowType = in.readuint32();
}
void MSO::parseShadowColor(LEInputStream& in, ShadowColor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0201)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0201");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseOfficeArtCOLORREF(in, _s.shadowColor);
}
void MSO::parseShadowOpacity(LEInputStream& in, ShadowOpacity& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0204)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0204");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    parseFixedPoint(in, _s.shadowOpacity);
}
void MSO::parseShadowOffsetX(LEInputStream& in, ShadowOffsetX& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0205)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0205");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.shadowOffsetX = in.readint32();
}
void MSO::parseShadowOffsetY(LEInputStream& in, ShadowOffsetY& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0206)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0206");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.shadowOffsetY = in.readint32();
}
void MSO::parseShadowStyleBooleanProperties(LEInputStream& in, ShadowStyleBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x023F)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x023F");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fShadowObscured = in.readbit();
    _s.fShadow = in.readbit();
    _s.unused1 = in.readuint14();
    _s.fUsefShadowObscured = in.readbit();
    _s.fUsefShadow = in.readbit();
    _s.unused2 = in.readuint14();
}
void MSO::parseHspMaster(LEInputStream& in, HspMaster& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0301)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0301");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.hspMaster = in.readuint32();
}
void MSO::parseBWMode(LEInputStream& in, BWMode& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0304)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0304");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.bWMode = in.readuint32();
    if (!(((quint32)_s.bWMode)<=10)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.bWMode)<=10");
    }
}
void MSO::parseTxflTextFlow(LEInputStream& in, TxflTextFlow& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0088)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0088");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.txflTextFlow = in.readuint32();
}
void MSO::parsePosH(LEInputStream& in, PosH& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x038F)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x038F");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.posH = in.readuint32();
}
void MSO::parsePosRelH(LEInputStream& in, PosRelH& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0390)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0390");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.posRelH = in.readuint32();
}
void MSO::parsePosV(LEInputStream& in, PosV& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0391)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0391");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.posV = in.readuint32();
}
void MSO::parsePosRelV(LEInputStream& in, PosRelV& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0392)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0392");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.posRelV = in.readuint32();
}
void MSO::parseShapeBooleanProperties(LEInputStream& in, ShapeBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x033F)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x033F");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fBackground = in.readbit();
    _s.reserved1 = in.readbit();
    _s.fInitiator = in.readbit();
    _s.fLockShapeType = in.readbit();
    _s.fPreferRelativeResize = in.readbit();
    _s.fOleIcon = in.readbit();
    _s.fFlipVOverride = in.readbit();
    _s.fFlipHOverride = in.readbit();
    _s.fPolicyBarcode = in.readbit();
    _s.fPolicyLabel = in.readbit();
    _s.unused1 = in.readbit();
    _s.unused2 = in.readbit();
    _s.unused3 = in.readuint4();
    _s.fUsefBackground = in.readbit();
    _s.unused4 = in.readbit();
    _s.fUsefInitiator = in.readbit();
    _s.fUsefLockShapeType = in.readbit();
    _s.fusePreferrelativeResize = in.readbit();
    _s.fUsefOleIcon = in.readbit();
    _s.fUsefFlipVOverride = in.readbit();
    _s.fUsefFlipHOverride = in.readbit();
    _s.fUsefPolicyBarcode = in.readbit();
    _s.fUsefPolicyLabel = in.readbit();
    _s.unused5 = in.readbit();
    _s.unused6 = in.readbit();
    _s.unused7 = in.readuint4();
}
void MSO::parseDxyCalloutGap(LEInputStream& in, DxyCalloutGap& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0341)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0341");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxyCalloutGap = in.readuint32();
}
void MSO::parseSpcoa(LEInputStream& in, Spcoa& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0342)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0342");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.spcoa = in.readuint32();
}
void MSO::parseSpcod(LEInputStream& in, Spcod& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0343)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0343");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.spcod = in.readuint32();
}
void MSO::parseDxyCalloutDropSpecified(LEInputStream& in, DxyCalloutDropSpecified& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0344)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0344");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxyCalloutDropSpecified = in.readuint32();
}
void MSO::parseDxyCalloutLengthSpecified(LEInputStream& in, DxyCalloutLengthSpecified& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0345)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0345");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxyCalloutLengthSpecified = in.readuint32();
}
void MSO::parseCalloutBooleanProperties(LEInputStream& in, CalloutBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x037F)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x037F");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fCalloutLengthSpecified = in.readbit();
    _s.fCalloutDropAuto = in.readbit();
    _s.fCalloutMinusY = in.readbit();
    _s.fCalloutMinusX = in.readbit();
    _s.fCalloutTextBorder = in.readbit();
    _s.fCalloutAccentBar = in.readbit();
    _s.fCallout = in.readbit();
    _s.unused1a = in.readbit();
    _s.unused1b = in.readuint8();
    _s.fUsefCalloutLengthSpecified = in.readbit();
    _s.fUsefCalloutDropAuto = in.readbit();
    _s.fUsefCalloutMinusY = in.readbit();
    _s.fUsefCalloutMinusX = in.readbit();
    _s.fUsefCalloutTextBorder = in.readbit();
    _s.fUsefCalloutAccentBar = in.readbit();
    _s.fUsefCallout = in.readbit();
    _s.unused2a = in.readbit();
    _s.unused2b = in.readuint8();
}
void MSO::parsePWrapPolygonVertices(LEInputStream& in, PWrapPolygonVertices& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0383)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0383");
    }
    _s.pWrapPolygonVertices = in.readuint32();
}
void MSO::parseDxWrapDistLeft(LEInputStream& in, DxWrapDistLeft& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0384)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0384");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxWrapDistLeft = in.readint32();
}
void MSO::parseDyWrapDistTop(LEInputStream& in, DyWrapDistTop& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0385)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0385");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dyWrapDistTop = in.readint32();
}
void MSO::parseDxWrapDistRight(LEInputStream& in, DxWrapDistRight& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0386)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0386");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxWrapDistRight = in.readint32();
}
void MSO::parseDyWrapDistBottom(LEInputStream& in, DyWrapDistBottom& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0387)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0387");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dyWrapDistBottom = in.readint32();
}
void MSO::parseLidRegroup(LEInputStream& in, LidRegroup& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0388)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0388");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.lidRegroup = in.readuint32();
}
void MSO::parsePctHR(LEInputStream& in, PctHR& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0393)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0393");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.pctHR = in.readuint32();
}
void MSO::parseAlignHR(LEInputStream& in, AlignHR& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0394)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0394");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.alignHR = in.readuint32();
}
void MSO::parseDxHeightHR(LEInputStream& in, DxHeightHR& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0395)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0395");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxHeightHR = in.readint32();
}
void MSO::parseDxWidthHR(LEInputStream& in, DxWidthHR& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0396)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0396");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.dxWidthHR = in.readint32();
}
void MSO::parseGroupShapeBooleanProperties(LEInputStream& in, GroupShapeBooleanProperties& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x03bf)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x03bf");
    }
    if (!(_s.opid.fBid == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fBid == false");
    }
    if (!(_s.opid.fComplex == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.fComplex == false");
    }
    _s.fPrint = in.readbit();
    _s.fHidden = in.readbit();
    _s.fOneD = in.readbit();
    _s.fIsButton = in.readbit();
    _s.fOnDblClickNotify = in.readbit();
    _s.fBehindDocument = in.readbit();
    _s.fEditedWrap = in.readbit();
    _s.fScriptAnchor = in.readbit();
    _s.fReallyHidden = in.readbit();
    _s.fAllowOverlap = in.readbit();
    _s.fUserDrawn = in.readbit();
    _s.fHorizRule = in.readbit();
    _s.fNoshadeHR = in.readbit();
    _s.fStandardHR = in.readbit();
    _s.fIsBullet = in.readbit();
    _s.fLayoutInCell = in.readbit();
    _s.fUsefPrint = in.readbit();
    _s.fUsefHidden = in.readbit();
    _s.fUsefOneD = in.readbit();
    _s.fUsefIsButton = in.readbit();
    _s.fUsefOnDblClickNotify = in.readbit();
    _s.fUsefBehindDocument = in.readbit();
    _s.fUsefEditedWrap = in.readbit();
    _s.fUsefScriptAnchor = in.readbit();
    _s.fUsefReallyHidden = in.readbit();
    _s.fUsefAllowOverlap = in.readbit();
    _s.fUsefUserDrawn = in.readbit();
    _s.fUsefHorizRule = in.readbit();
    _s.fUsefNoshadeHR = in.readbit();
    _s.fUsefStandardHR = in.readbit();
    _s.fUsefIsBullet = in.readbit();
    _s.fUsefLayoutInCell = in.readbit();
}
void MSO::parseWzFillId(LEInputStream& in, WzFillId& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    if (!(_s.opid.opid == 0x0403)) {
        throw IncorrectValueException(in.getPosition(), "_s.opid.opid == 0x0403");
    }
    _s.wzFillId = in.readint32();
}
void MSO::parsePptOfficeArtClientAnchor(LEInputStream& in, PptOfficeArtClientAnchor& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF010)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF010");
    }
    if (!(_s.rh.recLen == 0x8 || _s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x8 || _s.rh.recLen == 0x10");
    }
    if (_s.rh.recLen==0x8) {
        _s.rect1 = QSharedPointer<SmallRectStruct>(new SmallRectStruct(&_s));
        parseSmallRectStruct(in, *_s.rect1.data());
    }
    if (_s.rh.recLen==0x10) {
        _s.rect2 = QSharedPointer<RectStruct>(new RectStruct(&_s));
        parseRectStruct(in, *_s.rect2.data());
    }
}
void MSO::parseAnimationInfoContainer(LEInputStream& in, AnimationInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x1014)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x1014");
    }
    parseAnimationInfoAtom(in, _s.animationAtom);
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x7E6);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.animationSound = QSharedPointer<SoundContainer>(new SoundContainer(&_s));
            parseSoundContainer(in, *_s.animationSound.data());
        } catch(IncorrectValueException _e) {
            _s.animationSound.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.animationSound.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseMouseClickInteractiveInfoContainer(LEInputStream& in, MouseClickInteractiveInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFF2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFF2");
    }
    parseInteractiveInfoAtom(in, _s.interactiveInfoAtom);
    if (_s.rh.recLen>24) {
        _s.macroNameAtom = QSharedPointer<MacroNameAtom>(new MacroNameAtom(&_s));
        parseMacroNameAtom(in, *_s.macroNameAtom.data());
    }
}
void MSO::parseMouseOverInteractiveInfoContainer(LEInputStream& in, MouseOverInteractiveInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0xFF2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFF2");
    }
    parseInteractiveInfoAtom(in, _s.interactiveInfoAtom);
    if (_s.rh.recLen>24) {
        _s.macroNameAtom = QSharedPointer<MacroNameAtom>(new MacroNameAtom(&_s));
        parseMacroNameAtom(in, *_s.macroNameAtom.data());
    }
}
void MSO::parseShapeClientRoundtripDataSubcontainerOrAtom(LEInputStream& in, ShapeClientRoundtripDataSubcontainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recVer == 0xF)&&(_choice.recInstance == 0 || _choice.recInstance == 1 || _choice.recInstance == 2)&&(_choice.recType == 0x1388)) {
        _s.anon = ShapeClientRoundtripDataSubcontainerOrAtom::choice3146562028(new ShapeProgsTagContainer(&_s));
        parseShapeProgsTagContainer(in, *(ShapeProgsTagContainer*)_s.anon.data());
    } else if ((_choice.recVer == 0)&&(_choice.recInstance == 0)&&(_choice.recType == 0xBDD)&&(_choice.recLen == 1)) {
        _s.anon = ShapeClientRoundtripDataSubcontainerOrAtom::choice3146562028(new RoundTripNewPlaceHolderId12Atom(&_s));
        parseRoundTripNewPlaceHolderId12Atom(in, *(RoundTripNewPlaceHolderId12Atom*)_s.anon.data());
    } else if ((_choice.recVer == 0)&&(_choice.recInstance == 0)&&(_choice.recType == 0x41F)&&(_choice.recLen == 4)) {
        _s.anon = ShapeClientRoundtripDataSubcontainerOrAtom::choice3146562028(new RoundTripShapeId12Atom(&_s));
        parseRoundTripShapeId12Atom(in, *(RoundTripShapeId12Atom*)_s.anon.data());
    } else if ((_choice.recVer == 0)&&(_choice.recInstance == 0)&&(_choice.recType == 0x420)&&(_choice.recLen == 1)) {
        _s.anon = ShapeClientRoundtripDataSubcontainerOrAtom::choice3146562028(new RoundTripHFPlaceholder12Atom(&_s));
        parseRoundTripHFPlaceholder12Atom(in, *(RoundTripHFPlaceholder12Atom*)_s.anon.data());
    } else {
        _s.anon = ShapeClientRoundtripDataSubcontainerOrAtom::choice3146562028(new RoundTripShapeCheckSumForCustomLayouts12Atom(&_s));
        parseRoundTripShapeCheckSumForCustomLayouts12Atom(in, *(RoundTripShapeCheckSumForCustomLayouts12Atom*)_s.anon.data());
    }
}
void MSO::parseShapeProgBinaryTagSubContainerOrAtom(LEInputStream& in, ShapeProgBinaryTagSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    try {
        _s.anon = ShapeProgBinaryTagSubContainerOrAtom::choice2754406405(new PP9ShapeBinaryTagExtension(&_s));
        parsePP9ShapeBinaryTagExtension(in, *(PP9ShapeBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _x) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = ShapeProgBinaryTagSubContainerOrAtom::choice2754406405(new PP10ShapeBinaryTagExtension(&_s));
        parsePP10ShapeBinaryTagExtension(in, *(PP10ShapeBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _xx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = ShapeProgBinaryTagSubContainerOrAtom::choice2754406405(new PP11ShapeBinaryTagExtension(&_s));
        parsePP11ShapeBinaryTagExtension(in, *(PP11ShapeBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _xxx) {
        _s.anon.clear();
        in.rewind(_m);
        _s.anon = ShapeProgBinaryTagSubContainerOrAtom::choice2754406405(new UnknownBinaryTag(&_s));
        parseUnknownBinaryTag(in, *(UnknownBinaryTag*)_s.anon.data());
    }}}
}
void MSO::parseOfficeArtClientTextBox(LEInputStream& in, OfficeArtClientTextBox& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recVer == 0)&&(_choice.recLen == 0)) {
        _s.anon = OfficeArtClientTextBox::choice2757443956(new XlsOfficeArtClientTextBox(&_s));
        parseXlsOfficeArtClientTextBox(in, *(XlsOfficeArtClientTextBox*)_s.anon.data());
    } else if ((_choice.recVer == 0 || _choice.recVer == 0xF)&&(_choice.recLen == 0x4)) {
        _s.anon = OfficeArtClientTextBox::choice2757443956(new DocOfficeArtClientTextBox(&_s));
        parseDocOfficeArtClientTextBox(in, *(DocOfficeArtClientTextBox*)_s.anon.data());
    } else {
        _s.anon = OfficeArtClientTextBox::choice2757443956(new PptOfficeArtClientTextBox(&_s));
        parsePptOfficeArtClientTextBox(in, *(PptOfficeArtClientTextBox*)_s.anon.data());
    }
}
void MSO::parseTextRulerAtom(LEInputStream& in, TextRulerAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFA6)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFA6");
    }
    parseTextRuler(in, _s.textRuler);
}
void MSO::parseOfficeArtFOPTE(LEInputStream& in, OfficeArtFOPTE& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtFOPTEOPID(in, _s.opid);
    _s.op = in.readint32();
}
void MSO::parseFib(LEInputStream& in, Fib& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseFibBase(in, _s.base);
    _s.csw = in.readuint16();
    if (!(((quint16)_s.csw) == 14)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.csw) == 14");
    }
    parseFibRgW97(in, _s.fibRgW);
    _s.cslw = in.readuint16();
    if (!(((quint16)_s.cslw) == 22)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.cslw) == 22");
    }
    parseFibRgLw97(in, _s.fibRgLw);
    _s.cbRgFcLcb = in.readuint16();
    if (!(((quint16)_s.cbRgFcLcb) == 0x5D || ((quint16)_s.cbRgFcLcb) == 0x6C || ((quint16)_s.cbRgFcLcb) == 0x88 || ((quint16)_s.cbRgFcLcb) == 0xA4 || ((quint16)_s.cbRgFcLcb) == 0xB7)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.cbRgFcLcb) == 0x5D || ((quint16)_s.cbRgFcLcb) == 0x6C || ((quint16)_s.cbRgFcLcb) == 0x88 || ((quint16)_s.cbRgFcLcb) == 0xA4 || ((quint16)_s.cbRgFcLcb) == 0xB7");
    }
    parseFibRgFcLcb97(in, _s.fibRgFcLcbBlob);
    if (_s.cbRgFcLcb>=0x6C) {
        _s.fibRgFcLcbBlob2 = QSharedPointer<FibRgFcLcb2000>(new FibRgFcLcb2000(&_s));
        parseFibRgFcLcb2000(in, *_s.fibRgFcLcbBlob2.data());
    }
    if (_s.cbRgFcLcb>=0x88) {
        _s.fibRgFcLcbBlob3 = QSharedPointer<FibRgFcLcb2002>(new FibRgFcLcb2002(&_s));
        parseFibRgFcLcb2002(in, *_s.fibRgFcLcbBlob3.data());
    }
    _s.cswNew = in.readuint16();
    if (!(((quint16)_s.cswNew) == 0 || ((quint16)_s.cswNew) == 2 || ((quint16)_s.cswNew) == 5)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.cswNew) == 0 || ((quint16)_s.cswNew) == 2 || ((quint16)_s.cswNew) == 5");
    }
    _c = 2*_s.cswNew;
    _s.fibRgCswNew.resize(_c);
    in.readBytes(_s.fibRgCswNew);
    _c = _s.fibRgLw.cbMac-156-8*_s.cbRgFcLcb-2*_s.cswNew;
    _s.trail.resize(_c);
    in.readBytes(_s.trail);
}
void MSO::parseSTSH(LEInputStream& in, STSH& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseLPStshi(in, _s.lpstshi);
    _c = 20;
    for (int _i=0; _i<_c; ++_i) {
        _s.rglpstd.append(LPStd(&_s));
        parseLPStd(in, _s.rglpstd[_i]);
    }
}
void MSO::parseClx(LEInputStream& in, Clx& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.RgPrc.append(Pcr(&_s));
            parsePcr(in, _s.RgPrc.last());
        } catch(IncorrectValueException _e) {
            _s.RgPrc.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.RgPrc.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    parsePcdt(in, _s.pcdt);
}
void MSO::parsePcr(LEInputStream& in, Pcr& _s) {
    _s.streamOffset = in.getPosition();
    _s.clxt = in.readuint8();
    if (!(((quint8)_s.clxt) == 1)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.clxt) == 1");
    }
    parsePrcData(in, _s.prcData);
}
void MSO::parsePrm(LEInputStream& in, Prm& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    bool _choice = in.readbit();
    in.rewind(_m);
    if ((_choice == false)) {
        _s.prm = Prm::choice1129181155(new Prm0(&_s));
        parsePrm0(in, *(Prm0*)_s.prm.data());
    } else {
        _s.prm = Prm::choice1129181155(new Prm1(&_s));
        parsePrm1(in, *(Prm1*)_s.prm.data());
    }
}
void MSO::parseOfficeArtBlipEMF(LEInputStream& in, OfficeArtBlipEMF& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0x3D4 || _s.rh.recInstance == 0x3D5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x3D4 || _s.rh.recInstance == 0x3D5");
    }
    if (!(_s.rh.recType == 0xF01A)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF01A");
    }
    _c = 16;
    _s.rgbUid1.resize(_c);
    in.readBytes(_s.rgbUid1);
    _s._has_rgbUid2 = _s.rh.recInstance == 0x3D5;
    if (_s._has_rgbUid2) {
        _c = 16;
        _s.rgbUid2.resize(_c);
        in.readBytes(_s.rgbUid2);
    }
    parseOfficeArtMetafileHeader(in, _s.metafileHeader);
    _c = _s.rh.recLen-((_s.rh.recInstance==0x3D4)?50:66);
    _s.BLIPFileData.resize(_c);
    in.readBytes(_s.BLIPFileData);
}
void MSO::parseOfficeArtBlipWMF(LEInputStream& in, OfficeArtBlipWMF& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0x216 || _s.rh.recInstance == 0x217)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x216 || _s.rh.recInstance == 0x217");
    }
    if (!(_s.rh.recType == 0xF01B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF01B");
    }
    _c = 16;
    _s.rgbUid1.resize(_c);
    in.readBytes(_s.rgbUid1);
    _s._has_rgbUid2 = _s.rh.recInstance == 0x217;
    if (_s._has_rgbUid2) {
        _c = 16;
        _s.rgbUid2.resize(_c);
        in.readBytes(_s.rgbUid2);
    }
    parseOfficeArtMetafileHeader(in, _s.metafileHeader);
    _c = _s.rh.recLen-((_s.rh.recInstance==0x216)?50:66);
    _s.BLIPFileData.resize(_c);
    in.readBytes(_s.BLIPFileData);
}
void MSO::parseOfficeArtBlipPICT(LEInputStream& in, OfficeArtBlipPICT& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0x542 || _s.rh.recInstance == 0x543)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x542 || _s.rh.recInstance == 0x543");
    }
    if (!(_s.rh.recType == 0xF01C)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF01C");
    }
    _c = 16;
    _s.rgbUid1.resize(_c);
    in.readBytes(_s.rgbUid1);
    _s._has_rgbUid2 = _s.rh.recInstance == 0x543;
    if (_s._has_rgbUid2) {
        _c = 16;
        _s.rgbUid2.resize(_c);
        in.readBytes(_s.rgbUid2);
    }
    parseOfficeArtMetafileHeader(in, _s.metafileHeader);
    _c = _s.rh.recLen-((_s.rh.recInstance==0x542)?50:66);
    _s.BLIPFileData.resize(_c);
    in.readBytes(_s.BLIPFileData);
}
void MSO::parseOfficeArtBlip(LEInputStream& in, OfficeArtBlip& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0x3D4 || _choice.recInstance == 0x3D5)&&(_choice.recType == 0xF01A)) {
        _s.anon = OfficeArtBlip::choice279968329(new OfficeArtBlipEMF(&_s));
        parseOfficeArtBlipEMF(in, *(OfficeArtBlipEMF*)_s.anon.data());
    } else if ((_choice.recInstance == 0x216 || _choice.recInstance == 0x217)&&(_choice.recType == 0xF01B)) {
        _s.anon = OfficeArtBlip::choice279968329(new OfficeArtBlipWMF(&_s));
        parseOfficeArtBlipWMF(in, *(OfficeArtBlipWMF*)_s.anon.data());
    } else if ((_choice.recInstance == 0x542 || _choice.recInstance == 0x543)&&(_choice.recType == 0xF01C)) {
        _s.anon = OfficeArtBlip::choice279968329(new OfficeArtBlipPICT(&_s));
        parseOfficeArtBlipPICT(in, *(OfficeArtBlipPICT*)_s.anon.data());
    } else if ((_choice.recInstance == 0x46A || _choice.recInstance == 0x46B || _choice.recInstance == 0x6E2 || _choice.recInstance == 0x6E3)&&(_choice.recType == 0xF01D)) {
        _s.anon = OfficeArtBlip::choice279968329(new OfficeArtBlipJPEG(&_s));
        parseOfficeArtBlipJPEG(in, *(OfficeArtBlipJPEG*)_s.anon.data());
    } else if ((_choice.recInstance == 0x6E0 || _choice.recInstance == 0x6E1)&&(_choice.recType == 0xF01E)) {
        _s.anon = OfficeArtBlip::choice279968329(new OfficeArtBlipPNG(&_s));
        parseOfficeArtBlipPNG(in, *(OfficeArtBlipPNG*)_s.anon.data());
    } else if ((_choice.recInstance == 0x7A8 || _choice.recInstance == 0x7A9)&&(_choice.recType == 0xF01F)) {
        _s.anon = OfficeArtBlip::choice279968329(new OfficeArtBlipDIB(&_s));
        parseOfficeArtBlipDIB(in, *(OfficeArtBlipDIB*)_s.anon.data());
    } else {
        _s.anon = OfficeArtBlip::choice279968329(new OfficeArtBlipTIFF(&_s));
        parseOfficeArtBlipTIFF(in, *(OfficeArtBlipTIFF*)_s.anon.data());
    }
}
void MSO::parseZoomViewInfoAtom(LEInputStream& in, ZoomViewInfoAtom& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x3FD)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3FD");
    }
    if (!(_s.rh.recLen == 0x34)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x34");
    }
    parseScalingStruct(in, _s.curScale);
    _c = 24;
    _s.unused1.resize(_c);
    in.readBytes(_s.unused1);
    parsePointStruct(in, _s.origin);
    _s.fUseVarScale = in.readuint8();
    if (!(((quint8)_s.fUseVarScale) == 0 || ((quint8)_s.fUseVarScale) == 1)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.fUseVarScale) == 0 || ((quint8)_s.fUseVarScale) == 1");
    }
    _s.fDraftMode = in.readuint8();
    _s.unused2 = in.readuint16();
}
void MSO::parsePP9DocBinaryTagExtension(LEInputStream& in, PP9DocBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen == 0x0E)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x0E");
    }
    _c = 14;
    _s.tagName.resize(_c);
    in.readBytes(_s.tagName);
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0x0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgTextMasterStyle9.append(TextMasterStyle9Atom(&_s));
            parseTextMasterStyle9Atom(in, _s.rgTextMasterStyle9.last());
        } catch(IncorrectValueException _e) {
            _s.rgTextMasterStyle9.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgTextMasterStyle9.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x07F8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.blipCollectionContainer = QSharedPointer<BlipCollection9Container>(new BlipCollection9Container(&_s));
            parseBlipCollection9Container(in, *_s.blipCollectionContainer.data());
        } catch(IncorrectValueException _e) {
            _s.blipCollectionContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.blipCollectionContainer.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x00)&&(_optionCheck.recType == 0x0FB0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.textDefaultsAtom = QSharedPointer<TextDefaults9Atom>(new TextDefaults9Atom(&_s));
            parseTextDefaults9Atom(in, *_s.textDefaultsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.textDefaultsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.textDefaultsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0x2)&&(_optionCheck.recType == 0x0FC8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.kinsokuContainer = QSharedPointer<Kinsoku9Container>(new Kinsoku9Container(&_s));
            parseKinsoku9Container(in, *_s.kinsokuContainer.data());
        } catch(IncorrectValueException _e) {
            _s.kinsokuContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.kinsokuContainer.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgExternalHyperlink9.append(ExHyperlink9Container(&_s));
            parseExHyperlink9Container(in, _s.rgExternalHyperlink9.last());
        } catch(IncorrectValueException _e) {
            _s.rgExternalHyperlink9.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgExternalHyperlink9.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x177A)&&(_optionCheck.recLen == 0x4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.presAdvisorFlagsAtom = QSharedPointer<PresAdvisorFlags9Atom>(new PresAdvisorFlags9Atom(&_s));
            parsePresAdvisorFlags9Atom(in, *_s.presAdvisorFlagsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.presAdvisorFlagsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.presAdvisorFlagsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x1785);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.envelopeDataAtom = QSharedPointer<EnvelopeData9Atom>(new EnvelopeData9Atom(&_s));
            parseEnvelopeData9Atom(in, *_s.envelopeDataAtom.data());
        } catch(IncorrectValueException _e) {
            _s.envelopeDataAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.envelopeDataAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x1784)&&(_optionCheck.recLen == 4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.envelopeFlagsAtom = QSharedPointer<EnvelopeFlags9Atom>(new EnvelopeFlags9Atom(&_s));
            parseEnvelopeFlags9Atom(in, *_s.envelopeFlagsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.envelopeFlagsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.envelopeFlagsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x177B)&&(_optionCheck.recLen == 0x10);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.htmlDocInfoAtom = QSharedPointer<HTMLDocInfo9Atom>(new HTMLDocInfo9Atom(&_s));
            parseHTMLDocInfo9Atom(in, *_s.htmlDocInfoAtom.data());
        } catch(IncorrectValueException _e) {
            _s.htmlDocInfoAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.htmlDocInfoAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x177D);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.htmlPublishInfoAtom = QSharedPointer<HTMLPublishInfo9Container>(new HTMLPublishInfo9Container(&_s));
            parseHTMLPublishInfo9Container(in, *_s.htmlPublishInfoAtom.data());
        } catch(IncorrectValueException _e) {
            _s.htmlPublishInfoAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.htmlPublishInfoAtom.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgBroadcastDocInfo9.append(BroadcastDocInfo9Container(&_s));
            parseBroadcastDocInfo9Container(in, _s.rgBroadcastDocInfo9.last());
        } catch(IncorrectValueException _e) {
            _s.rgBroadcastDocInfo9.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgBroadcastDocInfo9.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x0FAE);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.outlineTextPropsContainer = QSharedPointer<OutlineTextProps9Container>(new OutlineTextProps9Container(&_s));
            parseOutlineTextProps9Container(in, *_s.outlineTextPropsContainer.data());
        } catch(IncorrectValueException _e) {
            _s.outlineTextPropsContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.outlineTextPropsContainer.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseTextMasterStyle9Level(LEInputStream& in, TextMasterStyle9Level& _s) {
    _s.streamOffset = in.getPosition();
    parseTextPFException9(in, _s.pf9);
    parseTextCFException9(in, _s.cf9);
}
void MSO::parseStyleTextProp9(LEInputStream& in, StyleTextProp9& _s) {
    _s.streamOffset = in.getPosition();
    parseTextPFException9(in, _s.pf9);
    parseTextCFException9(in, _s.cf9);
    parseTextSIException(in, _s.si);
    if (!(_s.si.spell == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.si.spell == false");
    }
    if (!(_s.si.lang == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.si.lang == false");
    }
    if (!(_s.si.altLang == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.si.altLang == false");
    }
    if (!(_s.si.smartTag == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.si.smartTag == false");
    }
}
void MSO::parsePP10DocBinaryTagExtension(LEInputStream& in, PP10DocBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0FBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FBA");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _c = 16;
    _s.tagName.resize(_c);
    in.readBytes(_s.tagName);
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0x0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x07D6);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.fontCollectionContainer = QSharedPointer<FontCollection10Container>(new FontCollection10Container(&_s));
            parseFontCollection10Container(in, *_s.fontCollectionContainer.data());
        } catch(IncorrectValueException _e) {
            _s.fontCollectionContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.fontCollectionContainer.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgTextMasterStyle10.append(TextMasterStyle10Atom(&_s));
            parseTextMasterStyle10Atom(in, _s.rgTextMasterStyle10.last());
        } catch(IncorrectValueException _e) {
            _s.rgTextMasterStyle10.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgTextMasterStyle10.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FB4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.textDefaultsAtom = QSharedPointer<TextDefaults10Atom>(new TextDefaults10Atom(&_s));
            parseTextDefaults10Atom(in, *_s.textDefaultsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.textDefaultsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.textDefaultsAtom.clear();
            in.rewind(_m);
        }
    }
    parseGridSpacing10Atom(in, _s.gridSpacingAtom);
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgCommentIndex10.append(CommentIndex10Container(&_s));
            parseCommentIndex10Container(in, _s.rgCommentIndex10.last());
        } catch(IncorrectValueException _e) {
            _s.rgCommentIndex10.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgCommentIndex10.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x32C8)&&(_optionCheck.recLen == 0x04);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.fontEmbedFlagsAtom = QSharedPointer<FontEmbedFlags10Atom>(new FontEmbedFlags10Atom(&_s));
            parseFontEmbedFlags10Atom(in, *_s.fontEmbedFlagsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.fontEmbedFlagsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.fontEmbedFlagsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x1)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen<=510)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.copyrightAtom = QSharedPointer<CopyrightAtom>(new CopyrightAtom(&_s));
            parseCopyrightAtom(in, *_s.copyrightAtom.data());
        } catch(IncorrectValueException _e) {
            _s.copyrightAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.copyrightAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x2)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen<=510)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.keywordsAtom = QSharedPointer<KeywordsAtom>(new KeywordsAtom(&_s));
            parseKeywordsAtom(in, *_s.keywordsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.keywordsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.keywordsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x36B0)&&(_optionCheck.recLen == 0x04);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.filterPrivacyFlagsAtom = QSharedPointer<FilterPrivacyFlags10Atom>(new FilterPrivacyFlags10Atom(&_s));
            parseFilterPrivacyFlags10Atom(in, *_s.filterPrivacyFlagsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.filterPrivacyFlagsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.filterPrivacyFlagsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x0FB3);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.outlineTextPropsContainer = QSharedPointer<OutlineTextProps10Container>(new OutlineTextProps10Container(&_s));
            parseOutlineTextProps10Container(in, *_s.outlineTextPropsContainer.data());
        } catch(IncorrectValueException _e) {
            _s.outlineTextPropsContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.outlineTextPropsContainer.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x36B1)&&(_optionCheck.recLen == 0x01);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.docToolbarStatesAtom = QSharedPointer<DocToolbarStates10Atom>(new DocToolbarStates10Atom(&_s));
            parseDocToolbarStates10Atom(in, *_s.docToolbarStatesAtom.data());
        } catch(IncorrectValueException _e) {
            _s.docToolbarStatesAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.docToolbarStatesAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x2EF1);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideListTableContainer = QSharedPointer<SlideListTable10Container>(new SlideListTable10Container(&_s));
            parseSlideListTable10Container(in, *_s.slideListTableContainer.data());
        } catch(IncorrectValueException _e) {
            _s.slideListTableContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideListTableContainer.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x2EEC);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.rgDiffTree10Container = QSharedPointer<DiffTree10Container>(new DiffTree10Container(&_s));
            parseDiffTree10Container(in, *_s.rgDiffTree10Container.data());
        } catch(IncorrectValueException _e) {
            _s.rgDiffTree10Container.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgDiffTree10Container.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x03)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen<=510)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.modifyPasswordAtom = QSharedPointer<ModifyPasswordAtom>(new ModifyPasswordAtom(&_s));
            parseModifyPasswordAtom(in, *_s.modifyPasswordAtom.data());
        } catch(IncorrectValueException _e) {
            _s.modifyPasswordAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.modifyPasswordAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x036B2)&&(_optionCheck.recLen == 0x06);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.photoAlbumInfoAtom = QSharedPointer<PhotoAlbumInfo10Atom>(new PhotoAlbumInfo10Atom(&_s));
            parsePhotoAlbumInfo10Atom(in, *_s.photoAlbumInfoAtom.data());
        } catch(IncorrectValueException _e) {
            _s.photoAlbumInfoAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.photoAlbumInfoAtom.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseTextMasterStyle10Level(LEInputStream& in, TextMasterStyle10Level& _s) {
    _s.streamOffset = in.getPosition();
    parseTextCFException10(in, _s.cf10);
}
void MSO::parseNotesTextViewInfoContainer(LEInputStream& in, NotesTextViewInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x413)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x413");
    }
    parseZoomViewInfoAtom(in, _s.zoomViewInfo);
}
void MSO::parseOutlineViewInfoContainer(LEInputStream& in, OutlineViewInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x407)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x407");
    }
    parseNoZoomViewInfoAtom(in, _s.noZoomViewInfo);
}
void MSO::parseNormalViewSetInfoContainer(LEInputStream& in, NormalViewSetInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x414)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x414");
    }
    if (!(_s.rh.recLen == 0x1C)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x1C");
    }
    parseNormalViewSetInfoAtom(in, _s.normalViewSetInfoAtom);
}
void MSO::parseSlideListWithTextSubContainerOrAtom(LEInputStream& in, SlideListWithTextSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseSlidePersistAtom(in, _s.slidePersistAtom);
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.atoms.append(TextContainer(&_s));
            parseTextContainer(in, _s.atoms.last());
        } catch(IncorrectValueException _e) {
            _s.atoms.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.atoms.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseTextContainer(LEInputStream& in, TextContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseTextHeaderAtom(in, _s.textHeaderAtom);
    _m = in.setMark();
    RecordHeader _choice(&_s);
    parseRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recVer == 0)&&(_choice.recInstance == 0)&&(_choice.recType == 0xFA0)&&(_choice.recLen%2==0)) {
        _s.text = TextContainer::choice1060411409(new TextCharsAtom(&_s));
        parseTextCharsAtom(in, *(TextCharsAtom*)_s.text.data());
    } else if ((_choice.recVer == 0)&&(_choice.recInstance == 0)&&(_choice.recType == 0xFA8)) {
        _s.text = TextContainer::choice1060411409(new TextBytesAtom(&_s));
        parseTextBytesAtom(in, *(TextBytesAtom*)_s.text.data());
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFA1);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.style = QSharedPointer<StyleTextPropAtom>(new StyleTextPropAtom(&_s));
            parseStyleTextPropAtom(in, *_s.style.data());
        } catch(IncorrectValueException _e) {
            _s.style.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.style.clear();
            in.rewind(_m);
        }
    }
    if (_s.style) {
        quint32 count = 0;
        if (_s.text.is<TextCharsAtom>()) {
            count = _s.text.get<TextCharsAtom>()->textChars.size();
        }
        if (_s.text.is<TextBytesAtom>()) {
            count = _s.text.get<TextBytesAtom>()->textChars.size();
        }
        quint32 sum = 0;
        do {
        _s.style->rgTextPFRun.append(TextPFRun(_s.style.data()));
            parseTextPFRun(in, _s.style->rgTextPFRun.last());
            sum += _s.style->rgTextPFRun.last().count;
        } while (sum <= count);
        sum = 0;
        do {
            _s.style->rgTextCFRun.append(TextCFRun(_s.style.data()));
            parseTextCFRun(in, _s.style->rgTextCFRun.last());
            sum += _s.style->rgTextCFRun.last().count;
        } while (sum <= count);
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.meta.append(TextContainerMeta(&_s));
            parseTextContainerMeta(in, _s.meta.last());
        } catch(IncorrectValueException _e) {
            _s.meta.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.meta.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFA2);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.master = QSharedPointer<MasterTextPropAtom>(new MasterTextPropAtom(&_s));
            parseMasterTextPropAtom(in, *_s.master.data());
        } catch(IncorrectValueException _e) {
            _s.master.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.master.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.bookmark.append(TextBookmarkAtom(&_s));
            parseTextBookmarkAtom(in, _s.bookmark.last());
        } catch(IncorrectValueException _e) {
            _s.bookmark.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.bookmark.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFA6);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.textRuler = QSharedPointer<TextRulerAtom>(new TextRulerAtom(&_s));
            parseTextRulerAtom(in, *_s.textRuler.data());
        } catch(IncorrectValueException _e) {
            _s.textRuler.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.textRuler.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 3)&&(_optionCheck.recInstance == 9)&&(_optionCheck.recType == 0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown = QSharedPointer<UnknownTextContainerChild>(new UnknownTextContainerChild(&_s));
            parseUnknownTextContainerChild(in, *_s.unknown.data());
        } catch(IncorrectValueException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0xFAA);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.specialinfo = QSharedPointer<TextSpecialInfoAtom>(new TextSpecialInfoAtom(&_s));
            parseTextSpecialInfoAtom(in, *_s.specialinfo.data());
        } catch(IncorrectValueException _e) {
            _s.specialinfo.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.specialinfo.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.interactive.append(TextContainerInteractiveInfo(&_s));
            parseTextContainerInteractiveInfo(in, _s.interactive.last());
        } catch(IncorrectValueException _e) {
            _s.interactive.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.interactive.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0xFAA);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.specialinfo2 = QSharedPointer<TextSpecialInfoAtom>(new TextSpecialInfoAtom(&_s));
            parseTextSpecialInfoAtom(in, *_s.specialinfo2.data());
        } catch(IncorrectValueException _e) {
            _s.specialinfo2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.specialinfo2.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseMouseClickTextInfo(LEInputStream& in, MouseClickTextInfo& _s) {
    _s.streamOffset = in.getPosition();
    parseMouseClickInteractiveInfoContainer(in, _s.interactive);
    parseMouseClickTextInteractiveInfoAtom(in, _s.text);
}
void MSO::parseMouseOverTextInfo(LEInputStream& in, MouseOverTextInfo& _s) {
    _s.streamOffset = in.getPosition();
    parseMouseOverInteractiveInfoContainer(in, _s.interactive);
    parseMouseOverTextInteractiveInfoAtom(in, _s.text);
}
void MSO::parseTextClientDataSubContainerOrAtom(LEInputStream& in, TextClientDataSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    RecordHeader _choice(&_s);
    parseRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0)&&(_choice.recType == 0xF9E)&&(_choice.recLen == 4)) {
        _s.anon = TextClientDataSubContainerOrAtom::choice948925432(new OutlineTextRefAtom(&_s));
        parseOutlineTextRefAtom(in, *(OutlineTextRefAtom*)_s.anon.data());
    } else if ((_choice.recInstance == 0 || _choice.recInstance == 1 || _choice.recInstance == 2 || _choice.recInstance == 3 || _choice.recInstance == 4 || _choice.recInstance == 5)&&(_choice.recType == 0xF9F)&&(_choice.recLen == 4)) {
        _s.anon = TextClientDataSubContainerOrAtom::choice948925432(new TextContainer(&_s));
        parseTextContainer(in, *(TextContainer*)_s.anon.data());
    } else {
        _s.anon = TextClientDataSubContainerOrAtom::choice948925432(new TextRulerAtom(&_s));
        parseTextRulerAtom(in, *(TextRulerAtom*)_s.anon.data());
    }
}
void MSO::parseTextPFRun(LEInputStream& in, TextPFRun& _s) {
    _s.streamOffset = in.getPosition();
    _s.count = in.readuint32();
    if (!(((quint32)_s.count)>0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.count)>0");
    }
    _s.indentLevel = in.readuint16();
    if (!(((quint16)_s.indentLevel)<=4)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.indentLevel)<=4");
    }
    parseTextPFException(in, _s.pf);
    if (!(_s.pf.masks.leftMargin == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.pf.masks.leftMargin == false");
    }
    if (!(_s.pf.masks.indent == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.pf.masks.indent == false");
    }
    if (!(_s.pf.masks.defaultTabSize == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.pf.masks.defaultTabSize == false");
    }
    if (!(_s.pf.masks.tabStops == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.pf.masks.tabStops == false");
    }
}
void MSO::parseTextCFRun(LEInputStream& in, TextCFRun& _s) {
    _s.streamOffset = in.getPosition();
    _s.count = in.readuint32();
    if (!(((quint32)_s.count)>0)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.count)>0");
    }
    parseTextCFException(in, _s.cf);
}
void MSO::parseTextCFExceptionAtom(LEInputStream& in, TextCFExceptionAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FA4)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FA4");
    }
    parseTextCFException(in, _s.cf);
}
void MSO::parseDefaultRulerAtom(LEInputStream& in, DefaultRulerAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FAB)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FAB");
    }
    parseTextRuler(in, _s.defaultTextRuler);
    if (!(_s.defaultTextRuler.fDefaultTabSize == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fDefaultTabSize == true");
    }
    if (!(_s.defaultTextRuler.fCLevels == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fCLevels == true");
    }
    if (!(_s.defaultTextRuler.fTabStops == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fTabStops == true");
    }
    if (!(_s.defaultTextRuler.fLeftMargin1 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fLeftMargin1 == true");
    }
    if (!(_s.defaultTextRuler.fLeftMargin2 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fLeftMargin2 == true");
    }
    if (!(_s.defaultTextRuler.fLeftMargin3 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fLeftMargin3 == true");
    }
    if (!(_s.defaultTextRuler.fLeftMargin4 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fLeftMargin4 == true");
    }
    if (!(_s.defaultTextRuler.fIndent1 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fIndent1 == true");
    }
    if (!(_s.defaultTextRuler.fIndent2 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fIndent2 == true");
    }
    if (!(_s.defaultTextRuler.fIndent3 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fIndent3 == true");
    }
    if (!(_s.defaultTextRuler.fIndent4 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fIndent4 == true");
    }
    if (!(_s.defaultTextRuler.fIndent5 == true)) {
        throw IncorrectValueException(in.getPosition(), "_s.defaultTextRuler.fIndent5 == true");
    }
}
void MSO::parseTextPFExceptionAtom(LEInputStream& in, TextPFExceptionAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FA5)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FA5");
    }
    _s.reserved = in.readuint16();
    parseTextPFException(in, _s.pf);
}
void MSO::parseTextSIRun(LEInputStream& in, TextSIRun& _s) {
    _s.streamOffset = in.getPosition();
    _s.count = in.readuint32();
    if (!(((quint32)_s.count)>=1)) {
        throw IncorrectValueException(in.getPosition(), "((quint32)_s.count)>=1");
    }
    parseTextSIException(in, _s.si);
}
void MSO::parseTextSIExceptionAtom(LEInputStream& in, TextSIExceptionAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0FA9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FA9");
    }
    parseTextSIException(in, _s.textSIException);
    if (!(_s.textSIException.fPp10ext == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.textSIException.fPp10ext == false");
    }
    if (!(_s.textSIException.fBidi == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.textSIException.fBidi == false");
    }
    if (!(_s.textSIException.smartTag == false)) {
        throw IncorrectValueException(in.getPosition(), "_s.textSIException.smartTag == false");
    }
}
void MSO::parseTextMasterStyleAtom(LEInputStream& in, TextMasterStyleAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5 || _s.rh.recInstance == 6 || _s.rh.recInstance == 7 || _s.rh.recInstance == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5 || _s.rh.recInstance == 6 || _s.rh.recInstance == 7 || _s.rh.recInstance == 8");
    }
    if (!(_s.rh.recType == 0x0FA3)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FA3");
    }
    _s.cLevels = in.readuint16();
    if (!(((quint16)_s.cLevels)<=5)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.cLevels)<=5");
    }
    _s._has_lstLvl1level = _s.cLevels>0 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl1level) {
        _s.lstLvl1level = in.readuint16();
    }
    if (_s.cLevels>0) {
        _s.lstLvl1 = QSharedPointer<TextMasterStyleLevel>(new TextMasterStyleLevel(&_s));
        parseTextMasterStyleLevel(in, *_s.lstLvl1.data());
    }
    _s._has_lstLvl2level = _s.cLevels>1 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl2level) {
        _s.lstLvl2level = in.readuint16();
    }
    if (_s.cLevels>1) {
        _s.lstLvl2 = QSharedPointer<TextMasterStyleLevel>(new TextMasterStyleLevel(&_s));
        parseTextMasterStyleLevel(in, *_s.lstLvl2.data());
    }
    _s._has_lstLvl3level = _s.cLevels>2 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl3level) {
        _s.lstLvl3level = in.readuint16();
    }
    if (_s.cLevels>2) {
        _s.lstLvl3 = QSharedPointer<TextMasterStyleLevel>(new TextMasterStyleLevel(&_s));
        parseTextMasterStyleLevel(in, *_s.lstLvl3.data());
    }
    _s._has_lstLvl4level = _s.cLevels>3 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl4level) {
        _s.lstLvl4level = in.readuint16();
    }
    if (_s.cLevels>3) {
        _s.lstLvl4 = QSharedPointer<TextMasterStyleLevel>(new TextMasterStyleLevel(&_s));
        parseTextMasterStyleLevel(in, *_s.lstLvl4.data());
    }
    _s._has_lstLvl5level = _s.cLevels>4 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl5level) {
        _s.lstLvl5level = in.readuint16();
    }
    if (_s.cLevels>4) {
        _s.lstLvl5 = QSharedPointer<TextMasterStyleLevel>(new TextMasterStyleLevel(&_s));
        parseTextMasterStyleLevel(in, *_s.lstLvl5.data());
    }
}
void MSO::parsePP10SlideBinaryTagExtension(LEInputStream& in, PP10SlideBinaryTagExtension& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xFBA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xFBA");
    }
    if (!(_s.rh.recLen == 0x10)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recLen == 0x10");
    }
    _c = 8;
    _s.tagName.resize(_c);
    for (int _i=0; _i<_c; ++_i) {
        _s.tagName[_i] = in.readuint16();
    }
    parseRecordHeader(in, _s.rhData);
    if (!(_s.rhData.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recVer == 0");
    }
    if (!(_s.rhData.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recInstance == 0");
    }
    if (!(_s.rhData.recType == 0x138B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rhData.recType == 0x138B");
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgTextMasterStyleAtom.append(TextMasterStyle10Atom(&_s));
            parseTextMasterStyle10Atom(in, _s.rgTextMasterStyleAtom.last());
        } catch(IncorrectValueException _e) {
            _s.rgTextMasterStyleAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgTextMasterStyleAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgComment10Container.append(Comment10Container(&_s));
            parseComment10Container(in, _s.rgComment10Container.last());
        } catch(IncorrectValueException _e) {
            _s.rgComment10Container.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgComment10Container.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x2EE7)&&(_optionCheck.recLen == 8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.linkedSlideAtom = QSharedPointer<LinkedSlide10Atom>(new LinkedSlide10Atom(&_s));
            parseLinkedSlide10Atom(in, *_s.linkedSlideAtom.data());
        } catch(IncorrectValueException _e) {
            _s.linkedSlideAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.linkedSlideAtom.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgLinkedShape10Atom.append(LinkedShape10Atom(&_s));
            parseLinkedShape10Atom(in, _s.rgLinkedShape10Atom.last());
        } catch(IncorrectValueException _e) {
            _s.rgLinkedShape10Atom.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgLinkedShape10Atom.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x2EEA)&&(_optionCheck.recLen == 4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideFlagsAtom = QSharedPointer<SlideFlags10Atom>(new SlideFlags10Atom(&_s));
            parseSlideFlags10Atom(in, *_s.slideFlagsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.slideFlagsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideFlagsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x2EEB)&&(_optionCheck.recLen == 8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideTimeAtom = QSharedPointer<SlideTime10Atom>(new SlideTime10Atom(&_s));
            parseSlideTime10Atom(in, *_s.slideTimeAtom.data());
        } catch(IncorrectValueException _e) {
            _s.slideTimeAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideTimeAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x101D);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown = QSharedPointer<UnknownSlideContainerChild>(new UnknownSlideContainerChild(&_s));
            parseUnknownSlideContainerChild(in, *_s.unknown.data());
        } catch(IncorrectValueException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x2B00)&&(_optionCheck.recLen == 4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.hashCodeAtom = QSharedPointer<HashCode10Atom>(new HashCode10Atom(&_s));
            parseHashCode10Atom(in, *_s.hashCodeAtom.data());
        } catch(IncorrectValueException _e) {
            _s.hashCodeAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.hashCodeAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 1)&&(_optionCheck.recType == 0xF144);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.extTimeNodeContainer = QSharedPointer<ExtTimeNodeContainer>(new ExtTimeNodeContainer(&_s));
            parseExtTimeNodeContainer(in, *_s.extTimeNodeContainer.data());
        } catch(IncorrectValueException _e) {
            _s.extTimeNodeContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.extTimeNodeContainer.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x2B02);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.buildListContainer = QSharedPointer<BuildListContainer>(new BuildListContainer(&_s));
            parseBuildListContainer(in, *_s.buildListContainer.data());
        } catch(IncorrectValueException _e) {
            _s.buildListContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.buildListContainer.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseExObjListSubContainer(LEInputStream& in, ExObjListSubContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0)&&(_choice.recType == 0x1006)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExAviMovieContainer(&_s));
        parseExAviMovieContainer(in, *(ExAviMovieContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0x100E)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExCDAudioContainer(&_s));
        parseExCDAudioContainer(in, *(ExCDAudioContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0xFEE)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExControlContainer(&_s));
        parseExControlContainer(in, *(ExControlContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0xFD7)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExHyperlinkContainer(&_s));
        parseExHyperlinkContainer(in, *(ExHyperlinkContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0x1007)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExMCIMovieContainer(&_s));
        parseExMCIMovieContainer(in, *(ExMCIMovieContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0x100D)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExMIDIAudioContainer(&_s));
        parseExMIDIAudioContainer(in, *(ExMIDIAudioContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0x0)&&(_choice.recType == 0x0FCC)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExOleEmbedContainer(&_s));
        parseExOleEmbedContainer(in, *(ExOleEmbedContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0x0)&&(_choice.recType == 0x0FCE)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExOleLinkContainer(&_s));
        parseExOleLinkContainer(in, *(ExOleLinkContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0x100F)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExWAVAudioEmbeddedContainer(&_s));
        parseExWAVAudioEmbeddedContainer(in, *(ExWAVAudioEmbeddedContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recType == 0x1010)) {
        _s.anon = ExObjListSubContainer::choice2338534801(new ExWAVAudioLinkContainer(&_s));
        parseExWAVAudioLinkContainer(in, *(ExWAVAudioLinkContainer*)_s.anon.data());
    } else {
        _s.anon = ExObjListSubContainer::choice2338534801(new UnknownExObjListSubContainerChild(&_s));
        parseUnknownExObjListSubContainerChild(in, *(UnknownExObjListSubContainerChild*)_s.anon.data());
    }
}
void MSO::parseOfficeArtDggContainer(LEInputStream& in, OfficeArtDggContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x0F000)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F000");
    }
    parseOfficeArtFDGGBlock(in, _s.drawingGroup);
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recType == 0x0F001);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.blipStore = QSharedPointer<OfficeArtBStoreContainer>(new OfficeArtBStoreContainer(&_s));
            parseOfficeArtBStoreContainer(in, *_s.blipStore.data());
        } catch(IncorrectValueException _e) {
            _s.blipStore.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.blipStore.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x3)&&(_optionCheck.recType == 0x0F00B);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.drawingPrimaryOptions = QSharedPointer<OfficeArtFOPT>(new OfficeArtFOPT(&_s));
            parseOfficeArtFOPT(in, *_s.drawingPrimaryOptions.data());
        } catch(IncorrectValueException _e) {
            _s.drawingPrimaryOptions.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.drawingPrimaryOptions.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 3)&&(_optionCheck.recType == 0xF122);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.drawingTertiaryOptions = QSharedPointer<OfficeArtTertiaryFOPT>(new OfficeArtTertiaryFOPT(&_s));
            parseOfficeArtTertiaryFOPT(in, *_s.drawingTertiaryOptions.data());
        } catch(IncorrectValueException _e) {
            _s.drawingTertiaryOptions.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.drawingTertiaryOptions.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recType == 0xF11A)&&(_optionCheck.recLen==4*_optionCheck.recInstance);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.colorMRU = QSharedPointer<OfficeArtColorMRUContainer>(new OfficeArtColorMRUContainer(&_s));
            parseOfficeArtColorMRUContainer(in, *_s.colorMRU.data());
        } catch(IncorrectValueException _e) {
            _s.colorMRU.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.colorMRU.clear();
            in.rewind(_m);
        }
    }
    parseOfficeArtSplitMenuColorContainer(in, _s.splitColors);
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recType == 0x0F001);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.blipStore2 = QSharedPointer<OfficeArtBStoreContainer>(new OfficeArtBStoreContainer(&_s));
            parseOfficeArtBStoreContainer(in, *_s.blipStore2.data());
        } catch(IncorrectValueException _e) {
            _s.blipStore2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.blipStore2.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 3)&&(_optionCheck.recType == 0xF122);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown = QSharedPointer<OfficeArtTertiaryFOPT>(new OfficeArtTertiaryFOPT(&_s));
            parseOfficeArtTertiaryFOPT(in, *_s.unknown.data());
        } catch(IncorrectValueException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseOfficeArtFOPTEChoice(LEInputStream& in, OfficeArtFOPTEChoice& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtFOPTEOPID _choice(&_s);
    parseOfficeArtFOPTEOPID(in, _choice);
    in.rewind(_m);
    if ((_choice.opid == 0x007F)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ProtectionBooleanProperties(&_s));
        parseProtectionBooleanProperties(in, *(ProtectionBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x0080)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ITxid(&_s));
        parseITxid(in, *(ITxid*)_s.anon.data());
    } else if ((_choice.opid == 0x053F)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DiagramBooleanProperties(&_s));
        parseDiagramBooleanProperties(in, *(DiagramBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x0081)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxTextLeft(&_s));
        parseDxTextLeft(in, *(DxTextLeft*)_s.anon.data());
    } else if ((_choice.opid == 0x0082)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DyTextTop(&_s));
        parseDyTextTop(in, *(DyTextTop*)_s.anon.data());
    } else if ((_choice.opid == 0x0083)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxTextRight(&_s));
        parseDxTextRight(in, *(DxTextRight*)_s.anon.data());
    } else if ((_choice.opid == 0x0084)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DyTextBottom(&_s));
        parseDyTextBottom(in, *(DyTextBottom*)_s.anon.data());
    } else if ((_choice.opid == 0x0085)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new WrapText(&_s));
        parseWrapText(in, *(WrapText*)_s.anon.data());
    } else if ((_choice.opid == 0x0087)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new AnchorText(&_s));
        parseAnchorText(in, *(AnchorText*)_s.anon.data());
    } else if ((_choice.opid == 0x00BF)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new TextBooleanProperties(&_s));
        parseTextBooleanProperties(in, *(TextBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x008A)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new HspNext(&_s));
        parseHspNext(in, *(HspNext*)_s.anon.data());
    } else if ((_choice.opid == 0x0104)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Pib(&_s));
        parsePib(in, *(Pib*)_s.anon.data());
    } else if ((_choice.opid == 0x0105)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PibName(&_s));
        parsePibName(in, *(PibName*)_s.anon.data());
    } else if ((_choice.opid == 0x0144)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ShapePath(&_s));
        parseShapePath(in, *(ShapePath*)_s.anon.data());
    } else if ((_choice.opid == 0x0147)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new AdjustValue(&_s));
        parseAdjustValue(in, *(AdjustValue*)_s.anon.data());
    } else if ((_choice.opid == 0x0148)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Adjust2Value(&_s));
        parseAdjust2Value(in, *(Adjust2Value*)_s.anon.data());
    } else if ((_choice.opid == 0x0149)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Adjust3Value(&_s));
        parseAdjust3Value(in, *(Adjust3Value*)_s.anon.data());
    } else if ((_choice.opid == 0x014A)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Adjust4Value(&_s));
        parseAdjust4Value(in, *(Adjust4Value*)_s.anon.data());
    } else if ((_choice.opid == 0x014B)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Adjust5Value(&_s));
        parseAdjust5Value(in, *(Adjust5Value*)_s.anon.data());
    } else if ((_choice.opid == 0x014C)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Adjust6Value(&_s));
        parseAdjust6Value(in, *(Adjust6Value*)_s.anon.data());
    } else if ((_choice.opid == 0x014D)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Adjust7Value(&_s));
        parseAdjust7Value(in, *(Adjust7Value*)_s.anon.data());
    } else if ((_choice.opid == 0x014E)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Adjust8Value(&_s));
        parseAdjust8Value(in, *(Adjust8Value*)_s.anon.data());
    } else if ((_choice.opid == 0x017F)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new GeometryBooleanProperties(&_s));
        parseGeometryBooleanProperties(in, *(GeometryBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x0180)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillType(&_s));
        parseFillType(in, *(FillType*)_s.anon.data());
    } else if ((_choice.opid == 0x0181)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillColor(&_s));
        parseFillColor(in, *(FillColor*)_s.anon.data());
    } else if ((_choice.opid == 0x0182)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillOpacity(&_s));
        parseFillOpacity(in, *(FillOpacity*)_s.anon.data());
    } else if ((_choice.opid == 0x0183)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillBackColor(&_s));
        parseFillBackColor(in, *(FillBackColor*)_s.anon.data());
    } else if ((_choice.opid == 0x0184)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillBackOpacity(&_s));
        parseFillBackOpacity(in, *(FillBackOpacity*)_s.anon.data());
    } else if ((_choice.opid == 0x0185)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillCrMod(&_s));
        parseFillCrMod(in, *(FillCrMod*)_s.anon.data());
    } else if ((_choice.opid == 0x0186)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillBlip(&_s));
        parseFillBlip(in, *(FillBlip*)_s.anon.data());
    } else if ((_choice.opid == 0x0187)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillBlipName(&_s));
        parseFillBlipName(in, *(FillBlipName*)_s.anon.data());
    } else if ((_choice.opid == 0x0188)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillBlipFlags(&_s));
        parseFillBlipFlags(in, *(FillBlipFlags*)_s.anon.data());
    } else if ((_choice.opid == 0x0189)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillWidth(&_s));
        parseFillWidth(in, *(FillWidth*)_s.anon.data());
    } else if ((_choice.opid == 0x018A)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillHeight(&_s));
        parseFillHeight(in, *(FillHeight*)_s.anon.data());
    } else if ((_choice.opid == 0x018B)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillAngle(&_s));
        parseFillAngle(in, *(FillAngle*)_s.anon.data());
    } else if ((_choice.opid == 0x018C)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillFocus(&_s));
        parseFillFocus(in, *(FillFocus*)_s.anon.data());
    } else if ((_choice.opid == 0x018D)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillToLeft(&_s));
        parseFillToLeft(in, *(FillToLeft*)_s.anon.data());
    } else if ((_choice.opid == 0x018E)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillToTop(&_s));
        parseFillToTop(in, *(FillToTop*)_s.anon.data());
    } else if ((_choice.opid == 0x018F)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillToRight(&_s));
        parseFillToRight(in, *(FillToRight*)_s.anon.data());
    } else if ((_choice.opid == 0x0190)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillToBottom(&_s));
        parseFillToBottom(in, *(FillToBottom*)_s.anon.data());
    } else if ((_choice.opid == 0x0191)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillRectLeft(&_s));
        parseFillRectLeft(in, *(FillRectLeft*)_s.anon.data());
    } else if ((_choice.opid == 0x0192)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillRectTop(&_s));
        parseFillRectTop(in, *(FillRectTop*)_s.anon.data());
    } else if ((_choice.opid == 0x0193)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillRectRight(&_s));
        parseFillRectRight(in, *(FillRectRight*)_s.anon.data());
    } else if ((_choice.opid == 0x0194)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillRectBottom(&_s));
        parseFillRectBottom(in, *(FillRectBottom*)_s.anon.data());
    } else if ((_choice.opid == 0x0195)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillDztype(&_s));
        parseFillDztype(in, *(FillDztype*)_s.anon.data());
    } else if ((_choice.opid == 0x0196)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillShadePreset(&_s));
        parseFillShadePreset(in, *(FillShadePreset*)_s.anon.data());
    } else if ((_choice.opid == 0x0197)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillShadeColors(&_s));
        parseFillShadeColors(in, *(FillShadeColors*)_s.anon.data());
    } else if ((_choice.opid == 0x0198)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillOriginX(&_s));
        parseFillOriginX(in, *(FillOriginX*)_s.anon.data());
    } else if ((_choice.opid == 0x0199)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillOriginY(&_s));
        parseFillOriginY(in, *(FillOriginY*)_s.anon.data());
    } else if ((_choice.opid == 0x019A)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillShapeOriginX(&_s));
        parseFillShapeOriginX(in, *(FillShapeOriginX*)_s.anon.data());
    } else if ((_choice.opid == 0x019B)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillShapeOriginY(&_s));
        parseFillShapeOriginY(in, *(FillShapeOriginY*)_s.anon.data());
    } else if ((_choice.opid == 0x019E)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillColorExt(&_s));
        parseFillColorExt(in, *(FillColorExt*)_s.anon.data());
    } else if ((_choice.opid == 0x01A2)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillBackColorExt(&_s));
        parseFillBackColorExt(in, *(FillBackColorExt*)_s.anon.data());
    } else if ((_choice.opid == 0x01BF)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new FillStyleBooleanProperties(&_s));
        parseFillStyleBooleanProperties(in, *(FillStyleBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x01C0)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineColor(&_s));
        parseLineColor(in, *(LineColor*)_s.anon.data());
    } else if ((_choice.opid == 0x01C1)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineOpacity(&_s));
        parseLineOpacity(in, *(LineOpacity*)_s.anon.data());
    } else if ((_choice.opid == 0x01C2)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineBackColor(&_s));
        parseLineBackColor(in, *(LineBackColor*)_s.anon.data());
    } else if ((_choice.opid == 0x01C5)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineFillBlip(&_s));
        parseLineFillBlip(in, *(LineFillBlip*)_s.anon.data());
    } else if ((_choice.opid == 0x01CB)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineWidth(&_s));
        parseLineWidth(in, *(LineWidth*)_s.anon.data());
    } else if ((_choice.opid == 0x01CD)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineStyle(&_s));
        parseLineStyle(in, *(LineStyle*)_s.anon.data());
    } else if ((_choice.opid == 0x01CE)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineDashing(&_s));
        parseLineDashing(in, *(LineDashing*)_s.anon.data());
    } else if ((_choice.opid == 0x0403)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new WzFillId(&_s));
        parseWzFillId(in, *(WzFillId*)_s.anon.data());
    } else if ((_choice.opid == 0x01FF)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineStyleBooleanProperties(&_s));
        parseLineStyleBooleanProperties(in, *(LineStyleBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x01D0)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineStartArrowhead(&_s));
        parseLineStartArrowhead(in, *(LineStartArrowhead*)_s.anon.data());
    } else if ((_choice.opid == 0x01D1)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineEndArrowhead(&_s));
        parseLineEndArrowhead(in, *(LineEndArrowhead*)_s.anon.data());
    } else if ((_choice.opid == 0x01D2)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineStartArrowWidth(&_s));
        parseLineStartArrowWidth(in, *(LineStartArrowWidth*)_s.anon.data());
    } else if ((_choice.opid == 0x01D3)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineStartArrowLength(&_s));
        parseLineStartArrowLength(in, *(LineStartArrowLength*)_s.anon.data());
    } else if ((_choice.opid == 0x01D4)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineEndArrowWidth(&_s));
        parseLineEndArrowWidth(in, *(LineEndArrowWidth*)_s.anon.data());
    } else if ((_choice.opid == 0x01D5)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineEndArrowLength(&_s));
        parseLineEndArrowLength(in, *(LineEndArrowLength*)_s.anon.data());
    } else if ((_choice.opid == 0x01D6)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LineJoinStyle(&_s));
        parseLineJoinStyle(in, *(LineJoinStyle*)_s.anon.data());
    } else if ((_choice.opid == 0x0201)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ShadowColor(&_s));
        parseShadowColor(in, *(ShadowColor*)_s.anon.data());
    } else if ((_choice.opid == 0x0204)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ShadowOpacity(&_s));
        parseShadowOpacity(in, *(ShadowOpacity*)_s.anon.data());
    } else if ((_choice.opid == 0x0205)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ShadowOffsetX(&_s));
        parseShadowOffsetX(in, *(ShadowOffsetX*)_s.anon.data());
    } else if ((_choice.opid == 0x0206)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ShadowOffsetY(&_s));
        parseShadowOffsetY(in, *(ShadowOffsetY*)_s.anon.data());
    } else if ((_choice.opid == 0x023F)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ShadowStyleBooleanProperties(&_s));
        parseShadowStyleBooleanProperties(in, *(ShadowStyleBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x033F)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new ShapeBooleanProperties(&_s));
        parseShapeBooleanProperties(in, *(ShapeBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x0301)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new HspMaster(&_s));
        parseHspMaster(in, *(HspMaster*)_s.anon.data());
    } else if ((_choice.opid == 0x0004)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Rotation(&_s));
        parseRotation(in, *(Rotation*)_s.anon.data());
    } else if ((_choice.opid == 0x0341)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxyCalloutGap(&_s));
        parseDxyCalloutGap(in, *(DxyCalloutGap*)_s.anon.data());
    } else if ((_choice.opid == 0x0342)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Spcoa(&_s));
        parseSpcoa(in, *(Spcoa*)_s.anon.data());
    } else if ((_choice.opid == 0x0343)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new Spcod(&_s));
        parseSpcod(in, *(Spcod*)_s.anon.data());
    } else if ((_choice.opid == 0x0344)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxyCalloutDropSpecified(&_s));
        parseDxyCalloutDropSpecified(in, *(DxyCalloutDropSpecified*)_s.anon.data());
    } else if ((_choice.opid == 0x0345)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxyCalloutLengthSpecified(&_s));
        parseDxyCalloutLengthSpecified(in, *(DxyCalloutLengthSpecified*)_s.anon.data());
    } else if ((_choice.opid == 0x037F)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new CalloutBooleanProperties(&_s));
        parseCalloutBooleanProperties(in, *(CalloutBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x0393)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PctHR(&_s));
        parsePctHR(in, *(PctHR*)_s.anon.data());
    } else if ((_choice.opid == 0x0394)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new AlignHR(&_s));
        parseAlignHR(in, *(AlignHR*)_s.anon.data());
    } else if ((_choice.opid == 0x0395)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxHeightHR(&_s));
        parseDxHeightHR(in, *(DxHeightHR*)_s.anon.data());
    } else if ((_choice.opid == 0x0396)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxWidthHR(&_s));
        parseDxWidthHR(in, *(DxWidthHR*)_s.anon.data());
    } else if ((_choice.opid == 0x0388)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new LidRegroup(&_s));
        parseLidRegroup(in, *(LidRegroup*)_s.anon.data());
    } else if ((_choice.opid == 0x0304)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new BWMode(&_s));
        parseBWMode(in, *(BWMode*)_s.anon.data());
    } else if ((_choice.opid == 0x0088)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new TxflTextFlow(&_s));
        parseTxflTextFlow(in, *(TxflTextFlow*)_s.anon.data());
    } else if ((_choice.opid == 0x038F)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PosH(&_s));
        parsePosH(in, *(PosH*)_s.anon.data());
    } else if ((_choice.opid == 0x0390)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PosRelH(&_s));
        parsePosRelH(in, *(PosRelH*)_s.anon.data());
    } else if ((_choice.opid == 0x0391)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PosV(&_s));
        parsePosV(in, *(PosV*)_s.anon.data());
    } else if ((_choice.opid == 0x0392)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PosRelV(&_s));
        parsePosRelV(in, *(PosRelV*)_s.anon.data());
    } else if ((_choice.opid == 0x0383)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PWrapPolygonVertices(&_s));
        parsePWrapPolygonVertices(in, *(PWrapPolygonVertices*)_s.anon.data());
    } else if ((_choice.opid == 0x0384)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxWrapDistLeft(&_s));
        parseDxWrapDistLeft(in, *(DxWrapDistLeft*)_s.anon.data());
    } else if ((_choice.opid == 0x0385)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DyWrapDistTop(&_s));
        parseDyWrapDistTop(in, *(DyWrapDistTop*)_s.anon.data());
    } else if ((_choice.opid == 0x0386)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DxWrapDistRight(&_s));
        parseDxWrapDistRight(in, *(DxWrapDistRight*)_s.anon.data());
    } else if ((_choice.opid == 0x0387)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new DyWrapDistBottom(&_s));
        parseDyWrapDistBottom(in, *(DyWrapDistBottom*)_s.anon.data());
    } else if ((_choice.opid == 0x03bf)&&(_choice.fBid == false)&&(_choice.fComplex == false)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new GroupShapeBooleanProperties(&_s));
        parseGroupShapeBooleanProperties(in, *(GroupShapeBooleanProperties*)_s.anon.data());
    } else if ((_choice.opid == 0x0145)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PVertices(&_s));
        parsePVertices(in, *(PVertices*)_s.anon.data());
    } else if ((_choice.opid == 0x0146)) {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new PSegmentInfo(&_s));
        parsePSegmentInfo(in, *(PSegmentInfo*)_s.anon.data());
    } else {
        _s.anon = OfficeArtFOPTEChoice::choice677423557(new OfficeArtFOPTE(&_s));
        parseOfficeArtFOPTE(in, *(OfficeArtFOPTE*)_s.anon.data());
    }
}
void MSO::parseOfficeArtClientAnchor(LEInputStream& in, OfficeArtClientAnchor& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0)&&(_choice.recLen == 0x8 || _choice.recLen == 0x10)) {
        _s.anon = OfficeArtClientAnchor::choice1726903461(new PptOfficeArtClientAnchor(&_s));
        parsePptOfficeArtClientAnchor(in, *(PptOfficeArtClientAnchor*)_s.anon.data());
    } else if ((_choice.recInstance == 0)&&(_choice.recLen == 0x4)) {
        _s.anon = OfficeArtClientAnchor::choice1726903461(new DocOfficeArtClientAnchor(&_s));
        parseDocOfficeArtClientAnchor(in, *(DocOfficeArtClientAnchor*)_s.anon.data());
    } else {
        _s.anon = OfficeArtClientAnchor::choice1726903461(new XlsOfficeArtClientAnchor(&_s));
        parseXlsOfficeArtClientAnchor(in, *(XlsOfficeArtClientAnchor*)_s.anon.data());
    }
}
void MSO::parsePptOfficeArtClientData(LEInputStream& in, PptOfficeArtClientData& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0xF011)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF011");
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xBDB)&&(_optionCheck.recLen == 1);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shapeFlagsAtom = QSharedPointer<ShapeFlagsAtom>(new ShapeFlagsAtom(&_s));
            parseShapeFlagsAtom(in, *_s.shapeFlagsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.shapeFlagsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shapeFlagsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xBDC)&&(_optionCheck.recLen == 1);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shapeFlags10Atom = QSharedPointer<ShapeFlags10Atom>(new ShapeFlags10Atom(&_s));
            parseShapeFlags10Atom(in, *_s.shapeFlags10Atom.data());
        } catch(IncorrectValueException _e) {
            _s.shapeFlags10Atom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shapeFlags10Atom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xBC1)&&(_optionCheck.recLen == 4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.exObjRefAtom = QSharedPointer<ExObjRefAtom>(new ExObjRefAtom(&_s));
            parseExObjRefAtom(in, *_s.exObjRefAtom.data());
        } catch(IncorrectValueException _e) {
            _s.exObjRefAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.exObjRefAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x1014);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.animationInfo = QSharedPointer<AnimationInfoContainer>(new AnimationInfoContainer(&_s));
            parseAnimationInfoContainer(in, *_s.animationInfo.data());
        } catch(IncorrectValueException _e) {
            _s.animationInfo.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.animationInfo.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFF2);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.mouseClickInteractiveInfo = QSharedPointer<MouseClickInteractiveInfoContainer>(new MouseClickInteractiveInfoContainer(&_s));
            parseMouseClickInteractiveInfoContainer(in, *_s.mouseClickInteractiveInfo.data());
        } catch(IncorrectValueException _e) {
            _s.mouseClickInteractiveInfo.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.mouseClickInteractiveInfo.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 1)&&(_optionCheck.recType == 0xFF2);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.mouseOverInteractiveInfo = QSharedPointer<MouseOverInteractiveInfoContainer>(new MouseOverInteractiveInfoContainer(&_s));
            parseMouseOverInteractiveInfoContainer(in, *_s.mouseOverInteractiveInfo.data());
        } catch(IncorrectValueException _e) {
            _s.mouseOverInteractiveInfo.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.mouseOverInteractiveInfo.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgShapeClientRoundtripData0.append(ShapeClientRoundtripDataSubcontainerOrAtom(&_s));
            parseShapeClientRoundtripDataSubcontainerOrAtom(in, _s.rgShapeClientRoundtripData0.last());
        } catch(IncorrectValueException _e) {
            _s.rgShapeClientRoundtripData0.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgShapeClientRoundtripData0.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xBC3)&&(_optionCheck.recLen == 8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.placeholderAtom = QSharedPointer<PlaceholderAtom>(new PlaceholderAtom(&_s));
            parsePlaceholderAtom(in, *_s.placeholderAtom.data());
        } catch(IncorrectValueException _e) {
            _s.placeholderAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.placeholderAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFE7);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.recolorInfoAtom = QSharedPointer<RecolorInfoAtom>(new RecolorInfoAtom(&_s));
            parseRecolorInfoAtom(in, *_s.recolorInfoAtom.data());
        } catch(IncorrectValueException _e) {
            _s.recolorInfoAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.recolorInfoAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFE8 || _optionCheck.recType == 0x1019);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown1 = QSharedPointer<UnknownOfficeArtClientDataChild>(new UnknownOfficeArtClientDataChild(&_s));
            parseUnknownOfficeArtClientDataChild(in, *_s.unknown1.data());
        } catch(IncorrectValueException _e) {
            _s.unknown1.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown1.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgShapeClientRoundtripData.append(ShapeClientRoundtripDataSubcontainerOrAtom(&_s));
            parseShapeClientRoundtripDataSubcontainerOrAtom(in, _s.rgShapeClientRoundtripData.last());
        } catch(IncorrectValueException _e) {
            _s.rgShapeClientRoundtripData.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgShapeClientRoundtripData.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFE8 || _optionCheck.recType == 0x1019);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown2 = QSharedPointer<UnknownOfficeArtClientDataChild>(new UnknownOfficeArtClientDataChild(&_s));
            parseUnknownOfficeArtClientDataChild(in, *_s.unknown2.data());
        } catch(IncorrectValueException _e) {
            _s.unknown2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown2.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseShapeProgBinaryTagContainer(LEInputStream& in, ShapeProgBinaryTagContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x138A)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x138A");
    }
    parseShapeProgBinaryTagSubContainerOrAtom(in, _s.rec);
}
void MSO::parseWordDocument(LEInputStream& in, WordDocument& _s) {
    _s.streamOffset = in.getPosition();
    parseFib(in, _s.fib);
}
void MSO::parseTable(LEInputStream& in, Table& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseSTSH(in, _s.stsh);
    parsePlcfSed(in, _s.plcfSed);
    parsePlcfhdd(in, _s.plcfHdd);
    parsePlcBteChpx(in, _s.plcfBteChpx);
    parsePlcfBtePapx(in, _s.plcfBtePapx);
    parseTcg(in, _s.cmds);
    parseClx(in, _s.clx);
    parseSttbfFfn(in, _s.sttbfFfn);
    _c = 600;
    _s.dop.resize(_c);
    in.readBytes(_s.dop);
}
void MSO::parsePcd(LEInputStream& in, Pcd& _s) {
    _s.streamOffset = in.getPosition();
    _s.fNoParaLast = in.readbit();
    _s.fR1 = in.readbit();
    _s.fDirtly = in.readbit();
    if (!(((bool)_s.fDirtly) == false)) {
        throw IncorrectValueException(in.getPosition(), "((bool)_s.fDirtly) == false");
    }
    _s.fR2 = in.readbit();
    _s.fR3 = in.readuint12();
    parseFCompressed(in, _s.fc);
    parsePrm(in, _s.prm);
}
void MSO::parseOfficeArtFBSE(LEInputStream& in, OfficeArtFBSE& _s) {
    _s.streamOffset = in.getPosition();
    int _c;
    LEInputStream::Mark _m;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x2");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5 || _s.rh.recInstance == 6 || _s.rh.recInstance == 7 || _s.rh.recInstance == 0x11 || _s.rh.recInstance == 0x12)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5 || _s.rh.recInstance == 6 || _s.rh.recInstance == 7 || _s.rh.recInstance == 0x11 || _s.rh.recInstance == 0x12");
    }
    if (!(_s.rh.recType == 0xF007)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF007");
    }
    _s.btWin32 = in.readuint8();
    _s.btMacOS = in.readuint8();
    _c = 16;
    _s.rgbUid.resize(_c);
    in.readBytes(_s.rgbUid);
    _s.tag = in.readuint16();
    _s.size = in.readuint32();
    _s.cRef = in.readuint32();
    _s.foDelay = in.readuint32();
    _s.unused1 = in.readuint8();
    _s.cbName = in.readuint8();
    _s.unused2 = in.readuint8();
    _s.unused3 = in.readuint8();
    _s._has_nameData = _s.cbName>0;
    if (_s._has_nameData) {
        _c = _s.cbName;
        _s.nameData.resize(_c);
        in.readBytes(_s.nameData);
    }
    if (_s.rh.recLen > 36 + _s.cbName) {
        _s.embeddedBlip = QSharedPointer<OfficeArtBlip>(new OfficeArtBlip(&_s));
        parseOfficeArtBlip(in, *_s.embeddedBlip.data());
    }
}
void MSO::parseOfficeArtBStoreContainerFileBlock(LEInputStream& in, OfficeArtBStoreContainerFileBlock& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recVer == 0x2)&&(_choice.recInstance == 0 || _choice.recInstance == 1 || _choice.recInstance == 2 || _choice.recInstance == 3 || _choice.recInstance == 4 || _choice.recInstance == 5 || _choice.recInstance == 6 || _choice.recInstance == 7 || _choice.recInstance == 0x11 || _choice.recInstance == 0x12)&&(_choice.recType == 0xF007)) {
        _s.anon = OfficeArtBStoreContainerFileBlock::choice2043165903(new OfficeArtFBSE(&_s));
        parseOfficeArtFBSE(in, *(OfficeArtFBSE*)_s.anon.data());
    } else {
        _s.anon = OfficeArtBStoreContainerFileBlock::choice2043165903(new OfficeArtBlip(&_s));
        parseOfficeArtBlip(in, *(OfficeArtBlip*)_s.anon.data());
    }
}
void MSO::parseSlideViewInfoInstance(LEInputStream& in, SlideViewInfoInstance& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1");
    }
    if (!(_s.rh.recType == 0x3FA)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x3FA");
    }
    parseSlideViewInfoAtom(in, _s.slideViewInfoAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x3FD)&&(_optionCheck.recLen == 0x34);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.zoomViewInfoAtom = QSharedPointer<ZoomViewInfoAtom>(new ZoomViewInfoAtom(&_s));
            parseZoomViewInfoAtom(in, *_s.zoomViewInfoAtom.data());
        } catch(IncorrectValueException _e) {
            _s.zoomViewInfoAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.zoomViewInfoAtom.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgGuideAtom.append(GuideAtom(&_s));
            parseGuideAtom(in, _s.rgGuideAtom.last());
        } catch(IncorrectValueException _e) {
            _s.rgGuideAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgGuideAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseDocProgBinaryTagSubContainerOrAtom(LEInputStream& in, DocProgBinaryTagSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    try {
        _s.anon = DocProgBinaryTagSubContainerOrAtom::choice214961565(new PP9DocBinaryTagExtension(&_s));
        parsePP9DocBinaryTagExtension(in, *(PP9DocBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _x) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = DocProgBinaryTagSubContainerOrAtom::choice214961565(new PP10DocBinaryTagExtension(&_s));
        parsePP10DocBinaryTagExtension(in, *(PP10DocBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _xx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = DocProgBinaryTagSubContainerOrAtom::choice214961565(new PP11DocBinaryTagExtension(&_s));
        parsePP11DocBinaryTagExtension(in, *(PP11DocBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _xxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = DocProgBinaryTagSubContainerOrAtom::choice214961565(new PP12DocBinaryTagExtension(&_s));
        parsePP12DocBinaryTagExtension(in, *(PP12DocBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _xxxx) {
        _s.anon.clear();
        in.rewind(_m);
        _s.anon = DocProgBinaryTagSubContainerOrAtom::choice214961565(new UnknownBinaryTag(&_s));
        parseUnknownBinaryTag(in, *(UnknownBinaryTag*)_s.anon.data());
    }}}}
}
void MSO::parseTextMasterStyle9Atom(LEInputStream& in, TextMasterStyle9Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5 || _s.rh.recInstance == 6 || _s.rh.recInstance == 7 || _s.rh.recInstance == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5 || _s.rh.recInstance == 6 || _s.rh.recInstance == 7 || _s.rh.recInstance == 8");
    }
    if (!(_s.rh.recType == 0x0FAD)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FAD");
    }
    _s.cLevels = in.readuint16();
    if (!(((quint16)_s.cLevels)<=5)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.cLevels)<=5");
    }
    if (_s.cLevels>0) {
        _s.lstLvl1 = QSharedPointer<TextMasterStyle9Level>(new TextMasterStyle9Level(&_s));
        parseTextMasterStyle9Level(in, *_s.lstLvl1.data());
    }
    if (_s.cLevels>1) {
        _s.lstLvl2 = QSharedPointer<TextMasterStyle9Level>(new TextMasterStyle9Level(&_s));
        parseTextMasterStyle9Level(in, *_s.lstLvl2.data());
    }
    if (_s.cLevels>2) {
        _s.lstLvl3 = QSharedPointer<TextMasterStyle9Level>(new TextMasterStyle9Level(&_s));
        parseTextMasterStyle9Level(in, *_s.lstLvl3.data());
    }
    if (_s.cLevels>3) {
        _s.lstLvl4 = QSharedPointer<TextMasterStyle9Level>(new TextMasterStyle9Level(&_s));
        parseTextMasterStyle9Level(in, *_s.lstLvl4.data());
    }
    if (_s.cLevels>4) {
        _s.lstLvl5 = QSharedPointer<TextMasterStyle9Level>(new TextMasterStyle9Level(&_s));
        parseTextMasterStyle9Level(in, *_s.lstLvl5.data());
    }
}
void MSO::parseBlipEntityAtom(LEInputStream& in, BlipEntityAtom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0");
    }
    if (!(_s.rh.recInstance<=128)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance<=128");
    }
    if (!(_s.rh.recType == 0x07F9)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x07F9");
    }
    _s.winBlipType = in.readuint8();
    if (!(((quint8)_s.winBlipType) == 0x02 || ((quint8)_s.winBlipType) == 0x03 || ((quint8)_s.winBlipType) == 0x05 || ((quint8)_s.winBlipType) == 0x06)) {
        throw IncorrectValueException(in.getPosition(), "((quint8)_s.winBlipType) == 0x02 || ((quint8)_s.winBlipType) == 0x03 || ((quint8)_s.winBlipType) == 0x05 || ((quint8)_s.winBlipType) == 0x06");
    }
    _s.unused = in.readuint8();
    parseOfficeArtBStoreContainerFileBlock(in, _s.blip);
}
void MSO::parseTextMasterStyle10Atom(LEInputStream& in, TextMasterStyle10Atom& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0x0");
    }
    if (!(_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5 || _s.rh.recInstance == 6 || _s.rh.recInstance == 7 || _s.rh.recInstance == 8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0 || _s.rh.recInstance == 1 || _s.rh.recInstance == 2 || _s.rh.recInstance == 3 || _s.rh.recInstance == 4 || _s.rh.recInstance == 5 || _s.rh.recInstance == 6 || _s.rh.recInstance == 7 || _s.rh.recInstance == 8");
    }
    if (!(_s.rh.recType == 0x0FB2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0FB2");
    }
    _s.cLevels = in.readuint16();
    if (!(((quint16)_s.cLevels)<=5)) {
        throw IncorrectValueException(in.getPosition(), "((quint16)_s.cLevels)<=5");
    }
    _s._has_lstLvl1level = _s.cLevels>0 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl1level) {
        _s.lstLvl1level = in.readuint16();
    }
    if (_s.cLevels>0) {
        _s.lstLvl1 = QSharedPointer<TextMasterStyle10Level>(new TextMasterStyle10Level(&_s));
        parseTextMasterStyle10Level(in, *_s.lstLvl1.data());
    }
    _s._has_lstLvl2level = _s.cLevels>1 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl2level) {
        _s.lstLvl2level = in.readuint16();
    }
    if (_s.cLevels>1) {
        _s.lstLvl2 = QSharedPointer<TextMasterStyle10Level>(new TextMasterStyle10Level(&_s));
        parseTextMasterStyle10Level(in, *_s.lstLvl2.data());
    }
    _s._has_lstLvl3level = _s.cLevels>2 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl3level) {
        _s.lstLvl3level = in.readuint16();
    }
    if (_s.cLevels>2) {
        _s.lstLvl3 = QSharedPointer<TextMasterStyle10Level>(new TextMasterStyle10Level(&_s));
        parseTextMasterStyle10Level(in, *_s.lstLvl3.data());
    }
    _s._has_lstLvl4level = _s.cLevels>3 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl4level) {
        _s.lstLvl4level = in.readuint16();
    }
    if (_s.cLevels>3) {
        _s.lstLvl4 = QSharedPointer<TextMasterStyle10Level>(new TextMasterStyle10Level(&_s));
        parseTextMasterStyle10Level(in, *_s.lstLvl4.data());
    }
    _s._has_lstLvl5level = _s.cLevels>4 && _s.rh.recInstance>=5;
    if (_s._has_lstLvl5level) {
        _s.lstLvl5level = in.readuint16();
    }
    if (_s.cLevels>4) {
        _s.lstLvl5 = QSharedPointer<TextMasterStyle10Level>(new TextMasterStyle10Level(&_s));
        parseTextMasterStyle10Level(in, *_s.lstLvl5.data());
    }
}
void MSO::parseTextContainerInteractiveInfo(LEInputStream& in, TextContainerInteractiveInfo& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    RecordHeader _choice(&_s);
    parseRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0)) {
        _s.interactive = TextContainerInteractiveInfo::choice3752530176(new MouseClickTextInfo(&_s));
        parseMouseClickTextInfo(in, *(MouseClickTextInfo*)_s.interactive.data());
    } else {
        _s.interactive = TextContainerInteractiveInfo::choice3752530176(new MouseOverTextInfo(&_s));
        parseMouseOverTextInfo(in, *(MouseOverTextInfo*)_s.interactive.data());
    }
}
void MSO::parseDocumentTextInfoContainer(LEInputStream& in, DocumentTextInfoContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x03F2)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03F2");
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0x2)&&(_optionCheck.recType == 0x0FC8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.kinsoku = QSharedPointer<KinsokuContainer>(new KinsokuContainer(&_s));
            parseKinsokuContainer(in, *_s.kinsoku.data());
        } catch(IncorrectValueException _e) {
            _s.kinsoku.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.kinsoku.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x07D5);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.fontCollection = QSharedPointer<FontCollectionContainer>(new FontCollectionContainer(&_s));
            parseFontCollectionContainer(in, *_s.fontCollection.data());
        } catch(IncorrectValueException _e) {
            _s.fontCollection.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.fontCollection.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FA4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.textCFDefaultsAtom = QSharedPointer<TextCFExceptionAtom>(new TextCFExceptionAtom(&_s));
            parseTextCFExceptionAtom(in, *_s.textCFDefaultsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.textCFDefaultsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.textCFDefaultsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FA5);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.textPFDefaultsAtom = QSharedPointer<TextPFExceptionAtom>(new TextPFExceptionAtom(&_s));
            parseTextPFExceptionAtom(in, *_s.textPFDefaultsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.textPFDefaultsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.textPFDefaultsAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FAB);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.defaultRulerAtom = QSharedPointer<DefaultRulerAtom>(new DefaultRulerAtom(&_s));
            parseDefaultRulerAtom(in, *_s.defaultRulerAtom.data());
        } catch(IncorrectValueException _e) {
            _s.defaultRulerAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.defaultRulerAtom.clear();
            in.rewind(_m);
        }
    }
    parseTextSIExceptionAtom(in, _s.textSIDefaultsAtom);
    parseTextMasterStyleAtom(in, _s.textMasterStyleAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0 || _optionCheck.recInstance == 1 || _optionCheck.recInstance == 2 || _optionCheck.recInstance == 3 || _optionCheck.recInstance == 4 || _optionCheck.recInstance == 5 || _optionCheck.recInstance == 6 || _optionCheck.recInstance == 7 || _optionCheck.recInstance == 8)&&(_optionCheck.recType == 0x0FA3);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.textMasterStyleAtom2 = QSharedPointer<TextMasterStyleAtom>(new TextMasterStyleAtom(&_s));
            parseTextMasterStyleAtom(in, *_s.textMasterStyleAtom2.data());
        } catch(IncorrectValueException _e) {
            _s.textMasterStyleAtom2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.textMasterStyleAtom2.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseSlideProgBinaryTagSubContainerOrAtom(LEInputStream& in, SlideProgBinaryTagSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    try {
        _s.anon = SlideProgBinaryTagSubContainerOrAtom::choice4024872665(new PP9SlideBinaryTagExtension(&_s));
        parsePP9SlideBinaryTagExtension(in, *(PP9SlideBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _x) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = SlideProgBinaryTagSubContainerOrAtom::choice4024872665(new PP12SlideBinaryTagExtension(&_s));
        parsePP12SlideBinaryTagExtension(in, *(PP12SlideBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _xx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = SlideProgBinaryTagSubContainerOrAtom::choice4024872665(new PP10SlideBinaryTagExtension(&_s));
        parsePP10SlideBinaryTagExtension(in, *(PP10SlideBinaryTagExtension*)_s.anon.data());
    } catch (IncorrectValueException _xxx) {
        _s.anon.clear();
        in.rewind(_m);
        _s.anon = SlideProgBinaryTagSubContainerOrAtom::choice4024872665(new UnknownBinaryTag(&_s));
        parseUnknownBinaryTag(in, *(UnknownBinaryTag*)_s.anon.data());
    }}}
}
void MSO::parseDrawingGroupContainer(LEInputStream& in, DrawingGroupContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x040B)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x040B");
    }
    parseOfficeArtDggContainer(in, _s.OfficeArtDgg);
}
void MSO::parseOfficeArtClientData(LEInputStream& in, OfficeArtClientData& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recVer == 0)&&(_choice.recLen == 4)) {
        _s.anon = OfficeArtClientData::choice2520977885(new DocOfficeArtClientData(&_s));
        parseDocOfficeArtClientData(in, *(DocOfficeArtClientData*)_s.anon.data());
    } else if ((_choice.recVer == 0xF)) {
        _s.anon = OfficeArtClientData::choice2520977885(new PptOfficeArtClientData(&_s));
        parsePptOfficeArtClientData(in, *(PptOfficeArtClientData*)_s.anon.data());
    } else {
        _s.anon = OfficeArtClientData::choice2520977885(new XlsOfficeArtClientData(&_s));
        parseXlsOfficeArtClientData(in, *(XlsOfficeArtClientData*)_s.anon.data());
    }
}
void MSO::parseShapeProgTagsSubContainerOrAtom(LEInputStream& in, ShapeProgTagsSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    OfficeArtRecordHeader _choice(&_s);
    parseOfficeArtRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0)&&(_choice.recType == 0x1389)) {
        _s.anon = ShapeProgTagsSubContainerOrAtom::choice42781012(new ProgStringTagContainer(&_s));
        parseProgStringTagContainer(in, *(ProgStringTagContainer*)_s.anon.data());
    } else {
        _s.anon = ShapeProgTagsSubContainerOrAtom::choice42781012(new ShapeProgBinaryTagContainer(&_s));
        parseShapeProgBinaryTagContainer(in, *(ShapeProgBinaryTagContainer*)_s.anon.data());
    }
}
void MSO::parseDocumentContainer(LEInputStream& in, DocumentContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x03E8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03E8");
    }
    parseDocumentAtom(in, _s.documentAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0409)&&(_optionCheck.recLen>=12);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.exObjList = QSharedPointer<ExObjListContainer>(new ExObjListContainer(&_s));
            parseExObjListContainer(in, *_s.exObjList.data());
        } catch(IncorrectValueException _e) {
            _s.exObjList.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.exObjList.clear();
            in.rewind(_m);
        }
    }
    parseDocumentTextInfoContainer(in, _s.documentTextInfo);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0 || _optionCheck.recInstance == 5)&&(_optionCheck.recType == 0x7E4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.soundCollection = QSharedPointer<SoundCollectionContainer>(new SoundCollectionContainer(&_s));
            parseSoundCollectionContainer(in, *_s.soundCollection.data());
        } catch(IncorrectValueException _e) {
            _s.soundCollection.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.soundCollection.clear();
            in.rewind(_m);
        }
    }
    parseDrawingGroupContainer(in, _s.drawingGroup);
    parseMasterListWithTextContainer(in, _s.masterList);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x7D0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.docInfoList = QSharedPointer<DocInfoListContainer>(new DocInfoListContainer(&_s));
            parseDocInfoListContainer(in, *_s.docInfoList.data());
        } catch(IncorrectValueException _e) {
            _s.docInfoList.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.docInfoList.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 3)&&(_optionCheck.recType == 0xFD9);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideHF = QSharedPointer<SlideHeadersFootersContainer>(new SlideHeadersFootersContainer(&_s));
            parseSlideHeadersFootersContainer(in, *_s.slideHF.data());
        } catch(IncorrectValueException _e) {
            _s.slideHF.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideHF.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 4)&&(_optionCheck.recType == 0xFD9);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.notesHF = QSharedPointer<NotesHeadersFootersContainer>(new NotesHeadersFootersContainer(&_s));
            parseNotesHeadersFootersContainer(in, *_s.notesHF.data());
        } catch(IncorrectValueException _e) {
            _s.notesHF.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.notesHF.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0x0)&&(_optionCheck.recType == 0x0FF0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideList = QSharedPointer<SlideListWithTextContainer>(new SlideListWithTextContainer(&_s));
            parseSlideListWithTextContainer(in, *_s.slideList.data());
        } catch(IncorrectValueException _e) {
            _s.slideList.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideList.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 3)&&(_optionCheck.recType == 0xFD9);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideHF2 = QSharedPointer<SlideHeadersFootersContainer>(new SlideHeadersFootersContainer(&_s));
            parseSlideHeadersFootersContainer(in, *_s.slideHF2.data());
        } catch(IncorrectValueException _e) {
            _s.slideHF2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideHF2.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 2)&&(_optionCheck.recType == 0x0FF0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.notesList = QSharedPointer<NotesListWithTextContainer>(new NotesListWithTextContainer(&_s));
            parseNotesListWithTextContainer(in, *_s.notesList.data());
        } catch(IncorrectValueException _e) {
            _s.notesList.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.notesList.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 1)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x0401)&&(_optionCheck.recLen == 0x50);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideShowDocInfoAtom = QSharedPointer<SlideShowDocInfoAtom>(new SlideShowDocInfoAtom(&_s));
            parseSlideShowDocInfoAtom(in, *_s.slideShowDocInfoAtom.data());
        } catch(IncorrectValueException _e) {
            _s.slideShowDocInfoAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideShowDocInfoAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x410);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.namedShows = QSharedPointer<NamedShowsContainer>(new NamedShowsContainer(&_s));
            parseNamedShowsContainer(in, *_s.namedShows.data());
        } catch(IncorrectValueException _e) {
            _s.namedShows.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.namedShows.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x402);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.summary = QSharedPointer<SummaryContainer>(new SummaryContainer(&_s));
            parseSummaryContainer(in, *_s.summary.data());
        } catch(IncorrectValueException _e) {
            _s.summary.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.summary.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x406);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.docRoutingSlipAtom = QSharedPointer<DocRoutingSlipAtom>(new DocRoutingSlipAtom(&_s));
            parseDocRoutingSlipAtom(in, *_s.docRoutingSlipAtom.data());
        } catch(IncorrectValueException _e) {
            _s.docRoutingSlipAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.docRoutingSlipAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x1770)&&(_optionCheck.recLen == 5);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.printOptionsAtom = QSharedPointer<PrintOptionsAtom>(new PrintOptionsAtom(&_s));
            parsePrintOptionsAtom(in, *_s.printOptionsAtom.data());
        } catch(IncorrectValueException _e) {
            _s.printOptionsAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.printOptionsAtom.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.unknown0.append(UnknownDocumentContainerChild(&_s));
            parseUnknownDocumentContainerChild(in, _s.unknown0.last());
        } catch(IncorrectValueException _e) {
            _s.unknown0.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown0.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0 || _optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x428);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.rtCustomTableStylesAtom1 = QSharedPointer<RoundTripCustomTableStyles12Atom>(new RoundTripCustomTableStyles12Atom(&_s));
            parseRoundTripCustomTableStyles12Atom(in, *_s.rtCustomTableStylesAtom1.data());
        } catch(IncorrectValueException _e) {
            _s.rtCustomTableStylesAtom1.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rtCustomTableStylesAtom1.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.unknown1.append(UnknownDocumentContainerChild(&_s));
            parseUnknownDocumentContainerChild(in, _s.unknown1.last());
        } catch(IncorrectValueException _e) {
            _s.unknown1.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown1.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    parseEndDocumentAtom(in, _s.endDocumentAtom);
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.unknown2.append(UnknownDocumentContainerChild(&_s));
            parseUnknownDocumentContainerChild(in, _s.unknown2.last());
        } catch(IncorrectValueException _e) {
            _s.unknown2.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown2.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0 || _optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x428);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.rtCustomTableStylesAtom2 = QSharedPointer<RoundTripCustomTableStyles12Atom>(new RoundTripCustomTableStyles12Atom(&_s));
            parseRoundTripCustomTableStyles12Atom(in, *_s.rtCustomTableStylesAtom2.data());
        } catch(IncorrectValueException _e) {
            _s.rtCustomTableStylesAtom2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rtCustomTableStylesAtom2.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.unknown4.append(UnknownDocumentContainerChild(&_s));
            parseUnknownDocumentContainerChild(in, _s.unknown4.last());
        } catch(IncorrectValueException _e) {
            _s.unknown4.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown4.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance == 0 || _optionCheck.recInstance == 1 || _optionCheck.recInstance == 2 || _optionCheck.recInstance == 3 || _optionCheck.recInstance == 4 || _optionCheck.recInstance == 5 || _optionCheck.recInstance == 6 || _optionCheck.recInstance == 7 || _optionCheck.recInstance == 8)&&(_optionCheck.recType == 0x0FB2);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown5 = QSharedPointer<TextMasterStyle10Atom>(new TextMasterStyle10Atom(&_s));
            parseTextMasterStyle10Atom(in, *_s.unknown5.data());
        } catch(IncorrectValueException _e) {
            _s.unknown5.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown5.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseDocInfoListSubContainerOrAtom(LEInputStream& in, DocInfoListSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    RecordHeader _choice(&_s);
    parseRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0 || _choice.recInstance == 1)&&(_choice.recType == 0x1388)) {
        _s.anon = DocInfoListSubContainerOrAtom::choice2631814737(new DocProgTagsContainer(&_s));
        parseDocProgTagsContainer(in, *(DocProgTagsContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 1)&&(_choice.recType == 0x414)&&(_choice.recLen == 0x1C)) {
        _s.anon = DocInfoListSubContainerOrAtom::choice2631814737(new NormalViewSetInfoContainer(&_s));
        parseNormalViewSetInfoContainer(in, *(NormalViewSetInfoContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 1)&&(_choice.recType == 0x413)) {
        _s.anon = DocInfoListSubContainerOrAtom::choice2631814737(new NotesTextViewInfoContainer(&_s));
        parseNotesTextViewInfoContainer(in, *(NotesTextViewInfoContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0 || _choice.recInstance == 1)&&(_choice.recType == 0x407)) {
        _s.anon = DocInfoListSubContainerOrAtom::choice2631814737(new OutlineViewInfoContainer(&_s));
        parseOutlineViewInfoContainer(in, *(OutlineViewInfoContainer*)_s.anon.data());
    } else if ((_choice.recInstance == 0 || _choice.recInstance == 1)&&(_choice.recType == 0x3FA)) {
        _s.anon = DocInfoListSubContainerOrAtom::choice2631814737(new SlideViewInfoInstance(&_s));
        parseSlideViewInfoInstance(in, *(SlideViewInfoInstance*)_s.anon.data());
    } else if ((_choice.recInstance == 1)&&(_choice.recType == 0x408)) {
        _s.anon = DocInfoListSubContainerOrAtom::choice2631814737(new SorterViewInfoContainer(&_s));
        parseSorterViewInfoContainer(in, *(SorterViewInfoContainer*)_s.anon.data());
    } else {
        _s.anon = DocInfoListSubContainerOrAtom::choice2631814737(new VBAInfoContainer(&_s));
        parseVBAInfoContainer(in, *(VBAInfoContainer*)_s.anon.data());
    }
}
void MSO::parseDocProgBinaryTagContainer(LEInputStream& in, DocProgBinaryTagContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x138A)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x138A");
    }
    parseDocProgBinaryTagSubContainerOrAtom(in, _s.rec);
}
void MSO::parseSlideProgBinaryTagContainer(LEInputStream& in, SlideProgBinaryTagContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x138A)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x138A");
    }
    parseSlideProgBinaryTagSubContainerOrAtom(in, _s.rec);
}
void MSO::parseOfficeArtSpContainer(LEInputStream& in, OfficeArtSpContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x0F004)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x0F004");
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x1)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x0F009)&&(_optionCheck.recLen == 0x10);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shapeGroup = QSharedPointer<OfficeArtFSPGR>(new OfficeArtFSPGR(&_s));
            parseOfficeArtFSPGR(in, *_s.shapeGroup.data());
        } catch(IncorrectValueException _e) {
            _s.shapeGroup.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shapeGroup.clear();
            in.rewind(_m);
        }
    }
    parseOfficeArtFSP(in, _s.shapeProp);
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xF11D)&&(_optionCheck.recLen == 4);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.deletedshape = QSharedPointer<OfficeArtFPSPL>(new OfficeArtFPSPL(&_s));
            parseOfficeArtFPSPL(in, *_s.deletedshape.data());
        } catch(IncorrectValueException _e) {
            _s.deletedshape.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.deletedshape.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x3)&&(_optionCheck.recType == 0x0F00B);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shapePrimaryOptions = QSharedPointer<OfficeArtFOPT>(new OfficeArtFOPT(&_s));
            parseOfficeArtFOPT(in, *_s.shapePrimaryOptions.data());
        } catch(IncorrectValueException _e) {
            _s.shapePrimaryOptions.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shapePrimaryOptions.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 3)&&(_optionCheck.recType == 0xF121);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shapeSecondaryOptions1 = QSharedPointer<OfficeArtSecondaryFOPT>(new OfficeArtSecondaryFOPT(&_s));
            parseOfficeArtSecondaryFOPT(in, *_s.shapeSecondaryOptions1.data());
        } catch(IncorrectValueException _e) {
            _s.shapeSecondaryOptions1.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shapeSecondaryOptions1.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 3)&&(_optionCheck.recType == 0xF122);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shapeTertiaryOptions1 = QSharedPointer<OfficeArtTertiaryFOPT>(new OfficeArtTertiaryFOPT(&_s));
            parseOfficeArtTertiaryFOPT(in, *_s.shapeTertiaryOptions1.data());
        } catch(IncorrectValueException _e) {
            _s.shapeTertiaryOptions1.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shapeTertiaryOptions1.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xF00F)&&(_optionCheck.recLen == 0x10);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.childAnchor = QSharedPointer<OfficeArtChildAnchor>(new OfficeArtChildAnchor(&_s));
            parseOfficeArtChildAnchor(in, *_s.childAnchor.data());
        } catch(IncorrectValueException _e) {
            _s.childAnchor.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.childAnchor.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = ((_optionCheck.recInstance == 0)&&(_optionCheck.recLen == 0x8 || _optionCheck.recLen == 0x10))||((_optionCheck.recInstance == 0)&&(_optionCheck.recLen == 0x4))||((_optionCheck.recInstance == 0)&&(_optionCheck.recLen == 0x8 || _optionCheck.recLen == 0x12));
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.clientAnchor = QSharedPointer<OfficeArtClientAnchor>(new OfficeArtClientAnchor(&_s));
            parseOfficeArtClientAnchor(in, *_s.clientAnchor.data());
        } catch(IncorrectValueException _e) {
            _s.clientAnchor.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.clientAnchor.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = ((_optionCheck.recVer == 0)&&(_optionCheck.recLen == 4))||((_optionCheck.recVer == 0xF))||((_optionCheck.recVer == 0)&&(_optionCheck.recLen == 0));
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.clientData = QSharedPointer<OfficeArtClientData>(new OfficeArtClientData(&_s));
            parseOfficeArtClientData(in, *_s.clientData.data());
        } catch(IncorrectValueException _e) {
            _s.clientData.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.clientData.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = ((_optionCheck.recVer == 0)&&(_optionCheck.recLen == 0))||((_optionCheck.recVer == 0 || _optionCheck.recVer == 0xF)&&(_optionCheck.recLen == 0x4))||((_optionCheck.recVer == 0 || _optionCheck.recVer == 0xF)&&(_optionCheck.recLen!=4));
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.clientTextbox = QSharedPointer<OfficeArtClientTextBox>(new OfficeArtClientTextBox(&_s));
            parseOfficeArtClientTextBox(in, *_s.clientTextbox.data());
        } catch(IncorrectValueException _e) {
            _s.clientTextbox.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.clientTextbox.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 3)&&(_optionCheck.recType == 0xF121);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shapeSecondaryOptions2 = QSharedPointer<OfficeArtSecondaryFOPT>(new OfficeArtSecondaryFOPT(&_s));
            parseOfficeArtSecondaryFOPT(in, *_s.shapeSecondaryOptions2.data());
        } catch(IncorrectValueException _e) {
            _s.shapeSecondaryOptions2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shapeSecondaryOptions2.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 3)&&(_optionCheck.recType == 0xF122);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shapeTertiaryOptions2 = QSharedPointer<OfficeArtTertiaryFOPT>(new OfficeArtTertiaryFOPT(&_s));
            parseOfficeArtTertiaryFOPT(in, *_s.shapeTertiaryOptions2.data());
        } catch(IncorrectValueException _e) {
            _s.shapeTertiaryOptions2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shapeTertiaryOptions2.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseOfficeArtInlineSpContainer(LEInputStream& in, OfficeArtInlineSpContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _atend;
    parseOfficeArtSpContainer(in, _s.shape);
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgfb.append(OfficeArtBStoreContainerFileBlock(&_s));
            parseOfficeArtBStoreContainerFileBlock(in, _s.rgfb.last());
        } catch(IncorrectValueException _e) {
            _s.rgfb.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgfb.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseDocProgTagsSubContainerOrAtom(LEInputStream& in, DocProgTagsSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    RecordHeader _choice(&_s);
    parseRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0)&&(_choice.recType == 0x1389)) {
        _s.anon = DocProgTagsSubContainerOrAtom::choice61655436(new ProgStringTagContainer(&_s));
        parseProgStringTagContainer(in, *(ProgStringTagContainer*)_s.anon.data());
    } else {
        _s.anon = DocProgTagsSubContainerOrAtom::choice61655436(new DocProgBinaryTagContainer(&_s));
        parseDocProgBinaryTagContainer(in, *(DocProgBinaryTagContainer*)_s.anon.data());
    }
}
void MSO::parseSlideProgTagsSubContainerOrAtom(LEInputStream& in, SlideProgTagsSubContainerOrAtom& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    RecordHeader _choice(&_s);
    parseRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0)&&(_choice.recType == 0x1389)) {
        _s.anon = SlideProgTagsSubContainerOrAtom::choice310259039(new ProgStringTagContainer(&_s));
        parseProgStringTagContainer(in, *(ProgStringTagContainer*)_s.anon.data());
    } else {
        _s.anon = SlideProgTagsSubContainerOrAtom::choice310259039(new SlideProgBinaryTagContainer(&_s));
        parseSlideProgBinaryTagContainer(in, *(SlideProgBinaryTagContainer*)_s.anon.data());
    }
}
void MSO::parseOfficeArtDgContainer(LEInputStream& in, OfficeArtDgContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseOfficeArtRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0xF002)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0xF002");
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0x0)&&(_optionCheck.recInstance<=4094)&&(_optionCheck.recType == 0x0F008)&&(_optionCheck.recLen == 8);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.drawingData = QSharedPointer<OfficeArtFDG>(new OfficeArtFDG(&_s));
            parseOfficeArtFDG(in, *_s.drawingData.data());
        } catch(IncorrectValueException _e) {
            _s.drawingData.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.drawingData.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recType == 0xF118)&&(_optionCheck.recLen==4*_optionCheck.recInstance);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.regroupItems = QSharedPointer<OfficeArtFRITContainer>(new OfficeArtFRITContainer(&_s));
            parseOfficeArtFRITContainer(in, *_s.regroupItems.data());
        } catch(IncorrectValueException _e) {
            _s.regroupItems.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.regroupItems.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x0F003);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.groupShape = QSharedPointer<OfficeArtSpgrContainer>(new OfficeArtSpgrContainer(&_s));
            parseOfficeArtSpgrContainer(in, *_s.groupShape.data());
        } catch(IncorrectValueException _e) {
            _s.groupShape.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.groupShape.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x0F004);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.shape = QSharedPointer<OfficeArtSpContainer>(new OfficeArtSpContainer(&_s));
            parseOfficeArtSpContainer(in, *_s.shape.data());
        } catch(IncorrectValueException _e) {
            _s.shape.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.shape.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.deletedShapes.append(OfficeArtSpgrContainerFileBlock(&_s));
            parseOfficeArtSpgrContainerFileBlock(in, _s.deletedShapes.last());
        } catch(IncorrectValueException _e) {
            _s.deletedShapes.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.deletedShapes.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        OfficeArtRecordHeader _optionCheck(&_s);
        parseOfficeArtRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recType == 0xF005);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.solvers = QSharedPointer<OfficeArtSolverContainer>(new OfficeArtSolverContainer(&_s));
            parseOfficeArtSolverContainer(in, *_s.solvers.data());
        } catch(IncorrectValueException _e) {
            _s.solvers.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.solvers.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseOfficeArtSpgrContainerFileBlock(LEInputStream& in, OfficeArtSpgrContainerFileBlock& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    try {
        _s.anon = OfficeArtSpgrContainerFileBlock::choice4117040(new OfficeArtSpContainer(&_s));
        parseOfficeArtSpContainer(in, *(OfficeArtSpContainer*)_s.anon.data());
    } catch (IncorrectValueException _x) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = OfficeArtSpgrContainerFileBlock::choice4117040(new OfficeArtSpgrContainer(&_s));
        parseOfficeArtSpgrContainer(in, *(OfficeArtSpgrContainer*)_s.anon.data());
    } catch (IncorrectValueException _xx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = OfficeArtSpgrContainerFileBlock::choice4117040(new OfficeArtFSP(&_s));
        parseOfficeArtFSP(in, *(OfficeArtFSP*)_s.anon.data());
    } catch (IncorrectValueException _xxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = OfficeArtSpgrContainerFileBlock::choice4117040(new OfficeArtFSPGR(&_s));
        parseOfficeArtFSPGR(in, *(OfficeArtFSPGR*)_s.anon.data());
    } catch (IncorrectValueException _xxxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = OfficeArtSpgrContainerFileBlock::choice4117040(new OfficeArtClientAnchor(&_s));
        parseOfficeArtClientAnchor(in, *(OfficeArtClientAnchor*)_s.anon.data());
    } catch (IncorrectValueException _xxxxx) {
        _s.anon.clear();
        in.rewind(_m);
        _s.anon = OfficeArtSpgrContainerFileBlock::choice4117040(new OfficeArtClientData(&_s));
        parseOfficeArtClientData(in, *(OfficeArtClientData*)_s.anon.data());
    }}}}}
}
void MSO::parseDrawingContainer(LEInputStream& in, DrawingContainer& _s) {
    _s.streamOffset = in.getPosition();
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x040C)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x040C");
    }
    parseOfficeArtDgContainer(in, _s.OfficeArtDg);
}
void MSO::parseMainMasterContainer(LEInputStream& in, MainMasterContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x03F8)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03F8");
    }
    parseSlideAtom(in, _s.slideAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x03F9)&&(_optionCheck.recLen == 0x10);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown = QSharedPointer<SlideShowSlideInfoAtom>(new SlideShowSlideInfoAtom(&_s));
            parseSlideShowSlideInfoAtom(in, *_s.unknown.data());
        } catch(IncorrectValueException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgSchemeListElementColorScheme.append(SchemeListElementColorSchemeAtom(&_s));
            parseSchemeListElementColorSchemeAtom(in, _s.rgSchemeListElementColorScheme.last());
        } catch(IncorrectValueException _e) {
            _s.rgSchemeListElementColorScheme.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgSchemeListElementColorScheme.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgTextMasterStyle.append(TextMasterStyleAtom(&_s));
            parseTextMasterStyleAtom(in, _s.rgTextMasterStyle.last());
        } catch(IncorrectValueException _e) {
            _s.rgTextMasterStyle.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgTextMasterStyle.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x423);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.roundTripOArtTextSTyles12Atom = QSharedPointer<RoundTripOArtTextStyles12Atom>(new RoundTripOArtTextStyles12Atom(&_s));
            parseRoundTripOArtTextStyles12Atom(in, *_s.roundTripOArtTextSTyles12Atom.data());
        } catch(IncorrectValueException _e) {
            _s.roundTripOArtTextSTyles12Atom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.roundTripOArtTextSTyles12Atom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x03F9)&&(_optionCheck.recLen == 0x10);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideShowInfoAtom = QSharedPointer<SlideShowSlideInfoAtom>(new SlideShowSlideInfoAtom(&_s));
            parseSlideShowSlideInfoAtom(in, *_s.slideShowInfoAtom.data());
        } catch(IncorrectValueException _e) {
            _s.slideShowInfoAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideShowInfoAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFD9);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.perSlideHeadersFootersContainer = QSharedPointer<PerSlideHeadersFootersContainer>(new PerSlideHeadersFootersContainer(&_s));
            parsePerSlideHeadersFootersContainer(in, *_s.perSlideHeadersFootersContainer.data());
        } catch(IncorrectValueException _e) {
            _s.perSlideHeadersFootersContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.perSlideHeadersFootersContainer.clear();
            in.rewind(_m);
        }
    }
    parseDrawingContainer(in, _s.drawing);
    parseSlideSchemeColorSchemeAtom(in, _s.slideSchemeColorSchemeAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 3)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideNameAtom = QSharedPointer<SlideNameAtom>(new SlideNameAtom(&_s));
            parseSlideNameAtom(in, *_s.slideNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.slideNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x1388);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideProgTagsContainer = QSharedPointer<SlideProgTagsContainer>(new SlideProgTagsContainer(&_s));
            parseSlideProgTagsContainer(in, *_s.slideProgTagsContainer.data());
        } catch(IncorrectValueException _e) {
            _s.slideProgTagsContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideProgTagsContainer.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgRoundTripMainMaster.append(RoundTripMainMasterRecord(&_s));
            parseRoundTripMainMasterRecord(in, _s.rgRoundTripMainMaster.last());
        } catch(IncorrectValueException _e) {
            _s.rgRoundTripMainMaster.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgRoundTripMainMaster.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 2)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.templateNameAtom = QSharedPointer<TemplateNameAtom>(new TemplateNameAtom(&_s));
            parseTemplateNameAtom(in, *_s.templateNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.templateNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.templateNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x1388);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown3 = QSharedPointer<SlideProgTagsContainer>(new SlideProgTagsContainer(&_s));
            parseSlideProgTagsContainer(in, *_s.unknown3.data());
        } catch(IncorrectValueException _e) {
            _s.unknown3.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown3.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseSlideContainer(LEInputStream& in, SlideContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0x0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0x0");
    }
    if (!(_s.rh.recType == 0x03EE)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03EE");
    }
    parseSlideAtom(in, _s.slideAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x03F9)&&(_optionCheck.recLen == 0x10);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideShowSlideInfoAtom = QSharedPointer<SlideShowSlideInfoAtom>(new SlideShowSlideInfoAtom(&_s));
            parseSlideShowSlideInfoAtom(in, *_s.slideShowSlideInfoAtom.data());
        } catch(IncorrectValueException _e) {
            _s.slideShowSlideInfoAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideShowSlideInfoAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFD9);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.perSlideHFContainer = QSharedPointer<PerSlideHeadersFootersContainer>(new PerSlideHeadersFootersContainer(&_s));
            parsePerSlideHeadersFootersContainer(in, *_s.perSlideHFContainer.data());
        } catch(IncorrectValueException _e) {
            _s.perSlideHFContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.perSlideHFContainer.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x3714);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.rtSlideSyncInfo12 = QSharedPointer<RoundTripSlideSyncInfo12Container>(new RoundTripSlideSyncInfo12Container(&_s));
            parseRoundTripSlideSyncInfo12Container(in, *_s.rtSlideSyncInfo12.data());
        } catch(IncorrectValueException _e) {
            _s.rtSlideSyncInfo12.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rtSlideSyncInfo12.clear();
            in.rewind(_m);
        }
    }
    parseDrawingContainer(in, _s.drawing);
    parseSlideSchemeColorSchemeAtom(in, _s.slideSchemeColorSchemeAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 3)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideNameAtom = QSharedPointer<SlideNameAtom>(new SlideNameAtom(&_s));
            parseSlideNameAtom(in, *_s.slideNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.slideNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x1388);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideProgTagsContainer = QSharedPointer<SlideProgTagsContainer>(new SlideProgTagsContainer(&_s));
            parseSlideProgTagsContainer(in, *_s.slideProgTagsContainer.data());
        } catch(IncorrectValueException _e) {
            _s.slideProgTagsContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideProgTagsContainer.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x101D);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown = QSharedPointer<UnknownSlideContainerChild>(new UnknownSlideContainerChild(&_s));
            parseUnknownSlideContainerChild(in, *_s.unknown.data());
        } catch(IncorrectValueException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgRoundTripSlide.append(RoundTripSlideRecord(&_s));
            parseRoundTripSlideRecord(in, _s.rgRoundTripSlide.last());
        } catch(IncorrectValueException _e) {
            _s.rgRoundTripSlide.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgRoundTripSlide.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x101D);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.unknown2 = QSharedPointer<UnknownSlideContainerChild>(new UnknownSlideContainerChild(&_s));
            parseUnknownSlideContainerChild(in, *_s.unknown2.data());
        } catch(IncorrectValueException _e) {
            _s.unknown2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.unknown2.clear();
            in.rewind(_m);
        }
    }
}
void MSO::parseNotesContainer(LEInputStream& in, NotesContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    bool _possiblyPresent;
    bool _atend;
    parseRecordHeader(in, _s.rh);
    if (!(_s.rh.recVer == 0xF)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recVer == 0xF");
    }
    if (!(_s.rh.recInstance == 0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recInstance == 0");
    }
    if (!(_s.rh.recType == 0x03F0)) {
        throw IncorrectValueException(in.getPosition(), "_s.rh.recType == 0x03F0");
    }
    parseNotesAtom(in, _s.notesAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFD9);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.perSlideHFContainer = QSharedPointer<PerSlideHeadersFootersContainer>(new PerSlideHeadersFootersContainer(&_s));
            parsePerSlideHeadersFootersContainer(in, *_s.perSlideHFContainer.data());
        } catch(IncorrectValueException _e) {
            _s.perSlideHFContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.perSlideHFContainer.clear();
            in.rewind(_m);
        }
    }
    parseDrawingContainer(in, _s.drawing);
    parseSlideSchemeColorSchemeAtom(in, _s.slideSchemeColorSchemeAtom);
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0)&&(_optionCheck.recInstance == 3)&&(_optionCheck.recType == 0x0FBA)&&(_optionCheck.recLen%2==0);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideNameAtom = QSharedPointer<SlideNameAtom>(new SlideNameAtom(&_s));
            parseSlideNameAtom(in, *_s.slideNameAtom.data());
        } catch(IncorrectValueException _e) {
            _s.slideNameAtom.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideNameAtom.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0x1388);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.slideProgTagsContainer = QSharedPointer<SlideProgTagsContainer>(new SlideProgTagsContainer(&_s));
            parseSlideProgTagsContainer(in, *_s.slideProgTagsContainer.data());
        } catch(IncorrectValueException _e) {
            _s.slideProgTagsContainer.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.slideProgTagsContainer.clear();
            in.rewind(_m);
        }
    }
    _m = in.setMark();
    try {
        RecordHeader _optionCheck(&_s);
        parseRecordHeader(in, _optionCheck);
        _possiblyPresent = (_optionCheck.recVer == 0xF)&&(_optionCheck.recInstance == 0)&&(_optionCheck.recType == 0xFD9);
    } catch(EOFException _e) {
        _possiblyPresent = false;
    }
    in.rewind(_m);
    _m = in.setMark();
    if (_possiblyPresent) {
        try {
            _s.perSlideHFContainer2 = QSharedPointer<PerSlideHeadersFootersContainer>(new PerSlideHeadersFootersContainer(&_s));
            parsePerSlideHeadersFootersContainer(in, *_s.perSlideHFContainer2.data());
        } catch(IncorrectValueException _e) {
            _s.perSlideHFContainer2.clear();
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.perSlideHFContainer2.clear();
            in.rewind(_m);
        }
    }
    _atend = false;
    while (!_atend) {
        _m = in.setMark();
        try {
            _s.rgNotesRoundTripAtom.append(NotesRoundTripAtom(&_s));
            parseNotesRoundTripAtom(in, _s.rgNotesRoundTripAtom.last());
        } catch(IncorrectValueException _e) {
            _s.rgNotesRoundTripAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        } catch(EOFException _e) {
            _s.rgNotesRoundTripAtom.removeLast();
            _atend = true;
            in.rewind(_m);
        }
    }
}
void MSO::parseMasterOrSlideContainer(LEInputStream& in, MasterOrSlideContainer& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    RecordHeader _choice(&_s);
    parseRecordHeader(in, _choice);
    in.rewind(_m);
    if ((_choice.recInstance == 0x0)&&(_choice.recType == 0x03F8)) {
        _s.anon = MasterOrSlideContainer::choice2788643208(new MainMasterContainer(&_s));
        parseMainMasterContainer(in, *(MainMasterContainer*)_s.anon.data());
    } else {
        _s.anon = MasterOrSlideContainer::choice2788643208(new SlideContainer(&_s));
        parseSlideContainer(in, *(SlideContainer*)_s.anon.data());
    }
}
void MSO::parsePowerPointStruct(LEInputStream& in, PowerPointStruct& _s) {
    _s.streamOffset = in.getPosition();
    LEInputStream::Mark _m;
    _m = in.setMark();
    try {
        _s.anon = PowerPointStruct::choice394521820(new DocumentContainer(&_s));
        parseDocumentContainer(in, *(DocumentContainer*)_s.anon.data());
    } catch (IncorrectValueException _x) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = PowerPointStruct::choice394521820(new MasterOrSlideContainer(&_s));
        parseMasterOrSlideContainer(in, *(MasterOrSlideContainer*)_s.anon.data());
    } catch (IncorrectValueException _xx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = PowerPointStruct::choice394521820(new PersistDirectoryAtom(&_s));
        parsePersistDirectoryAtom(in, *(PersistDirectoryAtom*)_s.anon.data());
    } catch (IncorrectValueException _xxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = PowerPointStruct::choice394521820(new NotesContainer(&_s));
        parseNotesContainer(in, *(NotesContainer*)_s.anon.data());
    } catch (IncorrectValueException _xxxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = PowerPointStruct::choice394521820(new HandoutContainer(&_s));
        parseHandoutContainer(in, *(HandoutContainer*)_s.anon.data());
    } catch (IncorrectValueException _xxxxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = PowerPointStruct::choice394521820(new SlideContainer(&_s));
        parseSlideContainer(in, *(SlideContainer*)_s.anon.data());
    } catch (IncorrectValueException _xxxxxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = PowerPointStruct::choice394521820(new ExOleObjStg(&_s));
        parseExOleObjStg(in, *(ExOleObjStg*)_s.anon.data());
    } catch (IncorrectValueException _xxxxxxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = PowerPointStruct::choice394521820(new ExControlStg(&_s));
        parseExControlStg(in, *(ExControlStg*)_s.anon.data());
    } catch (IncorrectValueException _xxxxxxxx) {
        _s.anon.clear();
        in.rewind(_m);
    try {
        _s.anon = PowerPointStruct::choice394521820(new VbaProjectStg(&_s));
        parseVbaProjectStg(in, *(VbaProjectStg*)_s.anon.data());
    } catch (IncorrectValueException _xxxxxxxxx) {
        _s.anon.clear();
        in.rewind(_m);
        _s.anon = PowerPointStruct::choice394521820(new UserEditAtom(&_s));
        parseUserEditAtom(in, *(UserEditAtom*)_s.anon.data());
    }}}}}}}}}
}
