[Libreoffice-commits] core.git: Branch 'distro/lhm/libreoffice-6-4+backports' - 130 commits - basctl/source basic/qa basic/source chart2/source configure.ac cui/source cui/uiconfig download.lst drawinglayer/source external/nss external/pdfium filter/source formula/source i18npool/source icon-themes/breeze icon-themes/breeze_dark icon-themes/breeze_dark_svg icon-themes/breeze_svg icon-themes/colibre icon-themes/colibre_svg icon-themes/elementary icon-themes/elementary_svg icon-themes/karasa_jaga icon-themes/karasa_jaga_svg icon-themes/sifr icon-themes/sifr_dark icon-themes/sifr_dark_svg icon-themes/sifr_svg include/filter include/sfx2 include/svl include/svx include/vcl include/xmloff nlpsolver/src readlicense_oo/license RepositoryExternal.mk sccomp/source sc/inc sc/qa sc/source sd/source sd/uiconfig sfx2/inc sfx2/uiconfig solenv/flatpak-manifest.in svl/source svx/source sw/CppunitTest_sw_ooxmlexport4.mk sw/inc sw/PythonTest_sw_python.mk sw/qa sw/source translations vcl/inc vcl/Library_vcl.mk vcl/ qa vcl/qt5 vcl/source vcl/uiconfig vcl/unx writerfilter/source xmloff/CppunitTest_xmloff_text.mk xmloff/Module_xmloff.mk xmloff/qa xmloff/source xmlsecurity/inc xmlsecurity/Library_xmlsecurity.mk xmlsecurity/qa xmlsecurity/source xmlsecurity/uiconfig xmlsecurity/workben

Michael Weghorn (via logerrit) logerrit at kemper.freedesktop.org
Fri Sep 11 08:01:29 UTC 2020


 RepositoryExternal.mk                                                      |    1 
 basctl/source/basicide/baside2.cxx                                         |    6 
 basctl/source/basicide/baside2b.cxx                                        |   60 
 basic/qa/cppunit/test_scanner.cxx                                          |   17 
 basic/source/comp/scanner.cxx                                              |    3 
 basic/source/runtime/methods.cxx                                           |    3 
 chart2/source/controller/dialogs/tp_TitleRotation.cxx                      |    6 
 chart2/source/view/main/ChartView.cxx                                      |    5 
 chart2/source/view/main/VLegend.cxx                                        |   19 
 chart2/source/view/main/VLegend.hxx                                        |    6 
 configure.ac                                                               |    2 
 cui/source/dialogs/SpellDialog.cxx                                         |   13 
 cui/source/inc/chardlg.hxx                                                 |   11 
 cui/source/options/optaboutconfig.cxx                                      |    4 
 cui/source/options/optjava.cxx                                             |   19 
 cui/source/options/optjava.hxx                                             |    1 
 cui/source/tabpages/chardlg.cxx                                            |   77 
 cui/uiconfig/ui/qrcodegen.ui                                               |    1 
 dev/null                                                                   |binary
 download.lst                                                               |    8 
 drawinglayer/source/primitive2d/textlayoutdevice.cxx                       |   14 
 external/nss/ExternalProject_nss.mk                                        |    6 
 external/nss/UnpackedTarball_nss.mk                                        |   38 
 external/nss/macos-dlopen.patch.0                                          |   18 
 external/nss/nsinstall.py                                                  |    7 
 external/nss/nss-3.13.5-zlib-werror.patch                                  |    7 
 external/nss/nss-bz1646594.patch.1                                         |   15 
 external/nss/nss-win32-make.patch.1                                        |    2 
 external/nss/nss.windows.patch                                             |    4 
 external/pdfium/Library_pdfium.mk                                          |   19 
 external/pdfium/UnpackedTarball_pdfium.mk                                  |    3 
 external/pdfium/build.patch.1                                              |   36 
 external/pdfium/c++20-comparison.patch                                     |   13 
 external/pdfium/inc/pch/precompiled_pdfium.hxx                             |   22 
 external/pdfium/ubsan.patch                                                |   20 
 external/pdfium/visibility.patch.1                                         |   22 
 filter/source/xslt/odf2xhtml/export/common/styles/style_collector.xsl      |   13 
 filter/source/xslt/odf2xhtml/export/common/styles/style_mapping_css.xsl    |    3 
 formula/source/core/api/FormulaCompiler.cxx                                |    7 
 i18npool/source/breakiterator/breakiterator_unicode.cxx                    |    5 
 icon-themes/breeze/cmd/32/ar/decrementlevel.png                            |binary
 icon-themes/breeze/cmd/32/ar/decrementsublevels.png                        |binary
 icon-themes/breeze/cmd/32/ar/incrementlevel.png                            |binary
 icon-themes/breeze/cmd/32/ar/incrementsublevels.png                        |binary
 icon-themes/breeze/cmd/32/ar/linenumberingdialog.png                       |binary
 icon-themes/breeze/cmd/32/ar/movedown.png                                  |binary
 icon-themes/breeze/cmd/32/ar/movedownsubitems.png                          |binary
 icon-themes/breeze/cmd/32/ar/moveup.png                                    |binary
 icon-themes/breeze/cmd/32/ar/moveupsubitems.png                            |binary
 icon-themes/breeze/cmd/32/decrementlevel.png                               |binary
 icon-themes/breeze/cmd/32/decrementsublevels.png                           |binary
 icon-themes/breeze/cmd/32/fillleft.png                                     |binary
 icon-themes/breeze/cmd/32/hidewhitespace.png                               |binary
 icon-themes/breeze/cmd/32/incrementlevel.png                               |binary
 icon-themes/breeze/cmd/32/incrementsublevels.png                           |binary
 icon-themes/breeze/cmd/32/linenumberingdialog.png                          |binary
 icon-themes/breeze/cmd/32/movedown.png                                     |binary
 icon-themes/breeze/cmd/32/movedownsubitems.png                             |binary
 icon-themes/breeze/cmd/32/moveup.png                                       |binary
 icon-themes/breeze/cmd/32/moveupsubitems.png                               |binary
 icon-themes/breeze/cmd/32/protectbookmarks.png                             |binary
 icon-themes/breeze/cmd/32/protectfields.png                                |binary
 icon-themes/breeze/cmd/32/setreminder.png                                  |binary
 icon-themes/breeze/cmd/ar/lc_decrementlevel.png                            |binary
 icon-themes/breeze/cmd/ar/lc_decrementsublevels.png                        |binary
 icon-themes/breeze/cmd/ar/lc_incrementlevel.png                            |binary
 icon-themes/breeze/cmd/ar/lc_incrementsublevels.png                        |binary
 icon-themes/breeze/cmd/ar/lc_linenumberingdialog.png                       |binary
 icon-themes/breeze/cmd/ar/lc_movedown.png                                  |binary
 icon-themes/breeze/cmd/ar/lc_movedownsubitems.png                          |binary
 icon-themes/breeze/cmd/ar/lc_moveup.png                                    |binary
 icon-themes/breeze/cmd/ar/lc_moveupsubitems.png                            |binary
 icon-themes/breeze/cmd/ar/sc_decrementlevel.png                            |binary
 icon-themes/breeze/cmd/ar/sc_decrementsublevels.png                        |binary
 icon-themes/breeze/cmd/ar/sc_incrementlevel.png                            |binary
 icon-themes/breeze/cmd/ar/sc_incrementsublevels.png                        |binary
 icon-themes/breeze/cmd/ar/sc_linenumberingdialog.png                       |binary
 icon-themes/breeze/cmd/ar/sc_movedown.png                                  |binary
 icon-themes/breeze/cmd/ar/sc_movedownsubitems.png                          |binary
 icon-themes/breeze/cmd/ar/sc_moveup.png                                    |binary
 icon-themes/breeze/cmd/ar/sc_moveupsubitems.png                            |binary
 icon-themes/breeze/cmd/lc_decrementlevel.png                               |binary
 icon-themes/breeze/cmd/lc_decrementsublevels.png                           |binary
 icon-themes/breeze/cmd/lc_hidewhitespace.png                               |binary
 icon-themes/breeze/cmd/lc_incrementlevel.png                               |binary
 icon-themes/breeze/cmd/lc_incrementsublevels.png                           |binary
 icon-themes/breeze/cmd/lc_linenumberingdialog.png                          |binary
 icon-themes/breeze/cmd/lc_movedown.png                                     |binary
 icon-themes/breeze/cmd/lc_movedownsubitems.png                             |binary
 icon-themes/breeze/cmd/lc_moveup.png                                       |binary
 icon-themes/breeze/cmd/lc_moveupsubitems.png                               |binary
 icon-themes/breeze/cmd/lc_protectbookmarks.png                             |binary
 icon-themes/breeze/cmd/lc_protectfields.png                                |binary
 icon-themes/breeze/cmd/lc_setreminder.png                                  |binary
 icon-themes/breeze/cmd/sc_decrementlevel.png                               |binary
 icon-themes/breeze/cmd/sc_decrementsublevels.png                           |binary
 icon-themes/breeze/cmd/sc_hidewhitespace.png                               |binary
 icon-themes/breeze/cmd/sc_incrementlevel.png                               |binary
 icon-themes/breeze/cmd/sc_incrementsublevels.png                           |binary
 icon-themes/breeze/cmd/sc_linenumberingdialog.png                          |binary
 icon-themes/breeze/cmd/sc_movedown.png                                     |binary
 icon-themes/breeze/cmd/sc_movedownsubitems.png                             |binary
 icon-themes/breeze/cmd/sc_moveup.png                                       |binary
 icon-themes/breeze/cmd/sc_moveupsubitems.png                               |binary
 icon-themes/breeze/cmd/sc_protectbookmarks.png                             |binary
 icon-themes/breeze/cmd/sc_protectfields.png                                |binary
 icon-themes/breeze/links.txt                                               |  357 
 icon-themes/breeze/res/basbrk.png                                          |binary
 icon-themes/breeze/res/lc06303.png                                         |binary
 icon-themes/breeze/res/lx03123.png                                         |binary
 icon-themes/breeze/res/lx03125.png                                         |binary
 icon-themes/breeze/res/lx03126.png                                         |binary
 icon-themes/breeze/res/lx03127.png                                         |binary
 icon-themes/breeze/res/lx03129.png                                         |binary
 icon-themes/breeze/res/lx03130.png                                         |binary
 icon-themes/breeze/res/lx03162.png                                         |binary
 icon-themes/breeze/res/lx03163.png                                         |binary
 icon-themes/breeze/res/mainapp_16_8.png                                    |binary
 icon-themes/breeze/res/odg_16_8.png                                        |binary
 icon-themes/breeze/res/otg_16_8.png                                        |binary
 icon-themes/breeze/res/sc06303.png                                         |binary
 icon-themes/breeze/res/sx03123.png                                         |binary
 icon-themes/breeze/res/sx03125.png                                         |binary
 icon-themes/breeze/res/sx03126.png                                         |binary
 icon-themes/breeze/res/sx03127.png                                         |binary
 icon-themes/breeze/res/sx03129.png                                         |binary
 icon-themes/breeze/res/sx03130.png                                         |binary
 icon-themes/breeze/res/sx03162.png                                         |binary
 icon-themes/breeze/res/sx03163.png                                         |binary
 icon-themes/breeze/res/sx03246.png                                         |binary
 icon-themes/breeze/sc/res/lftrgt.png                                       |binary
 icon-themes/breeze/sc/res/topdown.png                                      |binary
 icon-themes/breeze/sd/res/slide_sorter_focus_border.png                    |binary
 icon-themes/breeze/sd/res/slide_sorter_insert_shadow.png                   |binary
 icon-themes/breeze/sd/res/slide_sorter_shadow.png                          |binary
 icon-themes/breeze/svx/res/check2.png                                      |binary
 icon-themes/breeze/svx/res/pr014.png                                       |binary
 icon-themes/breeze/svx/res/rectbtns.png                                    |binary
 icon-themes/breeze/vcl/res/check1.png                                      |binary
 icon-themes/breeze/vcl/res/check2.png                                      |binary
 icon-themes/breeze/vcl/res/check3.png                                      |binary
 icon-themes/breeze/vcl/res/check4.png                                      |binary
 icon-themes/breeze/vcl/res/check5.png                                      |binary
 icon-themes/breeze/vcl/res/check6.png                                      |binary
 icon-themes/breeze/vcl/res/check7.png                                      |binary
 icon-themes/breeze/vcl/res/check8.png                                      |binary
 icon-themes/breeze/vcl/res/check9.png                                      |binary
 icon-themes/breeze/vcl/res/radio1.png                                      |binary
 icon-themes/breeze/vcl/res/radio2.png                                      |binary
 icon-themes/breeze/vcl/res/radio3.png                                      |binary
 icon-themes/breeze/vcl/res/radio4.png                                      |binary
 icon-themes/breeze/vcl/res/radio5.png                                      |binary
 icon-themes/breeze/vcl/res/radio6.png                                      |binary
 icon-themes/breeze/vcl/res/radio7.png                                      |binary
 icon-themes/breeze_dark/cmd/32/ar/decrementlevel.png                       |binary
 icon-themes/breeze_dark/cmd/32/ar/decrementsublevels.png                   |binary
 icon-themes/breeze_dark/cmd/32/ar/incrementlevel.png                       |binary
 icon-themes/breeze_dark/cmd/32/ar/incrementsublevels.png                   |binary
 icon-themes/breeze_dark/cmd/32/ar/linenumberingdialog.png                  |binary
 icon-themes/breeze_dark/cmd/32/ar/movedown.png                             |binary
 icon-themes/breeze_dark/cmd/32/ar/movedownsubitems.png                     |binary
 icon-themes/breeze_dark/cmd/32/ar/moveup.png                               |binary
 icon-themes/breeze_dark/cmd/32/ar/moveupsubitems.png                       |binary
 icon-themes/breeze_dark/cmd/32/decrementlevel.png                          |binary
 icon-themes/breeze_dark/cmd/32/decrementsublevels.png                      |binary
 icon-themes/breeze_dark/cmd/32/fillleft.png                                |binary
 icon-themes/breeze_dark/cmd/32/hidewhitespace.png                          |binary
 icon-themes/breeze_dark/cmd/32/incrementlevel.png                          |binary
 icon-themes/breeze_dark/cmd/32/incrementsublevels.png                      |binary
 icon-themes/breeze_dark/cmd/32/linenumberingdialog.png                     |binary
 icon-themes/breeze_dark/cmd/32/movedown.png                                |binary
 icon-themes/breeze_dark/cmd/32/movedownsubitems.png                        |binary
 icon-themes/breeze_dark/cmd/32/moveup.png                                  |binary
 icon-themes/breeze_dark/cmd/32/moveupsubitems.png                          |binary
 icon-themes/breeze_dark/cmd/32/protectbookmarks.png                        |binary
 icon-themes/breeze_dark/cmd/32/protectfields.png                           |binary
 icon-themes/breeze_dark/cmd/32/setreminder.png                             |binary
 icon-themes/breeze_dark/cmd/ar/lc_decrementlevel.png                       |binary
 icon-themes/breeze_dark/cmd/ar/lc_decrementsublevels.png                   |binary
 icon-themes/breeze_dark/cmd/ar/lc_incrementlevel.png                       |binary
 icon-themes/breeze_dark/cmd/ar/lc_incrementsublevels.png                   |binary
 icon-themes/breeze_dark/cmd/ar/lc_linenumberingdialog.png                  |binary
 icon-themes/breeze_dark/cmd/ar/lc_movedown.png                             |binary
 icon-themes/breeze_dark/cmd/ar/lc_movedownsubitems.png                     |binary
 icon-themes/breeze_dark/cmd/ar/lc_moveup.png                               |binary
 icon-themes/breeze_dark/cmd/ar/lc_moveupsubitems.png                       |binary
 icon-themes/breeze_dark/cmd/ar/sc_decrementlevel.png                       |binary
 icon-themes/breeze_dark/cmd/ar/sc_decrementsublevels.png                   |binary
 icon-themes/breeze_dark/cmd/ar/sc_incrementlevel.png                       |binary
 icon-themes/breeze_dark/cmd/ar/sc_incrementsublevels.png                   |binary
 icon-themes/breeze_dark/cmd/ar/sc_linenumberingdialog.png                  |binary
 icon-themes/breeze_dark/cmd/ar/sc_movedown.png                             |binary
 icon-themes/breeze_dark/cmd/ar/sc_movedownsubitems.png                     |binary
 icon-themes/breeze_dark/cmd/ar/sc_moveup.png                               |binary
 icon-themes/breeze_dark/cmd/ar/sc_moveupsubitems.png                       |binary
 icon-themes/breeze_dark/cmd/lc_decrementlevel.png                          |binary
 icon-themes/breeze_dark/cmd/lc_decrementsublevels.png                      |binary
 icon-themes/breeze_dark/cmd/lc_hidewhitespace.png                          |binary
 icon-themes/breeze_dark/cmd/lc_incrementlevel.png                          |binary
 icon-themes/breeze_dark/cmd/lc_incrementsublevels.png                      |binary
 icon-themes/breeze_dark/cmd/lc_linenumberingdialog.png                     |binary
 icon-themes/breeze_dark/cmd/lc_movedown.png                                |binary
 icon-themes/breeze_dark/cmd/lc_movedownsubitems.png                        |binary
 icon-themes/breeze_dark/cmd/lc_moveup.png                                  |binary
 icon-themes/breeze_dark/cmd/lc_moveupsubitems.png                          |binary
 icon-themes/breeze_dark/cmd/lc_protectbookmarks.png                        |binary
 icon-themes/breeze_dark/cmd/lc_protectfields.png                           |binary
 icon-themes/breeze_dark/cmd/lc_setreminder.png                             |binary
 icon-themes/breeze_dark/cmd/sc_decrementlevel.png                          |binary
 icon-themes/breeze_dark/cmd/sc_decrementsublevels.png                      |binary
 icon-themes/breeze_dark/cmd/sc_hidewhitespace.png                          |binary
 icon-themes/breeze_dark/cmd/sc_incrementlevel.png                          |binary
 icon-themes/breeze_dark/cmd/sc_incrementsublevels.png                      |binary
 icon-themes/breeze_dark/cmd/sc_linenumberingdialog.png                     |binary
 icon-themes/breeze_dark/cmd/sc_movedown.png                                |binary
 icon-themes/breeze_dark/cmd/sc_movedownsubitems.png                        |binary
 icon-themes/breeze_dark/cmd/sc_moveup.png                                  |binary
 icon-themes/breeze_dark/cmd/sc_moveupsubitems.png                          |binary
 icon-themes/breeze_dark/cmd/sc_protectbookmarks.png                        |binary
 icon-themes/breeze_dark/cmd/sc_protectfields.png                           |binary
 icon-themes/breeze_dark/links.txt                                          |  357 
 icon-themes/breeze_dark/res/basbrk.png                                     |binary
 icon-themes/breeze_dark/res/lc06303.png                                    |binary
 icon-themes/breeze_dark/res/lx03123.png                                    |binary
 icon-themes/breeze_dark/res/lx03125.png                                    |binary
 icon-themes/breeze_dark/res/lx03126.png                                    |binary
 icon-themes/breeze_dark/res/lx03127.png                                    |binary
 icon-themes/breeze_dark/res/lx03129.png                                    |binary
 icon-themes/breeze_dark/res/lx03130.png                                    |binary
 icon-themes/breeze_dark/res/lx03162.png                                    |binary
 icon-themes/breeze_dark/res/lx03163.png                                    |binary
 icon-themes/breeze_dark/res/mainapp_16_8.png                               |binary
 icon-themes/breeze_dark/res/odg_16_8.png                                   |binary
 icon-themes/breeze_dark/res/otg_16_8.png                                   |binary
 icon-themes/breeze_dark/res/sc06303.png                                    |binary
 icon-themes/breeze_dark/res/sx03123.png                                    |binary
 icon-themes/breeze_dark/res/sx03125.png                                    |binary
 icon-themes/breeze_dark/res/sx03126.png                                    |binary
 icon-themes/breeze_dark/res/sx03127.png                                    |binary
 icon-themes/breeze_dark/res/sx03129.png                                    |binary
 icon-themes/breeze_dark/res/sx03130.png                                    |binary
 icon-themes/breeze_dark/res/sx03162.png                                    |binary
 icon-themes/breeze_dark/res/sx03163.png                                    |binary
 icon-themes/breeze_dark/res/sx03246.png                                    |binary
 icon-themes/breeze_dark/sc/res/lftrgt.png                                  |binary
 icon-themes/breeze_dark/sc/res/topdown.png                                 |binary
 icon-themes/breeze_dark/sd/res/slide_sorter_focus_border.png               |binary
 icon-themes/breeze_dark/sd/res/slide_sorter_insert_shadow.png              |binary
 icon-themes/breeze_dark/sd/res/slide_sorter_shadow.png                     |binary
 icon-themes/breeze_dark/svx/res/pr014.png                                  |binary
 icon-themes/breeze_dark/svx/res/rectbtns.png                               |binary
 icon-themes/breeze_dark/vcl/res/check1.png                                 |binary
 icon-themes/breeze_dark/vcl/res/check2.png                                 |binary
 icon-themes/breeze_dark/vcl/res/check3.png                                 |binary
 icon-themes/breeze_dark/vcl/res/check4.png                                 |binary
 icon-themes/breeze_dark/vcl/res/check5.png                                 |binary
 icon-themes/breeze_dark/vcl/res/check6.png                                 |binary
 icon-themes/breeze_dark/vcl/res/check7.png                                 |binary
 icon-themes/breeze_dark/vcl/res/check8.png                                 |binary
 icon-themes/breeze_dark/vcl/res/check9.png                                 |binary
 icon-themes/breeze_dark/vcl/res/radio1.png                                 |binary
 icon-themes/breeze_dark/vcl/res/radio2.png                                 |binary
 icon-themes/breeze_dark/vcl/res/radio3.png                                 |binary
 icon-themes/breeze_dark/vcl/res/radio4.png                                 |binary
 icon-themes/breeze_dark/vcl/res/radio5.png                                 |binary
 icon-themes/breeze_dark/vcl/res/radio6.png                                 |binary
 icon-themes/breeze_dark/vcl/res/radio7.png                                 |binary
 icon-themes/breeze_dark_svg/cmd/32/ar/decrementlevel.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/32/ar/decrementsublevels.svg               |    1 
 icon-themes/breeze_dark_svg/cmd/32/ar/incrementlevel.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/32/ar/incrementsublevels.svg               |    1 
 icon-themes/breeze_dark_svg/cmd/32/ar/linenumberingdialog.svg              |    2 
 icon-themes/breeze_dark_svg/cmd/32/ar/movedown.svg                         |    1 
 icon-themes/breeze_dark_svg/cmd/32/ar/movedownsubitems.svg                 |    1 
 icon-themes/breeze_dark_svg/cmd/32/ar/moveup.svg                           |    1 
 icon-themes/breeze_dark_svg/cmd/32/ar/moveupsubitems.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/32/decrementlevel.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/32/decrementsublevels.svg                  |    2 
 icon-themes/breeze_dark_svg/cmd/32/fillleft.svg                            |    1 
 icon-themes/breeze_dark_svg/cmd/32/fillright.svg                           |    1 
 icon-themes/breeze_dark_svg/cmd/32/hidewhitespace.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/32/incrementlevel.svg                      |    1 
 icon-themes/breeze_dark_svg/cmd/32/incrementsublevels.svg                  |    2 
 icon-themes/breeze_dark_svg/cmd/32/linenumberingdialog.svg                 |    2 
 icon-themes/breeze_dark_svg/cmd/32/movedown.svg                            |    2 
 icon-themes/breeze_dark_svg/cmd/32/movedownsubitems.svg                    |    2 
 icon-themes/breeze_dark_svg/cmd/32/moveup.svg                              |    2 
 icon-themes/breeze_dark_svg/cmd/32/moveupsubitems.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/32/protectbookmarks.svg                    |    1 
 icon-themes/breeze_dark_svg/cmd/32/protectfields.svg                       |    1 
 icon-themes/breeze_dark_svg/cmd/32/setreminder.svg                         |    1 
 icon-themes/breeze_dark_svg/cmd/32/showwhitespace.svg                      |    1 
 icon-themes/breeze_dark_svg/cmd/ar/lc_decrementlevel.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/ar/lc_decrementsublevels.svg               |    1 
 icon-themes/breeze_dark_svg/cmd/ar/lc_incrementlevel.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/ar/lc_incrementsublevels.svg               |    1 
 icon-themes/breeze_dark_svg/cmd/ar/lc_linenumberingdialog.svg              |    2 
 icon-themes/breeze_dark_svg/cmd/ar/lc_movedown.svg                         |    1 
 icon-themes/breeze_dark_svg/cmd/ar/lc_movedownsubitems.svg                 |    1 
 icon-themes/breeze_dark_svg/cmd/ar/lc_moveup.svg                           |    1 
 icon-themes/breeze_dark_svg/cmd/ar/lc_moveupsubitems.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_decrementlevel.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_decrementsublevels.svg               |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_incrementlevel.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_incrementsublevels.svg               |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_linenumberingdialog.svg              |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_movedown.svg                         |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_movedownsubitems.svg                 |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_moveup.svg                           |    1 
 icon-themes/breeze_dark_svg/cmd/ar/sc_moveupsubitems.svg                   |    1 
 icon-themes/breeze_dark_svg/cmd/lc_decrementlevel.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/lc_decrementsublevels.svg                  |    2 
 icon-themes/breeze_dark_svg/cmd/lc_fillleft.svg                            |    1 
 icon-themes/breeze_dark_svg/cmd/lc_hidewhitespace.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/lc_incrementlevel.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/lc_incrementsublevels.svg                  |    2 
 icon-themes/breeze_dark_svg/cmd/lc_linenumberingdialog.svg                 |    2 
 icon-themes/breeze_dark_svg/cmd/lc_movedown.svg                            |    2 
 icon-themes/breeze_dark_svg/cmd/lc_movedownsubitems.svg                    |    2 
 icon-themes/breeze_dark_svg/cmd/lc_moveup.svg                              |    2 
 icon-themes/breeze_dark_svg/cmd/lc_moveupsubitems.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/lc_protectbookmarks.svg                    |    1 
 icon-themes/breeze_dark_svg/cmd/lc_protectfields.svg                       |    1 
 icon-themes/breeze_dark_svg/cmd/lc_setreminder.svg                         |    1 
 icon-themes/breeze_dark_svg/cmd/sc_decrementlevel.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/sc_decrementsublevels.svg                  |    2 
 icon-themes/breeze_dark_svg/cmd/sc_fillleft.svg                            |    1 
 icon-themes/breeze_dark_svg/cmd/sc_hidewhitespace.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/sc_incrementlevel.svg                      |    1 
 icon-themes/breeze_dark_svg/cmd/sc_incrementsublevels.svg                  |    2 
 icon-themes/breeze_dark_svg/cmd/sc_linenumberingdialog.svg                 |    1 
 icon-themes/breeze_dark_svg/cmd/sc_movedown.svg                            |    2 
 icon-themes/breeze_dark_svg/cmd/sc_movedownsubitems.svg                    |    2 
 icon-themes/breeze_dark_svg/cmd/sc_moveup.svg                              |    2 
 icon-themes/breeze_dark_svg/cmd/sc_moveupsubitems.svg                      |    2 
 icon-themes/breeze_dark_svg/cmd/sc_protectbookmarks.svg                    |    2 
 icon-themes/breeze_dark_svg/cmd/sc_protectfields.svg                       |    1 
 icon-themes/breeze_dark_svg/cmd/sc_showsinglepage.svg                      |    2 
 icon-themes/breeze_dark_svg/res/basbrk.svg                                 |    1 
 icon-themes/breeze_dark_svg/res/lc06303.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03123.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03125.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03126.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03127.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03129.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03130.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03162.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03163.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03167.svg                                |    1 
 icon-themes/breeze_dark_svg/res/lx03242.svg                                |    1 
 icon-themes/breeze_dark_svg/res/mainapp_16_8.svg                           |    1 
 icon-themes/breeze_dark_svg/res/odg_16_8.svg                               |    2 
 icon-themes/breeze_dark_svg/res/otg_16_8.svg                               |    1 
 icon-themes/breeze_dark_svg/res/sc05500.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sc06303.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sc10223.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sc10224.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03123.svg                                |    2 
 icon-themes/breeze_dark_svg/res/sx03125.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03126.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03127.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03129.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03130.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03144.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03162.svg                                |    2 
 icon-themes/breeze_dark_svg/res/sx03163.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03164.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03165.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03167.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03242.svg                                |    1 
 icon-themes/breeze_dark_svg/res/sx03246.svg                                |    2 
 icon-themes/breeze_dark_svg/res/sx03254.svg                                |    1 
 icon-themes/breeze_dark_svg/sc/res/lftrgt.svg                              |    1 
 icon-themes/breeze_dark_svg/sc/res/topdown.svg                             |    1 
 icon-themes/breeze_dark_svg/sd/res/slide_sorter_focus_border.svg           |    1 
 icon-themes/breeze_dark_svg/sd/res/slide_sorter_insert_shadow.svg          |    1 
 icon-themes/breeze_dark_svg/sd/res/slide_sorter_shadow.svg                 |    1 
 icon-themes/breeze_dark_svg/svx/res/pr014.svg                              |    2 
 icon-themes/breeze_dark_svg/svx/res/rectbtns.svg                           |    1 
 icon-themes/breeze_dark_svg/vcl/res/check1.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/check2.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/check3.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/check4.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/check5.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/check6.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/check7.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/check8.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/check9.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/radio1.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/radio2.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/radio3.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/radio4.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/radio5.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/radio6.svg                             |    1 
 icon-themes/breeze_dark_svg/vcl/res/radio7.svg                             |    1 
 icon-themes/breeze_svg/cmd/32/ar/decrementlevel.svg                        |    1 
 icon-themes/breeze_svg/cmd/32/ar/decrementsublevels.svg                    |    1 
 icon-themes/breeze_svg/cmd/32/ar/incrementlevel.svg                        |    1 
 icon-themes/breeze_svg/cmd/32/ar/incrementsublevels.svg                    |    1 
 icon-themes/breeze_svg/cmd/32/ar/linenumberingdialog.svg                   |    2 
 icon-themes/breeze_svg/cmd/32/ar/movedown.svg                              |    1 
 icon-themes/breeze_svg/cmd/32/ar/movedownsubitems.svg                      |    1 
 icon-themes/breeze_svg/cmd/32/ar/moveup.svg                                |    1 
 icon-themes/breeze_svg/cmd/32/ar/moveupsubitems.svg                        |    1 
 icon-themes/breeze_svg/cmd/32/decrementlevel.svg                           |    2 
 icon-themes/breeze_svg/cmd/32/decrementsublevels.svg                       |    2 
 icon-themes/breeze_svg/cmd/32/fillleft.svg                                 |    1 
 icon-themes/breeze_svg/cmd/32/hidewhitespace.svg                           |    2 
 icon-themes/breeze_svg/cmd/32/incrementlevel.svg                           |    1 
 icon-themes/breeze_svg/cmd/32/incrementsublevels.svg                       |    2 
 icon-themes/breeze_svg/cmd/32/linenumberingdialog.svg                      |    2 
 icon-themes/breeze_svg/cmd/32/movedown.svg                                 |    2 
 icon-themes/breeze_svg/cmd/32/movedownsubitems.svg                         |    2 
 icon-themes/breeze_svg/cmd/32/moveup.svg                                   |    2 
 icon-themes/breeze_svg/cmd/32/moveupsubitems.svg                           |    2 
 icon-themes/breeze_svg/cmd/32/protectbookmarks.svg                         |    1 
 icon-themes/breeze_svg/cmd/32/protectfields.svg                            |    1 
 icon-themes/breeze_svg/cmd/32/setreminder.svg                              |    1 
 icon-themes/breeze_svg/cmd/ar/lc_decrementlevel.svg                        |    1 
 icon-themes/breeze_svg/cmd/ar/lc_decrementsublevels.svg                    |    1 
 icon-themes/breeze_svg/cmd/ar/lc_incrementlevel.svg                        |    1 
 icon-themes/breeze_svg/cmd/ar/lc_incrementsublevels.svg                    |    1 
 icon-themes/breeze_svg/cmd/ar/lc_linenumberingdialog.svg                   |    2 
 icon-themes/breeze_svg/cmd/ar/lc_movedown.svg                              |    1 
 icon-themes/breeze_svg/cmd/ar/lc_movedownsubitems.svg                      |    1 
 icon-themes/breeze_svg/cmd/ar/lc_moveup.svg                                |    1 
 icon-themes/breeze_svg/cmd/ar/lc_moveupsubitems.svg                        |    1 
 icon-themes/breeze_svg/cmd/ar/sc_decrementlevel.svg                        |    1 
 icon-themes/breeze_svg/cmd/ar/sc_decrementsublevels.svg                    |    1 
 icon-themes/breeze_svg/cmd/ar/sc_incrementlevel.svg                        |    1 
 icon-themes/breeze_svg/cmd/ar/sc_incrementsublevels.svg                    |    1 
 icon-themes/breeze_svg/cmd/ar/sc_linenumberingdialog.svg                   |    1 
 icon-themes/breeze_svg/cmd/ar/sc_movedown.svg                              |    1 
 icon-themes/breeze_svg/cmd/ar/sc_movedownsubitems.svg                      |    1 
 icon-themes/breeze_svg/cmd/ar/sc_moveup.svg                                |    1 
 icon-themes/breeze_svg/cmd/ar/sc_moveupsubitems.svg                        |    1 
 icon-themes/breeze_svg/cmd/lc_decrementlevel.svg                           |    2 
 icon-themes/breeze_svg/cmd/lc_decrementsublevels.svg                       |    2 
 icon-themes/breeze_svg/cmd/lc_hidewhitespace.svg                           |    2 
 icon-themes/breeze_svg/cmd/lc_incrementlevel.svg                           |    2 
 icon-themes/breeze_svg/cmd/lc_incrementsublevels.svg                       |    2 
 icon-themes/breeze_svg/cmd/lc_linenumberingdialog.svg                      |    2 
 icon-themes/breeze_svg/cmd/lc_movedown.svg                                 |    2 
 icon-themes/breeze_svg/cmd/lc_movedownsubitems.svg                         |    2 
 icon-themes/breeze_svg/cmd/lc_moveup.svg                                   |    2 
 icon-themes/breeze_svg/cmd/lc_moveupsubitems.svg                           |    2 
 icon-themes/breeze_svg/cmd/lc_protectbookmarks.svg                         |    1 
 icon-themes/breeze_svg/cmd/lc_protectfields.svg                            |    1 
 icon-themes/breeze_svg/cmd/lc_setreminder.svg                              |    1 
 icon-themes/breeze_svg/cmd/sc_decrementlevel.svg                           |    2 
 icon-themes/breeze_svg/cmd/sc_decrementsublevels.svg                       |    2 
 icon-themes/breeze_svg/cmd/sc_hidewhitespace.svg                           |    2 
 icon-themes/breeze_svg/cmd/sc_incrementlevel.svg                           |    1 
 icon-themes/breeze_svg/cmd/sc_incrementsublevels.svg                       |    2 
 icon-themes/breeze_svg/cmd/sc_linenumberingdialog.svg                      |    1 
 icon-themes/breeze_svg/cmd/sc_movedown.svg                                 |    2 
 icon-themes/breeze_svg/cmd/sc_movedownsubitems.svg                         |    2 
 icon-themes/breeze_svg/cmd/sc_moveup.svg                                   |    2 
 icon-themes/breeze_svg/cmd/sc_moveupsubitems.svg                           |    2 
 icon-themes/breeze_svg/cmd/sc_protectbookmarks.svg                         |    2 
 icon-themes/breeze_svg/cmd/sc_protectfields.svg                            |    1 
 icon-themes/breeze_svg/cmd/sc_showsinglepage.svg                           |    2 
 icon-themes/breeze_svg/res/basbrk.svg                                      |    1 
 icon-themes/breeze_svg/res/lc06303.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03123.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03125.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03126.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03127.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03129.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03130.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03162.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03163.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03167.svg                                     |    1 
 icon-themes/breeze_svg/res/lx03242.svg                                     |    1 
 icon-themes/breeze_svg/res/mainapp_16_8.svg                                |    1 
 icon-themes/breeze_svg/res/odg_16_8.svg                                    |    2 
 icon-themes/breeze_svg/res/otg_16_8.svg                                    |    1 
 icon-themes/breeze_svg/res/sc05500.svg                                     |    1 
 icon-themes/breeze_svg/res/sc06303.svg                                     |    1 
 icon-themes/breeze_svg/res/sc10223.svg                                     |    1 
 icon-themes/breeze_svg/res/sc10224.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03123.svg                                     |    2 
 icon-themes/breeze_svg/res/sx03125.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03126.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03127.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03129.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03130.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03144.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03162.svg                                     |    2 
 icon-themes/breeze_svg/res/sx03163.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03164.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03165.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03167.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03242.svg                                     |    1 
 icon-themes/breeze_svg/res/sx03246.svg                                     |    2 
 icon-themes/breeze_svg/res/sx03254.svg                                     |    1 
 icon-themes/breeze_svg/sc/res/lftrgt.svg                                   |    1 
 icon-themes/breeze_svg/sc/res/topdown.svg                                  |    1 
 icon-themes/breeze_svg/sd/res/slide_sorter_focus_border.svg                |    1 
 icon-themes/breeze_svg/sd/res/slide_sorter_insert_shadow.svg               |    1 
 icon-themes/breeze_svg/sd/res/slide_sorter_shadow.svg                      |    1 
 icon-themes/breeze_svg/svx/res/pr014.svg                                   |    2 
 icon-themes/breeze_svg/svx/res/rectbtns.svg                                |    1 
 icon-themes/breeze_svg/vcl/res/check1.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/check2.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/check3.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/check4.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/check5.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/check6.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/check7.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/check8.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/check9.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/radio1.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/radio2.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/radio3.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/radio4.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/radio5.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/radio6.svg                                  |    1 
 icon-themes/breeze_svg/vcl/res/radio7.svg                                  |    1 
 icon-themes/colibre/svx/res/pr014.png                                      |binary
 icon-themes/colibre_svg/svx/res/pr014.svg                                  |    2 
 icon-themes/elementary/svx/res/pr014.png                                   |binary
 icon-themes/elementary_svg/svx/res/pr014.svg                               |    2 
 icon-themes/karasa_jaga/cmd/32/ar/linenumberingdialog.png                  |binary
 icon-themes/karasa_jaga/cmd/32/insertsymbol.png                            |binary
 icon-themes/karasa_jaga/cmd/32/linenumberingdialog.png                     |binary
 icon-themes/karasa_jaga/cmd/ar/lc_linenumberingdialog.png                  |binary
 icon-themes/karasa_jaga/cmd/ar/sc_linenumberingdialog.png                  |binary
 icon-themes/karasa_jaga/cmd/lc_insertreferencefield.png                    |binary
 icon-themes/karasa_jaga/cmd/lc_insertsymbol.png                            |binary
 icon-themes/karasa_jaga/cmd/lc_linenumberingdialog.png                     |binary
 icon-themes/karasa_jaga/cmd/sc_linenumberingdialog.png                     |binary
 icon-themes/karasa_jaga/svx/res/pr014.png                                  |binary
 icon-themes/karasa_jaga_svg/cmd/32/ar/linenumberingdialog.svg              |    2 
 icon-themes/karasa_jaga_svg/cmd/32/insertsymbol.svg                        |    2 
 icon-themes/karasa_jaga_svg/cmd/32/linenumberingdialog.svg                 |    2 
 icon-themes/karasa_jaga_svg/cmd/ar/lc_linenumberingdialog.svg              |    2 
 icon-themes/karasa_jaga_svg/cmd/ar/sc_linenumberingdialog.svg              |    2 
 icon-themes/karasa_jaga_svg/cmd/lc_insertreferencefield.svg                |    2 
 icon-themes/karasa_jaga_svg/cmd/lc_insertsymbol.svg                        |    2 
 icon-themes/karasa_jaga_svg/cmd/lc_linenumberingdialog.svg                 |    2 
 icon-themes/karasa_jaga_svg/cmd/sc_linenumberingdialog.svg                 |    2 
 icon-themes/karasa_jaga_svg/svx/res/pr014.svg                              |    2 
 icon-themes/sifr/cmd/32/ar/bulletsandnumberingdialog.png                   |binary
 icon-themes/sifr/cmd/32/ar/decrementlevel.png                              |binary
 icon-themes/sifr/cmd/32/ar/decrementsublevels.png                          |binary
 icon-themes/sifr/cmd/32/ar/incrementlevel.png                              |binary
 icon-themes/sifr/cmd/32/ar/incrementsublevels.png                          |binary
 icon-themes/sifr/cmd/32/ar/linenumberingdialog.png                         |binary
 icon-themes/sifr/cmd/32/ar/movedown.png                                    |binary
 icon-themes/sifr/cmd/32/ar/movedownsubitems.png                            |binary
 icon-themes/sifr/cmd/32/ar/moveup.png                                      |binary
 icon-themes/sifr/cmd/32/ar/moveupsubitems.png                              |binary
 icon-themes/sifr/cmd/32/ar/outlinebullet.png                               |binary
 icon-themes/sifr/cmd/32/decrementlevel.png                                 |binary
 icon-themes/sifr/cmd/32/decrementsublevels.png                             |binary
 icon-themes/sifr/cmd/32/incrementlevel.png                                 |binary
 icon-themes/sifr/cmd/32/incrementsublevels.png                             |binary
 icon-themes/sifr/cmd/32/linenumberingdialog.png                            |binary
 icon-themes/sifr/cmd/32/movedown.png                                       |binary
 icon-themes/sifr/cmd/32/movedownsubitems.png                               |binary
 icon-themes/sifr/cmd/32/moveup.png                                         |binary
 icon-themes/sifr/cmd/32/moveupsubitems.png                                 |binary
 icon-themes/sifr/cmd/ar/lc_bulletsandnumberingdialog.png                   |binary
 icon-themes/sifr/cmd/ar/lc_decrementlevel.png                              |binary
 icon-themes/sifr/cmd/ar/lc_decrementsublevels.png                          |binary
 icon-themes/sifr/cmd/ar/lc_incrementlevel.png                              |binary
 icon-themes/sifr/cmd/ar/lc_incrementsublevels.png                          |binary
 icon-themes/sifr/cmd/ar/lc_linenumberingdialog.png                         |binary
 icon-themes/sifr/cmd/ar/lc_movedown.png                                    |binary
 icon-themes/sifr/cmd/ar/lc_movedownsubitems.png                            |binary
 icon-themes/sifr/cmd/ar/lc_moveup.png                                      |binary
 icon-themes/sifr/cmd/ar/lc_moveupsubitems.png                              |binary
 icon-themes/sifr/cmd/ar/lc_outlinebullet.png                               |binary
 icon-themes/sifr/cmd/ar/sc_bulletsandnumberingdialog.png                   |binary
 icon-themes/sifr/cmd/ar/sc_decrementlevel.png                              |binary
 icon-themes/sifr/cmd/ar/sc_decrementsublevels.png                          |binary
 icon-themes/sifr/cmd/ar/sc_incrementlevel.png                              |binary
 icon-themes/sifr/cmd/ar/sc_incrementsublevels.png                          |binary
 icon-themes/sifr/cmd/ar/sc_linenumberingdialog.png                         |binary
 icon-themes/sifr/cmd/ar/sc_movedown.png                                    |binary
 icon-themes/sifr/cmd/ar/sc_movedownsubitems.png                            |binary
 icon-themes/sifr/cmd/ar/sc_moveup.png                                      |binary
 icon-themes/sifr/cmd/ar/sc_moveupsubitems.png                              |binary
 icon-themes/sifr/cmd/ar/sc_outlinebullet.png                               |binary
 icon-themes/sifr/cmd/lc_decrementlevel.png                                 |binary
 icon-themes/sifr/cmd/lc_decrementsublevels.png                             |binary
 icon-themes/sifr/cmd/lc_incrementlevel.png                                 |binary
 icon-themes/sifr/cmd/lc_incrementsublevels.png                             |binary
 icon-themes/sifr/cmd/lc_linenumberingdialog.png                            |binary
 icon-themes/sifr/cmd/lc_movedown.png                                       |binary
 icon-themes/sifr/cmd/lc_movedownsubitems.png                               |binary
 icon-themes/sifr/cmd/lc_moveup.png                                         |binary
 icon-themes/sifr/cmd/lc_moveupsubitems.png                                 |binary
 icon-themes/sifr/cmd/sc_decrementlevel.png                                 |binary
 icon-themes/sifr/cmd/sc_decrementsublevels.png                             |binary
 icon-themes/sifr/cmd/sc_incrementlevel.png                                 |binary
 icon-themes/sifr/cmd/sc_incrementsublevels.png                             |binary
 icon-themes/sifr/cmd/sc_linenumberingdialog.png                            |binary
 icon-themes/sifr/cmd/sc_movedown.png                                       |binary
 icon-themes/sifr/cmd/sc_movedownsubitems.png                               |binary
 icon-themes/sifr/cmd/sc_moveup.png                                         |binary
 icon-themes/sifr/cmd/sc_moveupsubitems.png                                 |binary
 icon-themes/sifr/links.txt                                                 |   78 
 icon-themes/sifr/res/base128.png                                           |binary
 icon-themes/sifr/res/calc128.png                                           |binary
 icon-themes/sifr/res/draw128.png                                           |binary
 icon-themes/sifr/res/impress128.png                                        |binary
 icon-themes/sifr/res/main128.png                                           |binary
 icon-themes/sifr/res/mainapp_48_8.png                                      |binary
 icon-themes/sifr/res/math128.png                                           |binary
 icon-themes/sifr/res/odb_48_8.png                                          |binary
 icon-themes/sifr/res/odf_48_8.png                                          |binary
 icon-themes/sifr/res/odg_48_8.png                                          |binary
 icon-themes/sifr/res/odm_48_8.png                                          |binary
 icon-themes/sifr/res/odp_48_8.png                                          |binary
 icon-themes/sifr/res/ods_48_8.png                                          |binary
 icon-themes/sifr/res/odt_48_8.png                                          |binary
 icon-themes/sifr/res/otf_48_8.png                                          |binary
 icon-themes/sifr/res/otg_48_8.png                                          |binary
 icon-themes/sifr/res/otp_48_8.png                                          |binary
 icon-themes/sifr/res/ots_48_8.png                                          |binary
 icon-themes/sifr/res/ott_48_8.png                                          |binary
 icon-themes/sifr/res/writer128.png                                         |binary
 icon-themes/sifr_dark/cmd/32/ar/bulletsandnumberingdialog.png              |binary
 icon-themes/sifr_dark/cmd/32/ar/decrementlevel.png                         |binary
 icon-themes/sifr_dark/cmd/32/ar/decrementsublevels.png                     |binary
 icon-themes/sifr_dark/cmd/32/ar/incrementlevel.png                         |binary
 icon-themes/sifr_dark/cmd/32/ar/incrementsublevels.png                     |binary
 icon-themes/sifr_dark/cmd/32/ar/linenumberingdialog.png                    |binary
 icon-themes/sifr_dark/cmd/32/ar/movedown.png                               |binary
 icon-themes/sifr_dark/cmd/32/ar/movedownsubitems.png                       |binary
 icon-themes/sifr_dark/cmd/32/ar/moveup.png                                 |binary
 icon-themes/sifr_dark/cmd/32/ar/moveupsubitems.png                         |binary
 icon-themes/sifr_dark/cmd/32/ar/outlinebullet.png                          |binary
 icon-themes/sifr_dark/cmd/32/decrementlevel.png                            |binary
 icon-themes/sifr_dark/cmd/32/decrementsublevels.png                        |binary
 icon-themes/sifr_dark/cmd/32/incrementlevel.png                            |binary
 icon-themes/sifr_dark/cmd/32/incrementsublevels.png                        |binary
 icon-themes/sifr_dark/cmd/32/linenumberingdialog.png                       |binary
 icon-themes/sifr_dark/cmd/32/movedown.png                                  |binary
 icon-themes/sifr_dark/cmd/32/movedownsubitems.png                          |binary
 icon-themes/sifr_dark/cmd/32/moveup.png                                    |binary
 icon-themes/sifr_dark/cmd/32/moveupsubitems.png                            |binary
 icon-themes/sifr_dark/cmd/ar/lc_bulletsandnumberingdialog.png              |binary
 icon-themes/sifr_dark/cmd/ar/lc_decrementlevel.png                         |binary
 icon-themes/sifr_dark/cmd/ar/lc_decrementsublevels.png                     |binary
 icon-themes/sifr_dark/cmd/ar/lc_incrementlevel.png                         |binary
 icon-themes/sifr_dark/cmd/ar/lc_incrementsublevels.png                     |binary
 icon-themes/sifr_dark/cmd/ar/lc_linenumberingdialog.png                    |binary
 icon-themes/sifr_dark/cmd/ar/lc_movedown.png                               |binary
 icon-themes/sifr_dark/cmd/ar/lc_movedownsubitems.png                       |binary
 icon-themes/sifr_dark/cmd/ar/lc_moveup.png                                 |binary
 icon-themes/sifr_dark/cmd/ar/lc_moveupsubitems.png                         |binary
 icon-themes/sifr_dark/cmd/ar/lc_outlinebullet.png                          |binary
 icon-themes/sifr_dark/cmd/ar/sc_bulletsandnumberingdialog.png              |binary
 icon-themes/sifr_dark/cmd/ar/sc_decrementlevel.png                         |binary
 icon-themes/sifr_dark/cmd/ar/sc_decrementsublevels.png                     |binary
 icon-themes/sifr_dark/cmd/ar/sc_incrementlevel.png                         |binary
 icon-themes/sifr_dark/cmd/ar/sc_incrementsublevels.png                     |binary
 icon-themes/sifr_dark/cmd/ar/sc_linenumberingdialog.png                    |binary
 icon-themes/sifr_dark/cmd/ar/sc_movedown.png                               |binary
 icon-themes/sifr_dark/cmd/ar/sc_movedownsubitems.png                       |binary
 icon-themes/sifr_dark/cmd/ar/sc_moveup.png                                 |binary
 icon-themes/sifr_dark/cmd/ar/sc_moveupsubitems.png                         |binary
 icon-themes/sifr_dark/cmd/ar/sc_outlinebullet.png                          |binary
 icon-themes/sifr_dark/cmd/lc_decrementlevel.png                            |binary
 icon-themes/sifr_dark/cmd/lc_decrementsublevels.png                        |binary
 icon-themes/sifr_dark/cmd/lc_incrementlevel.png                            |binary
 icon-themes/sifr_dark/cmd/lc_incrementsublevels.png                        |binary
 icon-themes/sifr_dark/cmd/lc_linenumberingdialog.png                       |binary
 icon-themes/sifr_dark/cmd/lc_movedown.png                                  |binary
 icon-themes/sifr_dark/cmd/lc_movedownsubitems.png                          |binary
 icon-themes/sifr_dark/cmd/lc_moveup.png                                    |binary
 icon-themes/sifr_dark/cmd/lc_moveupsubitems.png                            |binary
 icon-themes/sifr_dark/cmd/sc_decrementlevel.png                            |binary
 icon-themes/sifr_dark/cmd/sc_decrementsublevels.png                        |binary
 icon-themes/sifr_dark/cmd/sc_incrementlevel.png                            |binary
 icon-themes/sifr_dark/cmd/sc_incrementsublevels.png                        |binary
 icon-themes/sifr_dark/cmd/sc_linenumberingdialog.png                       |binary
 icon-themes/sifr_dark/cmd/sc_movedown.png                                  |binary
 icon-themes/sifr_dark/cmd/sc_movedownsubitems.png                          |binary
 icon-themes/sifr_dark/cmd/sc_moveup.png                                    |binary
 icon-themes/sifr_dark/cmd/sc_moveupsubitems.png                            |binary
 icon-themes/sifr_dark/links.txt                                            |   78 
 icon-themes/sifr_dark/res/base128.png                                      |binary
 icon-themes/sifr_dark/res/calc128.png                                      |binary
 icon-themes/sifr_dark/res/draw128.png                                      |binary
 icon-themes/sifr_dark/res/impress128.png                                   |binary
 icon-themes/sifr_dark/res/main128.png                                      |binary
 icon-themes/sifr_dark/res/mainapp_48_8.png                                 |binary
 icon-themes/sifr_dark/res/math128.png                                      |binary
 icon-themes/sifr_dark/res/odb_48_8.png                                     |binary
 icon-themes/sifr_dark/res/odf_48_8.png                                     |binary
 icon-themes/sifr_dark/res/odg_48_8.png                                     |binary
 icon-themes/sifr_dark/res/odm_48_8.png                                     |binary
 icon-themes/sifr_dark/res/odp_48_8.png                                     |binary
 icon-themes/sifr_dark/res/ods_48_8.png                                     |binary
 icon-themes/sifr_dark/res/odt_48_8.png                                     |binary
 icon-themes/sifr_dark/res/otf_48_8.png                                     |binary
 icon-themes/sifr_dark/res/otg_48_8.png                                     |binary
 icon-themes/sifr_dark/res/otp_48_8.png                                     |binary
 icon-themes/sifr_dark/res/ots_48_8.png                                     |binary
 icon-themes/sifr_dark/res/ott_48_8.png                                     |binary
 icon-themes/sifr_dark/res/writer128.png                                    |binary
 icon-themes/sifr_dark_svg/cmd/32/ar/bulletsandnumberingdialog.svg          |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/decrementlevel.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/decrementsublevels.svg                 |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/incrementlevel.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/incrementsublevels.svg                 |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/linenumberingdialog.svg                |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/movedown.svg                           |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/movedownsubitems.svg                   |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/moveup.svg                             |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/moveupsubitems.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/32/ar/outlinebullet.svg                      |    1 
 icon-themes/sifr_dark_svg/cmd/32/decrementlevel.svg                        |    2 
 icon-themes/sifr_dark_svg/cmd/32/decrementsublevels.svg                    |    2 
 icon-themes/sifr_dark_svg/cmd/32/incrementlevel.svg                        |    2 
 icon-themes/sifr_dark_svg/cmd/32/incrementsublevels.svg                    |    2 
 icon-themes/sifr_dark_svg/cmd/32/linenumberingdialog.svg                   |    1 
 icon-themes/sifr_dark_svg/cmd/32/movedown.svg                              |    2 
 icon-themes/sifr_dark_svg/cmd/32/movedownsubitems.svg                      |    2 
 icon-themes/sifr_dark_svg/cmd/32/moveup.svg                                |    2 
 icon-themes/sifr_dark_svg/cmd/32/moveupsubitems.svg                        |    2 
 icon-themes/sifr_dark_svg/cmd/ar/lc_bulletsandnumberingdialog.svg          |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_decrementlevel.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_decrementsublevels.svg                 |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_incrementlevel.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_incrementsublevels.svg                 |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_linenumberingdialog.svg                |    2 
 icon-themes/sifr_dark_svg/cmd/ar/lc_movedown.svg                           |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_movedownsubitems.svg                   |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_moveup.svg                             |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_moveupsubitems.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/ar/lc_outlinebullet.svg                      |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_bulletsandnumberingdialog.svg          |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_decrementlevel.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_decrementsublevels.svg                 |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_incrementlevel.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_incrementsublevels.svg                 |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_linenumberingdialog.svg                |    2 
 icon-themes/sifr_dark_svg/cmd/ar/sc_movedown.svg                           |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_movedownsubitems.svg                   |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_moveup.svg                             |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_moveupsubitems.svg                     |    1 
 icon-themes/sifr_dark_svg/cmd/ar/sc_outlinebullet.svg                      |    1 
 icon-themes/sifr_dark_svg/cmd/lc_decrementlevel.svg                        |    2 
 icon-themes/sifr_dark_svg/cmd/lc_decrementsublevels.svg                    |    2 
 icon-themes/sifr_dark_svg/cmd/lc_incrementlevel.svg                        |    2 
 icon-themes/sifr_dark_svg/cmd/lc_incrementsublevels.svg                    |    2 
 icon-themes/sifr_dark_svg/cmd/lc_linenumberingdialog.svg                   |    2 
 icon-themes/sifr_dark_svg/cmd/lc_movedown.svg                              |    2 
 icon-themes/sifr_dark_svg/cmd/lc_movedownsubitems.svg                      |    2 
 icon-themes/sifr_dark_svg/cmd/lc_moveup.svg                                |    2 
 icon-themes/sifr_dark_svg/cmd/lc_moveupsubitems.svg                        |    2 
 icon-themes/sifr_dark_svg/cmd/sc_decrementlevel.svg                        |    2 
 icon-themes/sifr_dark_svg/cmd/sc_decrementsublevels.svg                    |    2 
 icon-themes/sifr_dark_svg/cmd/sc_incrementlevel.svg                        |    2 
 icon-themes/sifr_dark_svg/cmd/sc_incrementsublevels.svg                    |    2 
 icon-themes/sifr_dark_svg/cmd/sc_linenumberingdialog.svg                   |    2 
 icon-themes/sifr_dark_svg/cmd/sc_movedown.svg                              |    2 
 icon-themes/sifr_dark_svg/cmd/sc_movedownsubitems.svg                      |    2 
 icon-themes/sifr_dark_svg/cmd/sc_moveup.svg                                |    2 
 icon-themes/sifr_dark_svg/cmd/sc_moveupsubitems.svg                        |    2 
 icon-themes/sifr_dark_svg/res/base128.svg                                  |    1 
 icon-themes/sifr_dark_svg/res/calc128.svg                                  |    1 
 icon-themes/sifr_dark_svg/res/draw128.svg                                  |    1 
 icon-themes/sifr_dark_svg/res/impress128.svg                               |    1 
 icon-themes/sifr_dark_svg/res/main128.svg                                  |    1 
 icon-themes/sifr_dark_svg/res/mainapp_48_8.svg                             |    1 
 icon-themes/sifr_dark_svg/res/math128.svg                                  |    1 
 icon-themes/sifr_dark_svg/res/odb_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/odf_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/odg_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/odm_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/odp_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/ods_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/odt_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/otf_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/otg_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/otp_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/ots_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/ott_48_8.svg                                 |    1 
 icon-themes/sifr_dark_svg/res/writer128.svg                                |    1 
 icon-themes/sifr_svg/cmd/32/ar/bulletsandnumberingdialog.svg               |    1 
 icon-themes/sifr_svg/cmd/32/ar/decrementlevel.svg                          |    1 
 icon-themes/sifr_svg/cmd/32/ar/decrementsublevels.svg                      |    1 
 icon-themes/sifr_svg/cmd/32/ar/incrementlevel.svg                          |    1 
 icon-themes/sifr_svg/cmd/32/ar/incrementsublevels.svg                      |    1 
 icon-themes/sifr_svg/cmd/32/ar/linenumberingdialog.svg                     |    1 
 icon-themes/sifr_svg/cmd/32/ar/movedown.svg                                |    1 
 icon-themes/sifr_svg/cmd/32/ar/movedownsubitems.svg                        |    1 
 icon-themes/sifr_svg/cmd/32/ar/moveup.svg                                  |    1 
 icon-themes/sifr_svg/cmd/32/ar/moveupsubitems.svg                          |    1 
 icon-themes/sifr_svg/cmd/32/ar/outlinebullet.svg                           |    1 
 icon-themes/sifr_svg/cmd/32/decrementlevel.svg                             |    2 
 icon-themes/sifr_svg/cmd/32/decrementsublevels.svg                         |    2 
 icon-themes/sifr_svg/cmd/32/incrementlevel.svg                             |    2 
 icon-themes/sifr_svg/cmd/32/incrementsublevels.svg                         |    2 
 icon-themes/sifr_svg/cmd/32/linenumberingdialog.svg                        |    1 
 icon-themes/sifr_svg/cmd/32/movedown.svg                                   |    2 
 icon-themes/sifr_svg/cmd/32/movedownsubitems.svg                           |    2 
 icon-themes/sifr_svg/cmd/32/moveup.svg                                     |    2 
 icon-themes/sifr_svg/cmd/32/moveupsubitems.svg                             |    2 
 icon-themes/sifr_svg/cmd/ar/lc_bulletsandnumberingdialog.svg               |    1 
 icon-themes/sifr_svg/cmd/ar/lc_decrementlevel.svg                          |    1 
 icon-themes/sifr_svg/cmd/ar/lc_decrementsublevels.svg                      |    1 
 icon-themes/sifr_svg/cmd/ar/lc_incrementlevel.svg                          |    1 
 icon-themes/sifr_svg/cmd/ar/lc_incrementsublevels.svg                      |    1 
 icon-themes/sifr_svg/cmd/ar/lc_linenumberingdialog.svg                     |    2 
 icon-themes/sifr_svg/cmd/ar/lc_movedown.svg                                |    1 
 icon-themes/sifr_svg/cmd/ar/lc_movedownsubitems.svg                        |    1 
 icon-themes/sifr_svg/cmd/ar/lc_moveup.svg                                  |    1 
 icon-themes/sifr_svg/cmd/ar/lc_moveupsubitems.svg                          |    1 
 icon-themes/sifr_svg/cmd/ar/lc_outlinebullet.svg                           |    1 
 icon-themes/sifr_svg/cmd/ar/sc_bulletsandnumberingdialog.svg               |    1 
 icon-themes/sifr_svg/cmd/ar/sc_decrementlevel.svg                          |    1 
 icon-themes/sifr_svg/cmd/ar/sc_decrementsublevels.svg                      |    1 
 icon-themes/sifr_svg/cmd/ar/sc_incrementlevel.svg                          |    1 
 icon-themes/sifr_svg/cmd/ar/sc_incrementsublevels.svg                      |    1 
 icon-themes/sifr_svg/cmd/ar/sc_linenumberingdialog.svg                     |    2 
 icon-themes/sifr_svg/cmd/ar/sc_movedown.svg                                |    1 
 icon-themes/sifr_svg/cmd/ar/sc_movedownsubitems.svg                        |    1 
 icon-themes/sifr_svg/cmd/ar/sc_moveup.svg                                  |    1 
 icon-themes/sifr_svg/cmd/ar/sc_moveupsubitems.svg                          |    1 
 icon-themes/sifr_svg/cmd/ar/sc_outlinebullet.svg                           |    1 
 icon-themes/sifr_svg/cmd/lc_decrementlevel.svg                             |    2 
 icon-themes/sifr_svg/cmd/lc_decrementsublevels.svg                         |    2 
 icon-themes/sifr_svg/cmd/lc_incrementlevel.svg                             |    2 
 icon-themes/sifr_svg/cmd/lc_incrementsublevels.svg                         |    2 
 icon-themes/sifr_svg/cmd/lc_linenumberingdialog.svg                        |    2 
 icon-themes/sifr_svg/cmd/lc_movedown.svg                                   |    2 
 icon-themes/sifr_svg/cmd/lc_movedownsubitems.svg                           |    2 
 icon-themes/sifr_svg/cmd/lc_moveup.svg                                     |    2 
 icon-themes/sifr_svg/cmd/lc_moveupsubitems.svg                             |    2 
 icon-themes/sifr_svg/cmd/sc_decrementlevel.svg                             |    2 
 icon-themes/sifr_svg/cmd/sc_decrementsublevels.svg                         |    2 
 icon-themes/sifr_svg/cmd/sc_incrementlevel.svg                             |    2 
 icon-themes/sifr_svg/cmd/sc_incrementsublevels.svg                         |    2 
 icon-themes/sifr_svg/cmd/sc_linenumberingdialog.svg                        |    2 
 icon-themes/sifr_svg/cmd/sc_movedown.svg                                   |    2 
 icon-themes/sifr_svg/cmd/sc_movedownsubitems.svg                           |    2 
 icon-themes/sifr_svg/cmd/sc_moveup.svg                                     |    2 
 icon-themes/sifr_svg/cmd/sc_moveupsubitems.svg                             |    2 
 icon-themes/sifr_svg/res/base128.svg                                       |    1 
 icon-themes/sifr_svg/res/calc128.svg                                       |    1 
 icon-themes/sifr_svg/res/draw128.svg                                       |    1 
 icon-themes/sifr_svg/res/impress128.svg                                    |    1 
 icon-themes/sifr_svg/res/main128.svg                                       |    1 
 icon-themes/sifr_svg/res/mainapp_48_8.svg                                  |    1 
 icon-themes/sifr_svg/res/math128.svg                                       |    1 
 icon-themes/sifr_svg/res/odb_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/odf_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/odg_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/odm_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/odp_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/ods_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/odt_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/otf_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/otg_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/otp_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/ots_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/ott_48_8.svg                                      |    1 
 icon-themes/sifr_svg/res/writer128.svg                                     |    1 
 include/filter/msfilter/ww8fields.hxx                                      |  130 
 include/sfx2/strings.hrc                                                   |    4 
 include/svl/zforlist.hxx                                                   |   13 
 include/svx/ctredlin.hxx                                                   |    1 
 include/vcl/filter/PDFiumLibrary.hxx                                       |   91 
 include/vcl/filter/pdfdocument.hxx                                         |    2 
 include/vcl/vclenum.hxx                                                    |    3 
 include/xmloff/txtparae.hxx                                                |    2 
 nlpsolver/src/com/sun/star/comp/Calc/NLPSolver/BaseEvolutionarySolver.java |    4 
 nlpsolver/src/com/sun/star/comp/Calc/NLPSolver/DEPSSolverImpl.java         |    4 
 nlpsolver/src/com/sun/star/comp/Calc/NLPSolver/SCOSolverImpl.java          |    5 
 readlicense_oo/license/CREDITS.fodt                                        | 4044 +++++-----
 sc/inc/clipparam.hxx                                                       |    2 
 sc/inc/dbdata.hxx                                                          |    4 
 sc/inc/document.hxx                                                        |    8 
 sc/inc/mtvelements.hxx                                                     |    1 
 sc/inc/recursionhelper.hxx                                                 |   10 
 sc/qa/unit/data/ods/tdf95640.ods                                           |binary
 sc/qa/unit/data/ods/tdf95640_standard_list.ods                             |binary
 sc/qa/unit/data/ods/validation-copypaste.ods                               |binary
 sc/qa/unit/data/xlsx/tdf95640.xlsx                                         |binary
 sc/qa/unit/parallelism.cxx                                                 |   54 
 sc/qa/unit/subsequent_export-test.cxx                                      |  102 
 sc/source/core/data/column4.cxx                                            |    2 
 sc/source/core/data/formulacell.cxx                                        |   15 
 sc/source/core/data/mtvelements.cxx                                        |    5 
 sc/source/core/data/table2.cxx                                             |    2 
 sc/source/core/data/table3.cxx                                             |    6 
 sc/source/core/tool/compiler.cxx                                           |   31 
 sc/source/core/tool/interpr2.cxx                                           |    2 
 sc/source/core/tool/recursionhelper.cxx                                    |   18 
 sc/source/core/tool/scmatrix.cxx                                           |    2 
 sc/source/filter/excel/excrecds.cxx                                        |   64 
 sc/source/filter/inc/autofilterbuffer.hxx                                  |   30 
 sc/source/filter/inc/autofiltercontext.hxx                                 |   39 
 sc/source/filter/inc/excrecds.hxx                                          |    3 
 sc/source/filter/oox/autofilterbuffer.cxx                                  |  116 
 sc/source/filter/oox/autofiltercontext.cxx                                 |   68 
 sc/source/filter/oox/tablebuffer.cxx                                       |    2 
 sc/source/filter/xcl97/xcl97rec.cxx                                        |    2 
 sc/source/ui/dbgui/csvruler.cxx                                            |   36 
 sc/source/ui/dialogs/searchresults.cxx                                     |    4 
 sc/source/ui/inc/csvruler.hxx                                              |    7 
 sc/source/ui/miscdlgs/acredlin.cxx                                         |    7 
 sc/source/ui/view/prevwsh.cxx                                              |   19 
 sccomp/source/solver/SwarmSolver.cxx                                       |    2 
 sd/source/ui/dlg/animobjs.cxx                                              |    2 
 sd/uiconfig/simpress/ui/clientboxfragment.ui                               |    2 
 sfx2/inc/SfxRedactionHelper.hxx                                            |    2 
 sfx2/uiconfig/ui/autoredactdialog.ui                                       |   42 
 solenv/flatpak-manifest.in                                                 |    8 
 svl/source/numbers/zforfind.cxx                                            |   39 
 svl/source/numbers/zforfind.hxx                                            |    8 
 svl/source/numbers/zforlist.cxx                                            |    5 
 svl/source/numbers/zformat.cxx                                             |    2 
 svx/source/dialog/ctredlin.cxx                                             |    4 
 svx/source/svdraw/svdpdf.cxx                                               |   35 
 svx/source/svdraw/svdpdf.hxx                                               |    4 
 svx/source/xoutdev/_xoutbmp.cxx                                            |    5 
 sw/CppunitTest_sw_ooxmlexport4.mk                                          |    4 
 sw/PythonTest_sw_python.mk                                                 |    1 
 sw/inc/IDocumentSettingAccess.hxx                                          |    3 
 sw/inc/node.hxx                                                            |    2 
 sw/inc/textboxhelper.hxx                                                   |    5 
 sw/inc/undobj.hxx                                                          |    5 
 sw/qa/core/txtnode/data/textbox-node-split.docx                            |binary
 sw/qa/core/txtnode/txtnode.cxx                                             |   12 
 sw/qa/core/unocore/unocore.cxx                                             |   22 
 sw/qa/extras/layout/data/no-line-break-at-slash.fodt                       |   50 
 sw/qa/extras/layout/data/tdf128198-1.docx                                  |binary
 sw/qa/extras/layout/data/tdf132956.docx                                    |binary
 sw/qa/extras/layout/data/tdf134472.odt                                     |binary
 sw/qa/extras/layout/data/tdf134548.odt                                     |binary
 sw/qa/extras/layout/layout.cxx                                             |  108 
 sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt         |binary
 sw/qa/extras/odfexport/odfexport.cxx                                       |   17 
 sw/qa/extras/ooxmlexport/data/128197_compat14.docx                         |binary
 sw/qa/extras/ooxmlexport/data/128197_compat15.docx                         |binary
 sw/qa/extras/ooxmlexport/data/tdf131801.docx                               |binary
 sw/qa/extras/ooxmlexport/data/tdf135973.odt                                |binary
 sw/qa/extras/ooxmlexport/data/tdf83309.docx                                |binary
 sw/qa/extras/ooxmlexport/ooxmlexport13.cxx                                 |    2 
 sw/qa/extras/ooxmlexport/ooxmlexport14.cxx                                 |   27 
 sw/qa/extras/ooxmlexport/ooxmlexport15.cxx                                 |   74 
 sw/qa/extras/ooxmlexport/ooxmlexport4.cxx                                  |   96 
 sw/qa/extras/ooxmlexport/ooxmlexport8.cxx                                  |    3 
 sw/qa/extras/ooxmlimport/ooxmlimport2.cxx                                  |    6 
 sw/qa/extras/rtfexport/data/tdf133437.rtf                                  |  571 +
 sw/qa/extras/rtfexport/rtfexport5.cxx                                      |   39 
 sw/qa/extras/rtfimport/data/picture-in-textframe.rtf                       |   29 
 sw/qa/extras/rtfimport/rtfimport.cxx                                       |   16 
 sw/qa/extras/uiwriter/data/tdf132160.odt                                   |binary
 sw/qa/extras/uiwriter/data/tdf132944.odt                                   |binary
 sw/qa/extras/uiwriter/data/tdf133967.odt                                   |binary
 sw/qa/extras/uiwriter/data/tdf134250.fodt                                  |   86 
 sw/qa/extras/uiwriter/data/tdf134252.fodt                                  |   95 
 sw/qa/extras/uiwriter/data/tdf134436.fodt                                  |   83 
 sw/qa/extras/uiwriter/uiwriter.cxx                                         |  274 
 sw/qa/python/check_drawpage.py                                             |   44 
 sw/source/core/attr/swatrset.cxx                                           |   10 
 sw/source/core/doc/DocumentContentOperationsManager.cxx                    |   49 
 sw/source/core/doc/DocumentLayoutManager.cxx                               |    9 
 sw/source/core/doc/DocumentRedlineManager.cxx                              |  270 
 sw/source/core/doc/DocumentSettingManager.cxx                              |    7 
 sw/source/core/doc/docdesc.cxx                                             |    8 
 sw/source/core/doc/docfmt.cxx                                              |    2 
 sw/source/core/doc/textboxhelper.cxx                                       |   16 
 sw/source/core/docnode/ndsect.cxx                                          |    4 
 sw/source/core/docnode/ndtbl.cxx                                           |    9 
 sw/source/core/docnode/nodes.cxx                                           |    7 
 sw/source/core/draw/dcontact.cxx                                           |    3 
 sw/source/core/edit/edfcol.cxx                                             |    6 
 sw/source/core/inc/DocumentSettingManager.hxx                              |    1 
 sw/source/core/inc/UndoDelete.hxx                                          |    2 
 sw/source/core/layout/flowfrm.cxx                                          |    5 
 sw/source/core/layout/frmtool.cxx                                          |   27 
 sw/source/core/layout/tabfrm.cxx                                           |    1 
 sw/source/core/layout/trvlfrm.cxx                                          |   61 
 sw/source/core/text/itrform2.cxx                                           |   13 
 sw/source/core/text/txtfld.cxx                                             |   30 
 sw/source/core/text/txtfrm.cxx                                             |    5 
 sw/source/core/text/txttab.cxx                                             |    5 
 sw/source/core/txtnode/atrfld.cxx                                          |    2 
 sw/source/core/txtnode/atrflyin.cxx                                        |   17 
 sw/source/core/txtnode/ndtxt.cxx                                           |   14 
 sw/source/core/undo/undel.cxx                                              |   48 
 sw/source/core/undo/undobj.cxx                                             |   16 
 sw/source/core/undo/undobj1.cxx                                            |    1 
 sw/source/core/undo/untblk.cxx                                             |   41 
 sw/source/core/unocore/unodraw.cxx                                         |   26 
 sw/source/core/unocore/unoframe.cxx                                        |    9 
 sw/source/core/unocore/unoobj.cxx                                          |   11 
 sw/source/filter/basflt/shellio.cxx                                        |    1 
 sw/source/filter/html/htmlflywriter.cxx                                    |    2 
 sw/source/filter/ww8/docxattributeoutput.cxx                               |   10 
 sw/source/filter/ww8/fields.hxx                                            |  107 
 sw/source/filter/ww8/wrtw8nds.cxx                                          |   27 
 sw/source/filter/ww8/wrtw8num.cxx                                          |   30 
 sw/source/filter/ww8/wrtww8.hxx                                            |    3 
 sw/source/filter/ww8/ww8atr.cxx                                            |  166 
 sw/source/filter/ww8/ww8par.cxx                                            |   10 
 sw/source/filter/ww8/ww8par2.cxx                                           |    3 
 sw/source/filter/ww8/ww8par5.cxx                                           |    2 
 sw/source/filter/ww8/ww8scan.cxx                                           |    2 
 sw/source/filter/xml/xmltble.cxx                                           |    9 
 sw/source/filter/xml/xmltexte.hxx                                          |    6 
 sw/source/ui/misc/bookmark.cxx                                             |    4 
 sw/source/uibase/lingu/olmenu.cxx                                          |    3 
 sw/source/uibase/misc/redlndlg.cxx                                         |    4 
 sw/source/uibase/shells/textsh1.cxx                                        |    9 
 sw/source/uibase/uno/SwXDocumentSettings.cxx                               |   13 
 sw/source/uibase/uno/unotxdoc.cxx                                          |    4 
 translations                                                               |    2 
 vcl/Library_vcl.mk                                                         |    1 
 vcl/inc/qt5/Qt5AccessibleWidget.hxx                                        |    4 
 vcl/qa/cppunit/pdfexport/pdfexport.cxx                                     |   31 
 vcl/qt5/Qt5AccessibleWidget.cxx                                            |    9 
 vcl/qt5/Qt5Frame.cxx                                                       |    3 
 vcl/source/control/tabctrl.cxx                                             |   14 
 vcl/source/filter/ipdf/pdfdocument.cxx                                     |   13 
 vcl/source/filter/ipdf/pdfread.cxx                                         |   26 
 vcl/source/pdf/PDFiumLibrary.cxx                                           |   92 
 vcl/source/window/layout.cxx                                               |    9 
 vcl/source/window/printdlg.cxx                                             |   24 
 vcl/source/window/toolbox.cxx                                              |   55 
 vcl/uiconfig/ui/wizard.ui                                                  |    2 
 vcl/unx/generic/fontmanager/fontconfig.cxx                                 |    2 
 vcl/unx/gtk3/gtk3gtkinst.cxx                                               |    3 
 writerfilter/source/dmapper/DomainMapper_Impl.cxx                          |  116 
 writerfilter/source/dmapper/NumberingManager.cxx                           |    2 
 writerfilter/source/dmapper/SdtHelper.cxx                                  |    9 
 writerfilter/source/dmapper/SettingsTable.cxx                              |    8 
 writerfilter/source/rtftok/rtfsdrimport.cxx                                |    5 
 xmloff/CppunitTest_xmloff_text.mk                                          |   44 
 xmloff/Module_xmloff.mk                                                    |    1 
 xmloff/qa/unit/data/mail-merge-editeng.odt                                 |binary
 xmloff/qa/unit/text.cxx                                                    |   61 
 xmloff/source/text/txtparae.cxx                                            |    4 
 xmloff/source/text/txtvfldi.cxx                                            |   40 
 xmlsecurity/Library_xmlsecurity.mk                                         |    5 
 xmlsecurity/inc/pdfio/pdfdocument.hxx                                      |    6 
 xmlsecurity/qa/unit/pdfsigning/data/partial-in-between.pdf                 |binary
 xmlsecurity/qa/unit/pdfsigning/pdfsigning.cxx                              |   17 
 xmlsecurity/qa/unit/signing/data/hide-and-replace-shadow-file-signed-2.pdf |binary
 xmlsecurity/qa/unit/signing/signing.cxx                                    |   16 
 xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx                     |   26 
 xmlsecurity/source/helper/pdfsignaturehelper.cxx                           |    3 
 xmlsecurity/source/pdfio/pdfdocument.cxx                                   |  209 
 xmlsecurity/uiconfig/ui/digitalsignaturesdialog.ui                         |    4 
 xmlsecurity/workben/pdfverify.cxx                                          |   11 
 1055 files changed, 7340 insertions(+), 3455 deletions(-)

New commits:
commit 97ebce2051a374be5e5dd908d40c69b21e12f61b
Merge: 1d8c0009f61e 60e0c6fd03ac
Author:     Michael Weghorn <m.weghorn at posteo.de>
AuthorDate: Fri Sep 11 10:00:08 2020 +0200
Commit:     Michael Weghorn <m.weghorn at posteo.de>
CommitDate: Fri Sep 11 10:00:08 2020 +0200

    Merge branch 'libreoffice-6-4'
    
    into distro/lhm/libreoffice-6-4+backports
    
    Change-Id: Ib3030257fb7c4eec5b910c0b49332be0dd8fa854

diff --cc sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
index d77018c57a92,c39c7d747b83..54bfa2888050
--- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
@@@ -771,9 -822,10 +822,10 @@@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(tes
      xmlDocPtr pXmlDoc = parseExport("word/document.xml");
      if (!pXmlDoc)
          return;
+ 
      assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtPr/w:dropDownList/w:listItem[1]", "value", "manolo");
      assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtPr/w:dropDownList/w:listItem[2]", "value", "pepito");
 -    assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtContent/w:r/w:t", "Manolo");
 +    assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtContent/w:r/w:t", "manolo");
  
      uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
      uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
commit 60e0c6fd03ac26df00877efea65537828e43583c
Author:     Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Fri Sep 4 17:17:48 2020 +0200
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Sep 10 20:54:16 2020 +0200

    xmlsecurity: pdf incremental updates that are non-commenting are invalid
    
    I.e. it's OK to add incremental updates for annotation/commenting
    purposes and that doesn't invalite existing signatures. Everything else
    does.
    
    (cherry picked from commit 61834cd574568613f0b0a2ee099a60fa5a8d9804)
    
    [ Also disable a pdfium assert on Windows, only on this branch, where it
    fails during CppunitTest_xmlsecurity_pdfsigning for reasons unclear to
    me. ]
    
    Conflicts:
            include/vcl/filter/PDFiumLibrary.hxx
            vcl/source/pdf/PDFiumLibrary.cxx
    
    Change-Id: I4607c242b3c6f6b01517b02407e9e7a095e2e069
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102325
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/external/pdfium/build.patch.1 b/external/pdfium/build.patch.1
index 16544f0c7c81..b19fa1174419 100644
--- a/external/pdfium/build.patch.1
+++ b/external/pdfium/build.patch.1
@@ -37,3 +37,18 @@ index 0fb627ba8..dda1fc8bc 100644
        : span(container.data(), container.size()) {}
    template <
        typename Container,
+--- a/core/fxge/dib/cfx_cmyk_to_srgb.cpp	2020-09-10 17:32:37.165872018 +0200
++++ b/core/fxge/dib/cfx_cmyk_to_srgb.cpp	2020-09-10 17:33:15.870395738 +0200
+@@ -1740,10 +1740,12 @@
+   uint8_t y1 = static_cast<int>(y * 255.f + rounding_offset);
+   uint8_t k1 = static_cast<int>(k * 255.f + rounding_offset);
+ 
++#ifndef _WIN32
+   ASSERT(c1 == FXSYS_roundf(c * 255));
+   ASSERT(m1 == FXSYS_roundf(m * 255));
+   ASSERT(y1 == FXSYS_roundf(y * 255));
+   ASSERT(k1 == FXSYS_roundf(k * 255));
++#endif
+ 
+   uint8_t r;
+   uint8_t g;
diff --git a/include/vcl/filter/PDFiumLibrary.hxx b/include/vcl/filter/PDFiumLibrary.hxx
index bc7912c17e81..639c71d61a3d 100644
--- a/include/vcl/filter/PDFiumLibrary.hxx
+++ b/include/vcl/filter/PDFiumLibrary.hxx
@@ -17,9 +17,14 @@
 #include <memory>
 #include <rtl/instance.hxx>
 #include <vcl/dllapi.h>
+#include <vcl/checksum.hxx>
+
+#include <fpdf_doc.h>
 
 namespace vcl::pdf
 {
+class PDFiumDocument;
+
 class VCL_DLLPUBLIC PDFium final
 {
 private:
@@ -31,6 +36,49 @@ public:
     ~PDFium();
 };
 
+class VCL_DLLPUBLIC PDFiumPage final
+{
+private:
+    FPDF_PAGE mpPage;
+
+private:
+    PDFiumPage(const PDFiumPage&) = delete;
+    PDFiumPage& operator=(const PDFiumPage&) = delete;
+
+public:
+    PDFiumPage(FPDF_PAGE pPage)
+        : mpPage(pPage)
+    {
+    }
+
+    ~PDFiumPage()
+    {
+        if (mpPage)
+            FPDF_ClosePage(mpPage);
+    }
+
+    /// Get bitmap checksum of the page, without annotations/commenting.
+    BitmapChecksum getChecksum();
+};
+
+class VCL_DLLPUBLIC PDFiumDocument final
+{
+private:
+    FPDF_DOCUMENT mpPdfDocument;
+
+private:
+    PDFiumDocument(const PDFiumDocument&) = delete;
+    PDFiumDocument& operator=(const PDFiumDocument&) = delete;
+
+public:
+    PDFiumDocument(FPDF_DOCUMENT pPdfDocument);
+    ~PDFiumDocument();
+
+    int getPageCount();
+
+    std::unique_ptr<PDFiumPage> openPage(int nIndex);
+};
+
 struct PDFiumLibrary : public rtl::StaticWithInit<std::shared_ptr<PDFium>, PDFiumLibrary>
 {
     std::shared_ptr<PDFium> operator()() { return std::make_shared<PDFium>(); }
diff --git a/vcl/source/pdf/PDFiumLibrary.cxx b/vcl/source/pdf/PDFiumLibrary.cxx
index 604807524bf9..861b7dda0acb 100644
--- a/vcl/source/pdf/PDFiumLibrary.cxx
+++ b/vcl/source/pdf/PDFiumLibrary.cxx
@@ -15,6 +15,10 @@
 #include <vcl/filter/PDFiumLibrary.hxx>
 #include <fpdf_doc.h>
 
+#include <vcl/bitmap.hxx>
+
+#include <bitmapwriteaccess.hxx>
+
 namespace vcl::pdf
 {
 PDFium::PDFium()
@@ -29,6 +33,58 @@ PDFium::PDFium()
 
 PDFium::~PDFium() { FPDF_DestroyLibrary(); }
 
+PDFiumDocument::PDFiumDocument(FPDF_DOCUMENT pPdfDocument)
+    : mpPdfDocument(pPdfDocument)
+{
+}
+
+PDFiumDocument::~PDFiumDocument()
+{
+    if (mpPdfDocument)
+        FPDF_CloseDocument(mpPdfDocument);
+}
+
+std::unique_ptr<PDFiumPage> PDFiumDocument::openPage(int nIndex)
+{
+    std::unique_ptr<PDFiumPage> pPDFiumPage;
+    FPDF_PAGE pPage = FPDF_LoadPage(mpPdfDocument, nIndex);
+    if (pPage)
+    {
+        pPDFiumPage = std::make_unique<PDFiumPage>(pPage);
+    }
+    return pPDFiumPage;
+}
+
+int PDFiumDocument::getPageCount() { return FPDF_GetPageCount(mpPdfDocument); }
+
+BitmapChecksum PDFiumPage::getChecksum()
+{
+    size_t nPageWidth = FPDF_GetPageWidth(mpPage);
+    size_t nPageHeight = FPDF_GetPageHeight(mpPage);
+    FPDF_BITMAP pPdfBitmap = FPDFBitmap_Create(nPageWidth, nPageHeight, /*alpha=*/1);
+    if (!pPdfBitmap)
+    {
+        return 0;
+    }
+
+    // Intentionally not using FPDF_ANNOT here, annotations/commenting is OK to not affect the
+    // checksum, signature verification wants this.
+    FPDF_RenderPageBitmap(pPdfBitmap, mpPage, /*start_x=*/0, /*start_y=*/0, nPageWidth, nPageHeight,
+                          /*rotate=*/0, /*flags=*/0);
+    Bitmap aBitmap(Size(nPageWidth, nPageHeight), 24);
+    {
+        BitmapScopedWriteAccess pWriteAccess(aBitmap);
+        const auto pPdfBuffer = static_cast<ConstScanline>(FPDFBitmap_GetBuffer(pPdfBitmap));
+        const int nStride = FPDFBitmap_GetStride(pPdfBitmap);
+        for (size_t nRow = 0; nRow < nPageHeight; ++nRow)
+        {
+            ConstScanline pPdfLine = pPdfBuffer + (nStride * nRow);
+            pWriteAccess->CopyScanline(nRow, pPdfLine, ScanlineFormat::N32BitTcBgra, nStride);
+        }
+    }
+    return aBitmap.GetChecksum();
+}
+
 } // end vcl::pdf
 
 #endif // HAVE_FEATURE_PDFIUM
diff --git a/xmlsecurity/Library_xmlsecurity.mk b/xmlsecurity/Library_xmlsecurity.mk
index 038276c1725b..823332d3ec64 100644
--- a/xmlsecurity/Library_xmlsecurity.mk
+++ b/xmlsecurity/Library_xmlsecurity.mk
@@ -20,7 +20,10 @@ $(eval $(call gb_Library_add_defs,xmlsecurity,\
     -DXMLSECURITY_DLLIMPLEMENTATION \
 ))
 
-$(eval $(call gb_Library_use_externals,xmlsecurity,boost_headers))
+$(eval $(call gb_Library_use_externals,xmlsecurity,\
+	boost_headers \
+	$(if $(filter PDFIUM,$(BUILD_TYPE)),pdfium) \
+))
 
 $(eval $(call gb_Library_set_precompiled_header,xmlsecurity,xmlsecurity/inc/pch/precompiled_xmlsecurity))
 
diff --git a/xmlsecurity/qa/unit/signing/data/hide-and-replace-shadow-file-signed-2.pdf b/xmlsecurity/qa/unit/signing/data/hide-and-replace-shadow-file-signed-2.pdf
new file mode 100644
index 000000000000..f2b1a71096b2
Binary files /dev/null and b/xmlsecurity/qa/unit/signing/data/hide-and-replace-shadow-file-signed-2.pdf differ
diff --git a/xmlsecurity/qa/unit/signing/signing.cxx b/xmlsecurity/qa/unit/signing/signing.cxx
index f2039b609e7e..df8ff85258b3 100644
--- a/xmlsecurity/qa/unit/signing/signing.cxx
+++ b/xmlsecurity/qa/unit/signing/signing.cxx
@@ -617,6 +617,22 @@ CPPUNIT_TEST_FIXTURE(SigningTest, testPDFBad)
                          static_cast<int>(pObjectShell->GetDocumentSignatureState()));
 }
 
+CPPUNIT_TEST_FIXTURE(SigningTest, testPDFHideAndReplace)
+{
+    createDoc(m_directories.getURLFromSrc(DATA_DIRECTORY)
+              + "hide-and-replace-shadow-file-signed-2.pdf");
+    SfxBaseModel* pBaseModel = dynamic_cast<SfxBaseModel*>(mxComponent.get());
+    CPPUNIT_ASSERT(pBaseModel);
+    SfxObjectShell* pObjectShell = pBaseModel->GetObjectShell();
+    CPPUNIT_ASSERT(pObjectShell);
+    // Without the accompanying fix in place, this test would have failed with:
+    // - Expected: 2 (BROKEN)
+    // - Actual  : 6 (NOTVALIDATED_PARTIAL_OK)
+    // i.e. a non-commenting update after a signature was not marked as invalid.
+    CPPUNIT_ASSERT_EQUAL(static_cast<int>(SignatureState::BROKEN),
+                         static_cast<int>(pObjectShell->GetDocumentSignatureState()));
+}
+
 /// Test a typical PDF which is not signed.
 CPPUNIT_TEST_FIXTURE(SigningTest, testPDFNo)
 {
diff --git a/xmlsecurity/source/pdfio/pdfdocument.cxx b/xmlsecurity/source/pdfio/pdfdocument.cxx
index 7cf2c137c1c4..557180071a2c 100644
--- a/xmlsecurity/source/pdfio/pdfdocument.cxx
+++ b/xmlsecurity/source/pdfio/pdfdocument.cxx
@@ -12,6 +12,9 @@
 #include <memory>
 #include <vector>
 
+#include <config_features.h>
+
+#include <vcl/filter/PDFiumLibrary.hxx>
 #include <rtl/string.hxx>
 #include <rtl/ustrbuf.hxx>
 #include <sal/log.hxx>
@@ -20,6 +23,7 @@
 #include <svl/sigstruct.hxx>
 #include <svl/cryptosign.hxx>
 #include <vcl/filter/pdfdocument.hxx>
+#include <vcl/bitmap.hxx>
 
 using namespace com::sun::star;
 
@@ -133,6 +137,66 @@ bool IsCompleteSignature(SvStream& rStream, vcl::filter::PDFDocument& rDocument,
     size_t nFileEnd = rStream.Tell();
     return std::find(rAllEOFs.begin(), rAllEOFs.end(), nFileEnd) != rAllEOFs.end();
 }
+
+/// Collects the checksum of each page of one version of the PDF.
+void AnalyizeSignatureStream(SvMemoryStream& rStream, std::vector<BitmapChecksum>& rPageChecksums)
+{
+#if HAVE_FEATURE_PDFIUM
+    auto pPdfium = vcl::pdf::PDFiumLibrary::get();
+    vcl::pdf::PDFiumDocument aPdfDocument(
+        FPDF_LoadMemDocument(rStream.GetData(), rStream.GetSize(), /*password=*/nullptr));
+
+    int nPageCount = aPdfDocument.getPageCount();
+    for (int nPage = 0; nPage < nPageCount; ++nPage)
+    {
+        std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage(aPdfDocument.openPage(nPage));
+        if (!pPdfPage)
+        {
+            return;
+        }
+
+        BitmapChecksum nPageChecksum = pPdfPage->getChecksum();
+        rPageChecksums.push_back(nPageChecksum);
+    }
+#else
+    (void)rStream;
+#endif
+}
+
+/**
+ * Checks if incremental updates after singing performed valid modifications only.
+ * Annotations/commenting is OK, other changes are not.
+ */
+bool IsValidSignature(SvStream& rStream, vcl::filter::PDFObjectElement* pSignature)
+{
+    size_t nSignatureEOF = 0;
+    if (!GetEOFOfSignature(pSignature, nSignatureEOF))
+    {
+        return false;
+    }
+
+    SvMemoryStream aSignatureStream;
+    sal_uInt64 nPos = rStream.Tell();
+    rStream.Seek(0);
+    aSignatureStream.WriteStream(rStream, nSignatureEOF);
+    rStream.Seek(nPos);
+    aSignatureStream.Seek(0);
+    std::vector<BitmapChecksum> aSignedPages;
+    AnalyizeSignatureStream(aSignatureStream, aSignedPages);
+
+    SvMemoryStream aFullStream;
+    nPos = rStream.Tell();
+    rStream.Seek(0);
+    aFullStream.WriteStream(rStream);
+    rStream.Seek(nPos);
+    aFullStream.Seek(0);
+    std::vector<BitmapChecksum> aAllPages;
+    AnalyizeSignatureStream(aFullStream, aAllPages);
+
+    // Fail if any page looks different after signing and at the end. Annotations/commenting doesn't
+    // count, though.
+    return aSignedPages == aAllPages;
+}
 }
 
 namespace xmlsecurity
@@ -247,6 +311,11 @@ bool ValidateSignature(SvStream& rStream, vcl::filter::PDFObjectElement* pSignat
         return false;
     }
     rInformation.bPartialDocumentSignature = !IsCompleteSignature(rStream, rDocument, pSignature);
+    if (!IsValidSignature(rStream, pSignature))
+    {
+        SAL_WARN("xmlsecurity.pdfio", "ValidateSignature: invalid incremental update detected");
+        return false;
+    }
 
     // At this point there is no obviously missing info to validate the
     // signature.
diff --git a/xmlsecurity/workben/pdfverify.cxx b/xmlsecurity/workben/pdfverify.cxx
index 3076d1c47a43..b5052502573f 100644
--- a/xmlsecurity/workben/pdfverify.cxx
+++ b/xmlsecurity/workben/pdfverify.cxx
@@ -23,6 +23,7 @@
 #include <vcl/svapp.hxx>
 #include <vcl/graphicfilter.hxx>
 #include <vcl/filter/pdfdocument.hxx>
+#include <comphelper/scopeguard.hxx>
 
 #include <pdfio/pdfdocument.hxx>
 
@@ -80,11 +81,11 @@ int pdfVerify(int nArgc, char** pArgv)
                                                                     uno::UNO_QUERY);
     comphelper::setProcessServiceFactory(xMultiServiceFactory);
 
+    InitVCL();
+    comphelper::ScopeGuard g([] { DeInitVCL(); });
     if (nArgc > 3 && OString(pArgv[3]) == "-p")
     {
-        InitVCL();
         generatePreview(pArgv[1], pArgv[2]);
-        DeInitVCL();
         return 0;
     }
 
commit 434d611e22c4fe76a11d2de26b9f185bb04e5ad3
Author:     Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Tue Jan 14 21:34:52 2020 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Sep 10 16:23:56 2020 +0200

    external: update pdfium from 3963 to 4137
    
    This is a combination of 6 commits, which brings pdfium to the same
    version as libreoffice-7-0.
    
    This is the 1st commit message:
    
    external: update pdfium to 4021
    
    (cherry picked from commit 1cb70721ba00dd6c6958f0a10e39aa5c1866ec96)
    
    This is the commit message #2:
    
    external/pdfium: C++20 comparison operator fix
    
    Missing const leads to overload resolution ambiguity when a synthesized
    candidate of operator == for a reversed-argument rewrite conflicts with the
    actual operator ==, due to the asymmetric const-ness of the implicit object
    parameter and the RHS parameter:
    
    > In file included from workdir/UnpackedTarball/pdfium/core/fxge/cfx_font.cpp:7:
    > In file included from workdir/UnpackedTarball/pdfium/core/fxge/cfx_font.h:11:
    > llvm/inst/include/c++/v1/vector:1369:27: error: use of overloaded operator '!=' is ambiguous (with operand types 'std::__1::__vector_base<unsigned char, FxAllocAllocator<unsigned char> >::allocator_type' (aka 'FxAllocAllocator<unsigned char>') and 'std::__1::__vector_base<unsigned char, FxAllocAllocator<unsigned char> >::allocator_type')
    >     if (__base::__alloc() != __c.__alloc())
    >         ~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~
    > llvm/inst/include/c++/v1/vector:1359:5: note: in instantiation of member function 'std::__1::vector<unsigned char, FxAllocAllocator<unsigned char> >::__move_assign' requested here
    >     __move_assign(__x, integral_constant<bool,
    >     ^
    > workdir/UnpackedTarball/pdfium/core/fxge/cfx_font.cpp:384:24: note: in instantiation of member function 'std::__1::vector<unsigned char, FxAllocAllocator<unsigned char> >::operator=' requested here
    >   m_FontDataAllocation = std::vector<uint8_t, FxAllocAllocator<uint8_t>>(
    >                        ^
    > workdir/UnpackedTarball/pdfium/core/fxcrt/fx_memory_wrappers.h:74:8: note: candidate function
    >   bool operator!=(const FxAllocAllocator& that) { return false; }
    >        ^
    > workdir/UnpackedTarball/pdfium/core/fxcrt/fx_memory_wrappers.h:73:8: note: candidate function
    >   bool operator==(const FxAllocAllocator& that) { return true; }
    >        ^
    > workdir/UnpackedTarball/pdfium/core/fxcrt/fx_memory_wrappers.h:73:8: note: candidate function (with reversed parameter order)
    
    (cherry picked from commit 6e0461d576d9f386e458f98f3c57f0ba385aacb4)
    
    This is the commit message #3:
    
    pdfium: don't patch out the COMPONENT_BUILD check, define it
    
    So next time we update, no need to adapt a failing patch.
    
    (cherry picked from commit 9b4ab9bda41a818832c721933986c9c6e07a6e6c)
    
    This is the commit message #4:
    
    make update_pch also consider files in <module>/src/**/inc
    
    With --enable-pch=full there's not much difference between a "public"
    header in <module>/inc and a private one in <module>/src/somewhere/inc .
    And since the script searches recursively, this apparently helps to
    find even more headers for lower pch levels.
    
    [ Just the pdfium part. ]
    
    (cherry picked from commit 69e0d871ec1de2260f9213d3113464155eac173c)
    
    Change-Id: I8483d0aa5b4fea5a59107c20a8aa5f1ef694af0a
    
    This is the commit message #5:
    
    external: update pdfium to 4083
    
    (cherry picked from commit 9054c36d4ea3bee25fb9a47a96a0ea2cd07148c3)
    
    This is the commit message #6:
    
    external: update pdfium to 4137
    
    (cherry picked from commit 1ffe59ef31186e36ad0aa7bbcdd32e407ee8d26c)
    
    Change-Id: Ib7c12461e04fa97bf55ee967e8d6c9bcf92fdf4a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102373
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index f6003fc22aba..8748d8f2f714 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -4136,6 +4136,7 @@ ifneq ($(ENABLE_PDFIUM),)
 define gb_LinkTarget__use_pdfium
 $(call gb_LinkTarget_set_include,$(1),\
        -I$(call gb_UnpackedTarball_get_dir,pdfium)/public \
+       -DCOMPONENT_BUILD \
        $$(INCLUDE) \
 )
 $(call gb_LinkTarget_use_libraries,$(1),pdfium)
diff --git a/download.lst b/download.lst
index 040d0f580235..856885cde73f 100644
--- a/download.lst
+++ b/download.lst
@@ -202,8 +202,8 @@ export OWNCLOUD_ANDROID_LIB_SHA256SUM := b18b3e3ef7fae6a79b62f2bb43cc47a5346b633
 export OWNCLOUD_ANDROID_LIB_TARBALL := owncloud-android-library-0.9.4-no-binary-deps.tar.gz
 export PAGEMAKER_SHA256SUM := 66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d
 export PAGEMAKER_TARBALL := libpagemaker-0.0.4.tar.xz
-export PDFIUM_SHA256SUM := 80d4d6bd8faec226936fcde5521c6e92c0c645126ac3ae72dd2c160ca1749895
-export PDFIUM_TARBALL := pdfium-3963.tar.bz2
+export PDFIUM_SHA256SUM := 9a2f9bddca935a263f06c81003483473a525ccd0f4e517bc75fceb914d4c54b6
+export PDFIUM_TARBALL := pdfium-4137.tar.bz2
 export PIXMAN_SHA256SUM := 21b6b249b51c6800dc9553b65106e1e37d0e25df942c90531d4c3997aa20a88e
 export PIXMAN_TARBALL := e80ebae4da01e77f68744319f01d52a3-pixman-0.34.0.tar.gz
 export LIBPNG_SHA256SUM := 505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca
diff --git a/external/pdfium/Library_pdfium.mk b/external/pdfium/Library_pdfium.mk
index f98a2d11269b..25bbfa195af1 100644
--- a/external/pdfium/Library_pdfium.mk
+++ b/external/pdfium/Library_pdfium.mk
@@ -31,6 +31,7 @@ $(eval $(call gb_Library_add_defs,pdfium,\
     -DMEMORY_TOOL_REPLACES_ALLOCATOR \
     -DUNICODE \
     -DWIN32_LEAN_AND_MEAN \
+    -DCOMPONENT_BUILD \
 ))
 
 $(eval $(call gb_Library_set_generated_cxx_suffix,pdfium,cpp))
@@ -74,6 +75,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/fpdfsdk/fpdf_view \
     UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_pauseadapter \
     UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_interactiveform \
+    UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_renderpage \
 ))
 
 # fdrm
@@ -226,7 +228,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fpdfapi/parser/fpdf_parser_utility \
     UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_object_walker \
     UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_read_validator \
-    UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_charposlist \
+    UnpackedTarball/pdfium/core/fpdfapi/render/charposlist \
     UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_devicebuffer \
     UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_docrenderdata \
     UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_imagecacheentry \
@@ -267,7 +269,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_cross_ref_avail \
     UnpackedTarball/pdfium/core/fpdfapi/edit/cpdf_pagecontentmanager \
     UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_transparency \
-    UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_dibbase \
+    UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_dib \
     UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_object_stream \
     UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_cross_ref_table \
     UnpackedTarball/pdfium/core/fpdfapi/edit/cpdf_stringarchivestream \
@@ -275,7 +277,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fpdfapi/edit/cpdf_contentstream_write_utils \
     UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_annotcontext \
     UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_pagerendercontext \
-    UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_dibtransferfunc \
+    UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_transferfuncdib \
     UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_transferfunc \
 ))
 
@@ -284,7 +286,6 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fpdfdoc/cline \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_aaction \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_action \
-    UnpackedTarball/pdfium/core/fpdfdoc/cpdf_actionfields \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_annot \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_annotlist \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_apsettings \
@@ -292,7 +293,6 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_bookmarktree \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_defaultappearance \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_dest \
-    UnpackedTarball/pdfium/core/fpdfdoc/cpdf_docjsactions \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_filespec \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_formcontrol \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_formfield \
@@ -315,6 +315,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_structtree \
     UnpackedTarball/pdfium/core/fpdfdoc/cba_fontmap \
     UnpackedTarball/pdfium/core/fpdfdoc/cpdf_color_utils \
+    UnpackedTarball/pdfium/core/fpdfdoc/cpdf_icon \
 ))
 
 # fpdftext
@@ -413,6 +414,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fxcrt/cfx_utf8encoder \
     UnpackedTarball/pdfium/core/fxcrt/cfx_readonlymemorystream \
     UnpackedTarball/pdfium/core/fxcrt/observed_ptr \
+    UnpackedTarball/pdfium/core/fxcrt/string_data_template \
 ))
 
 # fxge
@@ -421,7 +423,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fxge/dib/cfx_bitmapstorer \
     UnpackedTarball/pdfium/core/fxge/dib/cfx_dibextractor \
     UnpackedTarball/pdfium/core/fxge/dib/cfx_dibitmap \
-    UnpackedTarball/pdfium/core/fxge/dib/cfx_filtereddib \
+    UnpackedTarball/pdfium/core/fxge/cfx_drawutils \
     UnpackedTarball/pdfium/core/fxge/dib/cfx_imagerenderer \
     UnpackedTarball/pdfium/core/fxge/dib/cfx_imagestretcher \
     UnpackedTarball/pdfium/core/fxge/dib/cfx_imagetransformer \
@@ -552,6 +554,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/third_party/base/allocator/partition_allocator/partition_oom \
     UnpackedTarball/pdfium/third_party/base/allocator/partition_allocator/partition_page \
     UnpackedTarball/pdfium/third_party/base/allocator/partition_allocator/partition_root_base \
+    UnpackedTarball/pdfium/third_party/base/allocator/partition_allocator/random \
 ))
 
 # skia_shared
@@ -646,7 +649,7 @@ ifeq ($(OS),MACOSX)
 # fxge
 $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fxge/apple/fx_apple_platform \
-    UnpackedTarball/pdfium/core/fxge/apple/fx_mac_imp \
+    UnpackedTarball/pdfium/core/fxge/apple/fx_mac_impl \
     UnpackedTarball/pdfium/core/fxge/apple/fx_quartz_device \
 ))
 
@@ -663,7 +666,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fxge/android/cfpf_skiafont \
     UnpackedTarball/pdfium/core/fxge/android/cfpf_skiafontmgr \
     UnpackedTarball/pdfium/core/fxge/android/cfx_androidfontinfo \
-    UnpackedTarball/pdfium/core/fxge/android/fx_android_imp \
+    UnpackedTarball/pdfium/core/fxge/android/fx_android_impl \
     UnpackedTarball/pdfium/core/fxge/android/cfpf_skiapathfont \
 ))
 endif
diff --git a/external/pdfium/UnpackedTarball_pdfium.mk b/external/pdfium/UnpackedTarball_pdfium.mk
index 8f493ea3a0d6..93d3fede6e3c 100644
--- a/external/pdfium/UnpackedTarball_pdfium.mk
+++ b/external/pdfium/UnpackedTarball_pdfium.mk
@@ -8,12 +8,12 @@
 #
 
 pdfium_patches :=
-pdfium_patches += visibility.patch.1
 pdfium_patches += ubsan.patch
 # Fixes build on our baseline.
 pdfium_patches += build.patch.1
 # Avoids Windows 8 build dependency.
 pdfium_patches += windows7.patch.1
+pdfium_patches += c++20-comparison.patch
 
 $(eval $(call gb_UnpackedTarball_UnpackedTarball,pdfium))
 
@@ -44,6 +44,7 @@ $(eval $(call gb_UnpackedTarball_set_post_action,pdfium,\
     mv third_party/base/allocator/partition_allocator/partition_oom.cc third_party/base/allocator/partition_allocator/partition_oom.cpp && \
     mv third_party/base/allocator/partition_allocator/partition_page.cc third_party/base/allocator/partition_allocator/partition_page.cpp && \
     mv third_party/base/allocator/partition_allocator/partition_root_base.cc third_party/base/allocator/partition_allocator/partition_root_base.cpp && \
+    mv third_party/base/allocator/partition_allocator/random.cc third_party/base/allocator/partition_allocator/random.cpp && \
     mv third_party/base/win/win_util.cc third_party/base/win/win_util.cpp \
 ))
 
diff --git a/external/pdfium/build.patch.1 b/external/pdfium/build.patch.1
index 47316fe235a1..16544f0c7c81 100644
--- a/external/pdfium/build.patch.1
+++ b/external/pdfium/build.patch.1
@@ -1,24 +1,3 @@
-diff --git a/core/fxge/dib/cfx_imagetransformer.cpp b/core/fxge/dib/cfx_imagetransformer.cpp
-index 8e01127b0..f4ce4d915 100644
---- a/core/fxge/dib/cfx_imagetransformer.cpp
-+++ b/core/fxge/dib/cfx_imagetransformer.cpp
-@@ -315,14 +315,14 @@ bool CFX_ImageTransformer::Continue(IFX_PauseIndicator* pPause) {
-   } else if (pDestMask) {
-     CalcData cdata = {
-         pDestMask.Get(), result2stretch, pSrcMaskBuf,
--        m_Storer.GetBitmap()->m_pAlphaMask->GetPitch(),
-+        static_cast<uint32_t>(m_Storer.GetBitmap()->m_pAlphaMask->GetPitch()),
-     };
-     CalcMask(cdata);
-   }
- 
-   CalcData cdata = {pTransformed.Get(), result2stretch,
-                     m_Storer.GetBitmap()->GetBuffer(),
--                    m_Storer.GetBitmap()->GetPitch()};
-+                    static_cast<uint32_t>(m_Storer.GetBitmap()->GetPitch())};
-   if (m_Storer.GetBitmap()->IsAlphaMask()) {
-     CalcAlpha(cdata);
-   } else {
 diff --git a/core/fpdfdoc/cpdf_metadata.cpp b/core/fpdfdoc/cpdf_metadata.cpp
 index 323de4ffc..f11a0b0ad 100644
 --- a/core/fpdfdoc/cpdf_metadata.cpp
diff --git a/external/pdfium/c++20-comparison.patch b/external/pdfium/c++20-comparison.patch
new file mode 100644
index 000000000000..025f9ba010db
--- /dev/null
+++ b/external/pdfium/c++20-comparison.patch
@@ -0,0 +1,13 @@
+--- core/fxcrt/fx_memory_wrappers.h
++++ core/fxcrt/fx_memory_wrappers.h
+@@ -70,8 +70,8 @@
+   }
+ 
+   // There's no state, so they are all the same,
+-  bool operator==(const FxAllocAllocator& that) { return true; }
+-  bool operator!=(const FxAllocAllocator& that) { return false; }
++  bool operator==(const FxAllocAllocator& that) const { return true; }
++  bool operator!=(const FxAllocAllocator& that) const { return false; }
+ };
+ 
+ #endif  // CORE_FXCRT_FX_MEMORY_WRAPPERS_H_
diff --git a/external/pdfium/inc/pch/precompiled_pdfium.hxx b/external/pdfium/inc/pch/precompiled_pdfium.hxx
index d4d3b2f462a3..f1bb32ea8331 100644
--- a/external/pdfium/inc/pch/precompiled_pdfium.hxx
+++ b/external/pdfium/inc/pch/precompiled_pdfium.hxx
@@ -13,7 +13,7 @@
  manual changes will be rewritten by the next run of update_pch.sh (which presumably
  also fixes all possible problems, so it's usually better to use it).
 
- Generated on 2019-05-21 17:15:06 using:
+ Generated on 2020-05-06 11:57:12 using:
  ./bin/update_pch external/pdfium pdfium --cutoff=1 --exclude:system --include:module --include:local
 
  If after updating build fails, use the following command to locate conflicting headers:
@@ -65,6 +65,7 @@
 #endif // PCH_LEVEL >= 2
 #if PCH_LEVEL >= 3
 #include <build/build_config.h>
+#include <constants/access_permissions.h>
 #include <constants/annotation_common.h>
 #include <constants/annotation_flags.h>
 #include <constants/form_fields.h>
@@ -77,7 +78,7 @@
 #include <core/fpdfapi/cmaps/GB1/cmaps_gb1.h>
 #include <core/fpdfapi/cmaps/Japan1/cmaps_japan1.h>
 #include <core/fpdfapi/cmaps/Korea1/cmaps_korea1.h>
-#include <core/fpdfapi/cmaps/cmap_int.h>
+#include <core/fpdfapi/cmaps/fpdf_cmaps.h>
 #include <core/fpdfapi/edit/cpdf_contentstream_write_utils.h>
 #include <core/fpdfapi/edit/cpdf_creator.h>
 #include <core/fpdfapi/edit/cpdf_pagecontentgenerator.h>
@@ -109,8 +110,7 @@
 #include <core/fpdfapi/page/cpdf_contentmarks.h>
 #include <core/fpdfapi/page/cpdf_contentparser.h>
 #include <core/fpdfapi/page/cpdf_devicecs.h>
-#include <core/fpdfapi/page/cpdf_dibbase.h>
-#include <core/fpdfapi/page/cpdf_dibtransferfunc.h>
+#include <core/fpdfapi/page/cpdf_dib.h>
 #include <core/fpdfapi/page/cpdf_docpagedata.h>
 #include <core/fpdfapi/page/cpdf_expintfunc.h>
 #include <core/fpdfapi/page/cpdf_form.h>
@@ -143,6 +143,7 @@
 #include <core/fpdfapi/page/cpdf_textstate.h>
 #include <core/fpdfapi/page/cpdf_tilingpattern.h>
 #include <core/fpdfapi/page/cpdf_transferfunc.h>
+#include <core/fpdfapi/page/cpdf_transferfuncdib.h>
 #include <core/fpdfapi/page/cpdf_transparency.h>
 #include <core/fpdfapi/parser/cfdf_document.h>
 #include <core/fpdfapi/parser/cpdf_array.h>
@@ -177,7 +178,7 @@
 #include <core/fpdfapi/parser/cpdf_syntax_parser.h>
 #include <core/fpdfapi/parser/fpdf_parser_decode.h>
 #include <core/fpdfapi/parser/fpdf_parser_utility.h>
-#include <core/fpdfapi/render/cpdf_charposlist.h>
+#include <core/fpdfapi/render/charposlist.h>
 #include <core/fpdfapi/render/cpdf_devicebuffer.h>
 #include <core/fpdfapi/render/cpdf_docrenderdata.h>
 #include <core/fpdfapi/render/cpdf_imagecacheentry.h>
@@ -188,6 +189,7 @@
 #include <core/fpdfapi/render/cpdf_progressiverenderer.h>
 #include <core/fpdfapi/render/cpdf_rendercontext.h>
 #include <core/fpdfapi/render/cpdf_renderoptions.h>
+#include <core/fpdfapi/render/cpdf_rendershading.h>
 #include <core/fpdfapi/render/cpdf_renderstatus.h>
 #include <core/fpdfapi/render/cpdf_scaledrenderbuffer.h>
 #include <core/fpdfapi/render/cpdf_textrenderer.h>
@@ -197,7 +199,6 @@
 #include <core/fpdfdoc/cline.h>
 #include <core/fpdfdoc/cpdf_aaction.h>
 #include <core/fpdfdoc/cpdf_action.h>
-#include <core/fpdfdoc/cpdf_actionfields.h>
 #include <core/fpdfdoc/cpdf_annot.h>
 #include <core/fpdfdoc/cpdf_annotlist.h>
 #include <core/fpdfdoc/cpdf_apsettings.h>
@@ -206,10 +207,10 @@
 #include <core/fpdfdoc/cpdf_color_utils.h>
 #include <core/fpdfdoc/cpdf_defaultappearance.h>
 #include <core/fpdfdoc/cpdf_dest.h>
-#include <core/fpdfdoc/cpdf_docjsactions.h>
 #include <core/fpdfdoc/cpdf_filespec.h>
 #include <core/fpdfdoc/cpdf_formcontrol.h>
 #include <core/fpdfdoc/cpdf_formfield.h>
+#include <core/fpdfdoc/cpdf_icon.h>
 #include <core/fpdfdoc/cpdf_iconfit.h>
 #include <core/fpdfdoc/cpdf_interactiveform.h>
 #include <core/fpdfdoc/cpdf_link.h>
@@ -307,6 +308,7 @@
 #include <core/fxcrt/fx_coordinates.h>
 #include <core/fxcrt/fx_extension.h>
 #include <core/fxcrt/fx_memory.h>
+#include <core/fxcrt/fx_memory_wrappers.h>
 #include <core/fxcrt/fx_number.h>
 #include <core/fxcrt/fx_random.h>
 #include <core/fxcrt/fx_safe_types.h>
@@ -318,6 +320,7 @@
 #include <core/fxcrt/observed_ptr.h>
 #include <core/fxcrt/pauseindicator_iface.h>
 #include <core/fxcrt/retain_ptr.h>
+#include <core/fxcrt/string_data_template.h>
 #include <core/fxcrt/string_pool_template.h>
 #include <core/fxcrt/unowned_ptr.h>
 #include <core/fxcrt/widestring.h>
@@ -332,6 +335,7 @@
 #include <core/fxge/cfx_cliprgn.h>
 #include <core/fxge/cfx_color.h>
 #include <core/fxge/cfx_defaultrenderdevice.h>
+#include <core/fxge/cfx_drawutils.h>
 #include <core/fxge/cfx_face.h>
 #include <core/fxge/cfx_folderfontinfo.h>
 #include <core/fxge/cfx_font.h>
@@ -353,7 +357,6 @@
 #include <core/fxge/dib/cfx_dibbase.h>
 #include <core/fxge/dib/cfx_dibextractor.h>
 #include <core/fxge/dib/cfx_dibitmap.h>
-#include <core/fxge/dib/cfx_filtereddib.h>
 #include <core/fxge/dib/cfx_imagerenderer.h>
 #include <core/fxge/dib/cfx_imagestretcher.h>
 #include <core/fxge/dib/cfx_imagetransformer.h>
@@ -386,6 +389,7 @@
 #include <fpdfsdk/cpdfsdk_interactiveform.h>
 #include <fpdfsdk/cpdfsdk_pageview.h>
 #include <fpdfsdk/cpdfsdk_pauseadapter.h>
+#include <fpdfsdk/cpdfsdk_renderpage.h>
 #include <fpdfsdk/cpdfsdk_widget.h>
 #include <fpdfsdk/cpdfsdk_widgethandler.h>
 #include <fpdfsdk/formfiller/cffl_button.h>
@@ -454,11 +458,13 @@
 #include <third_party/base/allocator/partition_allocator/partition_oom.h>
 #include <third_party/base/allocator/partition_allocator/partition_page.h>
 #include <third_party/base/allocator/partition_allocator/partition_root_base.h>
+#include <third_party/base/allocator/partition_allocator/random.h>
 #include <third_party/base/allocator/partition_allocator/spin_lock.h>
 #include <third_party/base/bits.h>
 #include <third_party/base/compiler_specific.h>
 #include <third_party/base/debug/alias.h>
 #include <third_party/base/logging.h>
+#include <third_party/base/no_destructor.h>
 #include <third_party/base/numerics/safe_conversions.h>
 #include <third_party/base/numerics/safe_math.h>
 #include <third_party/base/optional.h>
diff --git a/external/pdfium/ubsan.patch b/external/pdfium/ubsan.patch
index 1d03c28a4d15..8610e24f2828 100644
--- a/external/pdfium/ubsan.patch
+++ b/external/pdfium/ubsan.patch
@@ -1,14 +1,14 @@
---- core/fxcrt/string_data_template.h
-+++ core/fxcrt/string_data_template.h
-@@ -76,7 +76,8 @@ class StringDataTemplate {
-     ASSERT(nLen >= 0);
-     ASSERT(offset + nLen <= m_nAllocLength);
+--- core/fxcrt/string_data_template.cpp
++++ core/fxcrt/string_data_template.cpp
+@@ -82,7 +82,8 @@ void StringDataTemplate<CharType>::CopyContentsAt(size_t offset,
+   ASSERT(nLen >= 0);
+   ASSERT(offset + nLen <= m_nAllocLength);
  
--    memcpy(m_String + offset, pStr, nLen * sizeof(CharType));
-+    if (nLen != 0)
-+      memcpy(m_String + offset, pStr, nLen * sizeof(CharType));
-     m_String[offset + nLen] = 0;
-   }
+-  memcpy(m_String + offset, pStr, nLen * sizeof(CharType));
++  if (nLen != 0)
++    memcpy(m_String + offset, pStr, nLen * sizeof(CharType));
+   m_String[offset + nLen] = 0;
+ }
  
 --- core/fxge/cfx_glyphcache.cpp
 +++ core/fxge/cfx_glyphcache.cpp
diff --git a/external/pdfium/visibility.patch.1 b/external/pdfium/visibility.patch.1
deleted file mode 100644
index 835528794f4b..000000000000
--- a/external/pdfium/visibility.patch.1
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/public/fpdfview.h b/public/fpdfview.h
-index 2b84f07ba..b6c0a356b 100644
---- a/public/fpdfview.h
-+++ b/public/fpdfview.h
-@@ -168,7 +168,6 @@ typedef int FPDF_OBJECT_TYPE;
- // Text object enums.
- typedef int FPDF_TEXT_RENDERMODE;
- 
--#if defined(COMPONENT_BUILD)
- // FPDF_EXPORT should be consistent with |export| in the pdfium_fuzzer
- // template in testing/fuzzers/BUILD.gn.
- #if defined(WIN32)
-@@ -184,9 +183,6 @@ typedef int FPDF_TEXT_RENDERMODE;
- #define FPDF_EXPORT
- #endif  // defined(FPDF_IMPLEMENTATION)
- #endif  // defined(WIN32)
--#else
--#define FPDF_EXPORT
--#endif  // defined(COMPONENT_BUILD)
- 
- #if defined(WIN32) && defined(FPDFSDK_EXPORTS)
- #define FPDF_CALLCONV __stdcall
diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in
index 3bebe7ffa003..89e387747e2f 100644
--- a/solenv/flatpak-manifest.in
+++ b/solenv/flatpak-manifest.in
@@ -69,10 +69,10 @@
                     "type": "shell"
                 },
                 {
-                    "url": "https://dev-www.libreoffice.org/src/pdfium-3963.tar.bz2",
-                    "sha256": "80d4d6bd8faec226936fcde5521c6e92c0c645126ac3ae72dd2c160ca1749895",
+                    "url": "https://dev-www.libreoffice.org/src/pdfium-4137.tar.bz2",
+                    "sha256": "9a2f9bddca935a263f06c81003483473a525ccd0f4e517bc75fceb914d4c54b6",
                     "type": "file",
-                    "dest-filename": "external/tarballs/pdfium-3963.tar.bz2"
+                    "dest-filename": "external/tarballs/pdfium-4137.tar.bz2"
                 },
                 {
                     "url": "https://dev-www.libreoffice.org/src/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz",
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index 66b37df2aee4..c9a18c1dfcf9 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -757,9 +757,9 @@ void ImpSdrPdfImport::ImportForm(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTex
     // Get the form matrix to perform correct translation/scaling of the form sub-objects.
     const Matrix aOldMatrix = mCurMatrix;
 
-    double a, b, c, d, e, f;
-    FPDFFormObj_GetMatrix(pPageObject, &a, &b, &c, &d, &e, &f);
-    mCurMatrix = Matrix(a, b, c, d, e, f);
+    FS_MATRIX matrix;
+    FPDFFormObj_GetMatrix(pPageObject, &matrix);
+    mCurMatrix = Matrix(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
 
     const int nCount = FPDFFormObj_CountObjects(pPageObject);
     for (int nIndex = 0; nIndex < nCount; ++nIndex)
@@ -787,8 +787,8 @@ void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTex
     if (left == right || top == bottom)
         return;
 
-    double a, b, c, d, e, f;
-    FPDFTextObj_GetMatrix(pPageObject, &a, &b, &c, &d, &e, &f);
+    FS_MATRIX matrix;
+    FPDFTextObj_GetMatrix(pPageObject, &matrix);
     Matrix aTextMatrix(mCurMatrix);
 
     aTextMatrix.Transform(left, right, top, bottom);
@@ -806,8 +806,8 @@ void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTex
     OUString sText(pText.get(), nActualChars);
 
     const double dFontSize = FPDFTextObj_GetFontSize(pPageObject);
-    double dFontSizeH = fabs(sqrt2(a, c) * dFontSize);
-    double dFontSizeV = fabs(sqrt2(b, d) * dFontSize);
+    double dFontSizeH = fabs(sqrt2(matrix.a, matrix.c) * dFontSize);
+    double dFontSizeV = fabs(sqrt2(matrix.b, matrix.d) * dFontSize);
     dFontSizeH = lcl_PointToPixel(dFontSizeH);
     dFontSizeV = lcl_PointToPixel(dFontSizeV);
     dFontSizeH = lcl_ToLogic(dFontSizeH);
@@ -850,6 +850,7 @@ void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTex
             break;
         case FPDF_TEXTRENDERMODE_STROKE:
         case FPDF_TEXTRENDERMODE_STROKE_CLIP:
+        case FPDF_TEXTRENDERMODE_UNKNOWN:
             break;
         case FPDF_TEXTRENDERMODE_INVISIBLE:
         case FPDF_TEXTRENDERMODE_CLIP:
@@ -1022,9 +1023,9 @@ void ImpSdrPdfImport::ImportImage(FPDF_PAGEOBJECT pPageObject, int /*nPageObject
 
 void ImpSdrPdfImport::ImportPath(FPDF_PAGEOBJECT pPageObject, int /*nPageObjectIndex*/)
 {
-    double a, b, c, d, e, f;
-    FPDFPath_GetMatrix(pPageObject, &a, &b, &c, &d, &e, &f);
-    Matrix aPathMatrix(a, b, c, d, e, f);
+    FS_MATRIX matrix;
+    FPDFPath_GetMatrix(pPageObject, &matrix);
+    Matrix aPathMatrix(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
     aPathMatrix.Concatinate(mCurMatrix);
 
     basegfx::B2DPolyPolygon aPolyPoly;
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 28ee088a6f17..723202eccf15 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -1949,14 +1949,9 @@ void PdfExportTest::testPdfImageResourceInlineXObjectRef()
     CPPUNIT_ASSERT_EQUAL(1, FPDFFormObj_CountObjects(pInnerFormObject));
     FPDF_PAGEOBJECT pImage = FPDFFormObj_GetObject(pInnerFormObject, 0);
     CPPUNIT_ASSERT_EQUAL(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(pImage));
-    double fA = 0;
-    double fB = 0;
-    double fC = 0;
-    double fD = 0;
-    double fE = 0;
-    double fF = 0;
-    FPDFFormObj_GetMatrix(pInnerFormObject, &fA, &fB, &fC, &fD, &fE, &fF);
-    basegfx::B2DHomMatrix aMat{ fA, fC, fE, fB, fD, fF };
+    FS_MATRIX aMatrix;
+    FPDFFormObj_GetMatrix(pInnerFormObject, &aMatrix);
+    basegfx::B2DHomMatrix aMat{ aMatrix.a, aMatrix.c, aMatrix.e, aMatrix.b, aMatrix.d, aMatrix.f };
     basegfx::B2DTuple aScale;
     basegfx::B2DTuple aTranslate;
     double fRotate = 0;
commit 217d6ee31d6c892af63931ca4fc4158b8e713640
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Sep 10 10:03:26 2020 +0100
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Thu Sep 10 15:31:36 2020 +0200

    tdf#135950 crash in format->character with selected text in table
    
    Change-Id: I66e36a638d040d2a38ac234383d6f314a2ff4d88
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102310
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>

diff --git a/sw/source/filter/basflt/shellio.cxx b/sw/source/filter/basflt/shellio.cxx
index cba064de3e09..47657980602f 100644
--- a/sw/source/filter/basflt/shellio.cxx
+++ b/sw/source/filter/basflt/shellio.cxx
@@ -897,6 +897,7 @@ ErrCode SwWriter::Write( WriterRef const & rxWriter, const OUString* pRealFileNa
 
     if ( xDoc.is() )
     {
+        pTempCursor.reset();
         xDoc.clear();
         bWriteAll = false;
     }
commit 3c36d4921cf9d9c4fd33b3e1dd810f7a63d51695
Author:     Andreas Heinisch <andreas.heinisch at yahoo.de>
AuthorDate: Sun Sep 6 09:26:47 2020 +0200
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Thu Sep 10 12:51:51 2020 +0200

    tdf#136032 - abort scan of a string beginning with a hashtag
    
    Abort scan of a string beginning with a hashtag, if a comma is found. Otherwise, the compiler raises a syntax error. If
    the string ends with a hashtag too, it will be parsed later checking for
    a date literal.
    
    Change-Id: I078a2302f5c65206367a00fbc584ffa7b9ede031
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102099
    Tested-by: Mike Kaganski <mike.kaganski at collabora.com>
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    (cherry picked from commit 11292d1cc405e7c3b9e1f374cc7581a63a54b994)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101973
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>
    (cherry picked from commit cc17346d682d85b6c083d76cae2d55dcc022e58f)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102120

diff --git a/basic/qa/cppunit/test_scanner.cxx b/basic/qa/cppunit/test_scanner.cxx
index 42cd637cbd44..b5f14bc57691 100644
--- a/basic/qa/cppunit/test_scanner.cxx
+++ b/basic/qa/cppunit/test_scanner.cxx
@@ -46,6 +46,7 @@ namespace
     void testDataType();
     void testHexOctal();
     void testTdf103104();
+    void testTdf136032();
 
     // Adds code needed to register the test suite
     CPPUNIT_TEST_SUITE(ScannerTest);
@@ -62,6 +63,7 @@ namespace
     CPPUNIT_TEST(testDataType);
     CPPUNIT_TEST(testHexOctal);
     CPPUNIT_TEST(testTdf103104);
+    CPPUNIT_TEST(testTdf136032);
 
     // End of test suite definition
     CPPUNIT_TEST_SUITE_END();
@@ -959,6 +961,21 @@ namespace
     CPPUNIT_ASSERT_EQUAL(cr, symbols[3].text);
   }
 
+  void ScannerTest::testTdf136032()
+  {
+    std::vector<Symbol> symbols;
+    sal_Int32 errors;
+
+    // tdf#136032 - abort scan of a string beginning with a hashtag,
+    // if a comma/whitespace is found. Otherwise, the compiler raises a syntax error.
+    symbols = getSymbols("Print #i,\"A#B\"", errors);
+    CPPUNIT_ASSERT_EQUAL(size_t(5), symbols.size());
+    CPPUNIT_ASSERT_EQUAL(0u, static_cast<unsigned int>(errors));
+    symbols = getSymbols("Print #i, \"A#B\"", errors);
+    CPPUNIT_ASSERT_EQUAL(size_t(5), symbols.size());
+    CPPUNIT_ASSERT_EQUAL(0u, static_cast<unsigned int>(errors));
+  }
+
   // Put the test suite in the registry
   CPPUNIT_TEST_SUITE_REGISTRATION(ScannerTest);
 } // namespace
diff --git a/basic/source/comp/scanner.cxx b/basic/source/comp/scanner.cxx
index 7c192b3a0107..7c5a0d7b265d 100644
--- a/basic/source/comp/scanner.cxx
+++ b/basic/source/comp/scanner.cxx
@@ -251,7 +251,8 @@ bool SbiScanner::NextSym()
         do
         {
             nLineTempIdx++;
-        } while (nLineTempIdx < aLine.getLength() && !BasicCharClass::isWhitespace(aLine[nLineTempIdx]) && aLine[nLineTempIdx] != '#');
+        } while (nLineTempIdx < aLine.getLength() && !BasicCharClass::isWhitespace(aLine[nLineTempIdx])
+            && aLine[nLineTempIdx] != '#' && aLine[nLineTempIdx] != ',');
         // leave it if it is a date literal - it will be handled later
         if (nLineTempIdx >= aLine.getLength() || aLine[nLineTempIdx] != '#')
         {
commit 7b661ad44b81a200caaff0afaa0c822e3d635ee5
Author:     Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Wed Aug 5 11:16:32 2020 +0300
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Thu Sep 10 12:51:33 2020 +0200

    tdf#124470: Split export of table autostyles out from collection phase
    
    This allows to call collectAutoStyles where required (e.g. when enumerating
    used fonts), without side effect of writing table styles XML inside the call,
    out of place.
    
    Change-Id: Ida05e373eb8502590c43e2b0e85c3b0c1107c551
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100153
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    (cherry picked from commit 35021cd56b3b4e38035804087f215c80085564be)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100221
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>
    Signed-off-by: Xisco Fauli <xiscofauli at libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100274

diff --git a/include/xmloff/txtparae.hxx b/include/xmloff/txtparae.hxx
index b85f78f1dbfe..7ded21114fd6 100644
--- a/include/xmloff/txtparae.hxx
+++ b/include/xmloff/txtparae.hxx
@@ -365,6 +365,8 @@ protected:
         const css::uno::Reference< css::beans::XPropertySet> & i_xPortion,
         bool i_bAutoStyles, bool i_isProgress, bool & rPrevCharIsSpace);
 
+    virtual void exportTableAutoStyles();
+
 public:
 
     XMLTextParagraphExport(
diff --git a/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt b/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt
new file mode 100644
index 000000000000..21969e9e5485
Binary files /dev/null and b/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt differ
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index 2d38f8828f0c..bfc17ca284f3 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -2338,5 +2338,22 @@ DECLARE_ODFEXPORT_TEST(tdf121658, "tdf121658.odt")
     CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xStyle1, "ParaHyphenationNoCaps"));
 }
 
+DECLARE_ODFEXPORT_TEST(tdf124470, "tdf124470TableAndEmbeddedUsedFonts.odt")
+{
+    // Table styles were exported out of place, inside font-face-decls.
+    // Without the fix in place, this will fail already in ODF validation:
+    // "content.xml[2,2150]:  Error: tag name "style:style" is not allowed. Possible tag names are: <font-face>"
+
+    CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+    if (xmlDocPtr pXmlDoc = parseExport("content.xml"))
+    {
+        assertXPath(pXmlDoc, "/office:document-content/office:font-face-decls/style:style", 0);
+        assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='table']", 1);
+        assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='table-column']", 2);
+        assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='paragraph']", 1);
+    }
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/xml/xmltble.cxx b/sw/source/filter/xml/xmltble.cxx
index bef72a6f5357..80d786d8d884 100644
--- a/sw/source/filter/xml/xmltble.cxx
+++ b/sw/source/filter/xml/xmltble.cxx
@@ -1140,6 +1140,13 @@ void SwXMLExport::ExportTable( const SwTableNode& rTableNd )
     }
 }
 
+void SwXMLTextParagraphExport::exportTableAutoStyles() {
+    for (const auto* pTableNode : maTableNodes)
+    {
+        static_cast<SwXMLExport&>(GetExport()).ExportTableAutoStyles(*pTableNode);
+    }
+}
+
 void SwXMLTextParagraphExport::exportTable(
         const Reference < XTextContent > & rTextContent,
         bool bAutoStyles, bool _bProgress )
@@ -1177,7 +1184,7 @@ void SwXMLTextParagraphExport::exportTable(
                 // ALL flags are set at the same time.
                 const bool bExportStyles = bool( GetExport().getExportFlags() & SvXMLExportFlags::STYLES );
                 if ( bExportStyles || !pFormat->GetDoc()->IsInHeaderFooter( aIdx ) )
-                    static_cast<SwXMLExport&>(GetExport()).ExportTableAutoStyles( *pTableNd );
+                    maTableNodes.push_back(pTableNd);
             }
             else
             {
diff --git a/sw/source/filter/xml/xmltexte.hxx b/sw/source/filter/xml/xmltexte.hxx
index 8da021506c0d..4432e4ce0166 100644
--- a/sw/source/filter/xml/xmltexte.hxx
+++ b/sw/source/filter/xml/xmltexte.hxx
@@ -28,6 +28,7 @@
 class SwXMLExport;
 class SvXMLAutoStylePoolP;
 class SwNoTextNode;
+class SwTableNode;
 
 namespace com { namespace sun { namespace star { namespace style {
                 class XStyle; } } } }
@@ -38,6 +39,9 @@ class SwXMLTextParagraphExport : public XMLTextParagraphExport
     const SvGlobalName aPluginClassId;
     const SvGlobalName aIFrameClassId;
 
+    // Collected autostyles for use in exportTextAutoStyles
+    std::vector<const SwTableNode*> maTableNodes;
+
     static SwNoTextNode *GetNoTextNode(
         const css::uno::Reference < css::beans::XPropertySet >& rPropSet );
 
@@ -52,6 +56,8 @@ protected:
         const css::uno::Reference< css::text::XTextContent > & rTextContent,
         bool bAutoStyles, bool bProgress ) override;
 
+    virtual void exportTableAutoStyles() override;
+
 public:
     SwXMLTextParagraphExport(
         SwXMLExport& rExp,
diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx
index 0238e918535d..b830da30579b 100644
--- a/xmloff/source/text/txtparae.cxx
+++ b/xmloff/source/text/txtparae.cxx
@@ -3671,8 +3671,12 @@ void XMLTextParagraphExport::recordTrackedChangesNoXText()
         pRedlineExport->SetCurrentXText();
 }
 
+void XMLTextParagraphExport::exportTableAutoStyles() {}
+
 void XMLTextParagraphExport::exportTextAutoStyles()
 {
+    exportTableAutoStyles();
+
     GetAutoStylePool().exportXML( XML_STYLE_FAMILY_TEXT_PARAGRAPH );
 
     GetAutoStylePool().exportXML( XML_STYLE_FAMILY_TEXT_TEXT );
commit 333b62f36f3cf8feff4fed7cf2e6e1439f7c1d36
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Mon Aug 17 13:06:50 2020 +0200
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Thu Sep 10 12:11:52 2020 +0200

    Always display highlighted JRE's location
    
    ...when opening the Advanced options page and after adding a new JRE via the
    "Add..." button, not only after highlighting another JRE line.  (I suspect this
    broke with 1aa246a8e8c7d974ab0f7bdfa16cda36cb700e03 "weld SvxJavaOptionsPage"
    towards LO 6.4.)
    
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100860
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
    (cherry picked from commit f7fe1e93da753d74485a13d46fe15fb198411932)
    
    Change-Id: I5f9b63e2d33a351eeef09712969b703f1e99ef7e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102286
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
index 37a08f035716..36540800bb62 100644
--- a/cui/source/options/optjava.cxx
+++ b/cui/source/options/optjava.cxx
@@ -20,6 +20,7 @@
 #include <sal/config.h>
 #include <sal/log.hxx>
 
+#include <cassert>
 #include <memory>
 #include <vector>
 
@@ -151,11 +152,7 @@ IMPL_LINK(SvxJavaOptionsPage, CheckHdl_Impl, const row_col&, rRowCol, void)
 
 IMPL_LINK_NOARG(SvxJavaOptionsPage, SelectHdl_Impl, weld::TreeView&, void)
 {
-    // set installation directory info
-    OUString sLocation = m_xJavaList->get_selected_id();
-    // tdf#80646 insert LTR mark after label
-    OUString sInfo = m_sInstallText + u"\u200E" + sLocation;
-    m_xJavaPathText->set_label(sInfo);
+    UpdateJavaPathText();
 }
 
 IMPL_LINK_NOARG(SvxJavaOptionsPage, AddHdl_Impl, weld::Button&, void)
@@ -348,6 +345,7 @@ void SvxJavaOptionsPage::LoadJREs()
             if ( jfw_areEqualJavaInfo( pCmpInfo.get(), pSelectedJava.get() ) )
             {
                 HandleCheckEntry(i);
+                UpdateJavaPathText();
                 break;
             }
             ++i;
@@ -391,6 +389,16 @@ void SvxJavaOptionsPage::HandleCheckEntry(int nCheckedRow)
     }
 }
 
+void SvxJavaOptionsPage::UpdateJavaPathText()
+{
+    assert(m_xJavaList->get_selected_index() != -1);
+    // set installation directory info
+    OUString sLocation = m_xJavaList->get_selected_id();
+    // tdf#80646 insert LTR mark after label
+    OUString sInfo = m_sInstallText + u"\u200E" + sLocation;
+    m_xJavaPathText->set_label(sInfo);
+}
+
 void SvxJavaOptionsPage::AddFolder( const OUString& _rFolder )
 {
 #if HAVE_FEATURE_JAVA
@@ -433,6 +441,7 @@ void SvxJavaOptionsPage::AddFolder( const OUString& _rFolder )
         }
 
         HandleCheckEntry(nPos);
+        UpdateJavaPathText();
         bStartAgain = false;
     }
     else if ( JFW_E_NOT_RECOGNIZED == eErr )
diff --git a/cui/source/options/optjava.hxx b/cui/source/options/optjava.hxx
index e5537f1e1ff7..f3cbb1e5a1df 100644
--- a/cui/source/options/optjava.hxx
+++ b/cui/source/options/optjava.hxx
@@ -102,6 +102,7 @@ private:
     void                    LoadJREs();
     void                    AddJRE( JavaInfo const * _pInfo );
     void                    HandleCheckEntry(int nCheckedRow);
+    void                    UpdateJavaPathText();
     void                    AddFolder( const OUString& _rFolder );
     void                    RequestRestart( svtools::RestartReason eReason );
 
commit 72c1c84e14ffc8127f24930066220e7c7b28a970
Author:     Juergen Funk <juergen.funk_ml at cib.de>
AuthorDate: Fri Sep 4 10:53:44 2020 +0200
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Thu Sep 10 12:11:11 2020 +0200

    tdf#127932 fix wrong page number in print progress
    
    - in ctor, reset start pages to non-inflated value after size
      calculation
    - update label, _then_ progress in setProgress()
    
    Change-Id: I66576e339de814922512b68167e6c0a9b1025378
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102031
    Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    (cherry picked from commit 63bf8f042abe3c0f6989f6763d13f5389182b816)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102281
    Tested-by: Jenkins

diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 7d340559806a..1515b8b74264 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -2159,6 +2159,15 @@ void PrintDialog::previewLast()
     ActivateHdl(*mxPageEdit);
 }
 
+
+static OUString getNewLabel(const OUString& aLabel, int i_nCurr, int i_nMax)
+{
+    OUString aNewText( aLabel.replaceFirst( "%p", OUString::number( i_nCurr ) ) );
+    aNewText = aNewText.replaceFirst( "%n", OUString::number( i_nMax ) );
+
+    return aNewText;
+}
+
 // PrintProgressDialog
 PrintProgressDialog::PrintProgressDialog(weld::Window* i_pParent, int i_nMax)
     : GenericDialogController(i_pParent, "vcl/ui/printprogressdialog.ui", "PrintProgressDialog")
@@ -2176,15 +2185,17 @@ PrintProgressDialog::PrintProgressDialog(weld::Window* i_pParent, int i_nMax)
 
     //just multiply largest value by 10 and take the width of that string as
     //the max size we will want
-    OUString aNewText( maStr.replaceFirst( "%p", OUString::number( mnMax * 10 ) ) );
-    aNewText = aNewText.replaceFirst( "%n", OUString::number( mnMax * 10 ) );
-    mxText->set_label( aNewText );
+    mxText->set_label(getNewLabel(maStr, mnMax * 10, mnMax * 10));
     mxText->set_size_request(mxText->get_preferred_size().Width(), -1);
 
     //Pick a useful max width
     mxProgress->set_size_request(mxProgress->get_approximate_digit_width() * 25, -1);
 
     mxButton->connect_clicked( LINK( this, PrintProgressDialog, ClickHdl ) );
+
+    // after this patch f7157f04fab298423e2c4f6a7e5f8e361164b15f, we have seen the calc Max string (sometimes) look above
+    // now init to the right start vaules
+    mxText->set_label(getNewLabel(maStr, mnCur, mnMax));
 }
 
 PrintProgressDialog::~PrintProgressDialog()
@@ -2203,11 +2214,10 @@ void PrintProgressDialog::setProgress( int i_nCurrent )
     if( mnMax < 1 )
         mnMax = 1;
 
-    mxProgress->set_percentage(mnCur*100/mnMax);
+    mxText->set_label(getNewLabel(maStr, mnCur, mnMax));
 
-    OUString aNewText( maStr.replaceFirst( "%p", OUString::number( mnCur ) ) );
-    aNewText = aNewText.replaceFirst( "%n", OUString::number( mnMax ) );
-    mxText->set_label( aNewText );
+    // here view the dialog, with the right label
+    mxProgress->set_percentage(mnCur*100/mnMax);
 }
 
 void PrintProgressDialog::tick()
commit bd416f4a44acfea54afc377b9880863fd969dbe1
Author:     Serge Krot <Serge.Krot at cib.de>
AuthorDate: Fri Jul 10 11:09:35 2020 +0200
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Thu Sep 10 12:10:25 2020 +0200

    tdf#108673 XLSX: Don't export invalid sheet references in cell validation
    
    Change-Id: Id9d88f5e34f3017516f693505df4c3ce82b1890f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98479
    Tested-by: Jenkins
    Reviewed-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit a3b4831208da615789bd1e2d5660dd130807f504)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102128
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/sc/inc/clipparam.hxx b/sc/inc/clipparam.hxx
index ee9422bc27db..575a04526763 100644
--- a/sc/inc/clipparam.hxx
+++ b/sc/inc/clipparam.hxx
@@ -27,7 +27,7 @@
  * This struct stores general clipboard parameters associated with a
  * ScDocument instance created in clipboard mode.
  */
-struct ScClipParam
+struct SC_DLLPUBLIC ScClipParam
 {
     enum Direction { Unspecified, Column, Row };
 
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 63009443b919..8091f7e2ffb9 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1536,7 +1536,7 @@ public:
                                                SCTAB nTab, InsertDeleteFlags nDelFlag);
     void                         DeleteAreaTab(const ScRange& rRange, InsertDeleteFlags nDelFlag);
 
-    void                         CopyToClip( const ScClipParam& rClipParam, ScDocument* pClipDoc,
+    SC_DLLPUBLIC void            CopyToClip( const ScClipParam& rClipParam, ScDocument* pClipDoc,
                                              const ScMarkData* pMarks, bool bKeepScenarioFlags,
                                              bool bIncludeObjects );
 
@@ -1587,7 +1587,7 @@ public:
 
     /** If pDestRanges is given it overrides rDestRange, rDestRange in this
         case is the overall encompassing range. */
-    void                CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMark,
+    SC_DLLPUBLIC void   CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMark,
                                         InsertDeleteFlags nInsFlag,
                                         ScDocument* pRefUndoDoc,
                                         ScDocument* pClipDoc,
diff --git a/sc/qa/unit/data/ods/validation-copypaste.ods b/sc/qa/unit/data/ods/validation-copypaste.ods
new file mode 100644
index 000000000000..55f8d823b88b
Binary files /dev/null and b/sc/qa/unit/data/ods/validation-copypaste.ods differ
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index b7b41d40addb..61f6a46eba19 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -41,6 +41,7 @@
 #include <scmod.hxx>
 #include <dpcache.hxx>
 #include <dpobject.hxx>
+#include <clipparam.hxx>
 
 #include <svx/svdpage.hxx>
 #include <svx/svdograf.hxx>
@@ -233,6 +234,7 @@ public:
     void testTdf126177XLSX();
     void testCommentTextVAlignment();
     void testCommentTextHAlignment();
+    void testValidationCopyPaste();
 
     void testXltxExport();
     void testRotatedImageODS();
@@ -368,6 +370,7 @@ public:
     CPPUNIT_TEST(testTdf126177XLSX);
     CPPUNIT_TEST(testCommentTextVAlignment);
     CPPUNIT_TEST(testCommentTextHAlignment);
+    CPPUNIT_TEST(testValidationCopyPaste);
 
     CPPUNIT_TEST(testXltxExport);
     CPPUNIT_TEST(testRotatedImageODS);
@@ -4409,6 +4412,42 @@ void ScExportTest::testTdf91634XLSX()
     assertXPath(pXmlRels, "/r:Relationships/r:Relationship[@Id='rId1']", "TargetMode", "External");
 }
 
+void ScExportTest::testValidationCopyPaste()
+{
+    ScDocShellRef xDocSh = loadDoc("validation-copypaste.", FORMAT_ODS);
+    CPPUNIT_ASSERT(xDocSh.is());
+    ScDocument& rSrcDoc = xDocSh->GetDocument();
+
+    // Copy B1 from src doc to clip
+    ScDocument aClipDoc(SCDOCMODE_CLIP);
+    ScRange aSrcRange(1, 0, 1);
+    ScClipParam aClipParam(aSrcRange, false);
+    ScMarkData aMark(rSrcDoc.MaxRow(), rSrcDoc.MaxCol());
+    aMark.SetMarkArea(aSrcRange);
+    rSrcDoc.CopyToClip(aClipParam, &aClipDoc, &aMark, false, false);
+
+    // Create second document, paste B1 from clip
+    ScDocShell* pShell2
+        = new ScDocShell(SfxModelFlags::EMBEDDED_OBJECT | SfxModelFlags::DISABLE_EMBEDDED_SCRIPTS
+                         | SfxModelFlags::DISABLE_DOCUMENT_RECOVERY);
+    pShell2->DoInitNew();
+    ScDocument& rDestDoc = pShell2->GetDocument();
+    ScRange aDstRange(1, 0, 0);
+    ScMarkData aMark2(rDestDoc.MaxRow(), rDestDoc.MaxCol());
+    aMark2.SetMarkArea(aDstRange);
+    rDestDoc.CopyFromClip(aDstRange, aMark2, InsertDeleteFlags::ALL, nullptr, &aClipDoc);
+
+    // save as XLSX
+    std::shared_ptr<utl::TempFile> pXPathFile
+        = ScBootstrapFixture::exportTo(&(*pShell2), FORMAT_XLSX);
+
+    // check validation
+    xmlDocPtr pDoc
+        = XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/worksheets/sheet1.xml");
+    CPPUNIT_ASSERT(pDoc);
+    assertXPathContent(pDoc, "/x:worksheet/x:dataValidations/x:dataValidation/x:formula1", "#REF!");
+}
+
 void ScExportTest::testTdf115159()
 {
     ScDocShellRef xShell = loadDoc("tdf115159.", FORMAT_XLSX);
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index e31ab2731fa3..e26dd00177f9 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -1440,6 +1440,25 @@ struct ConventionXL_OOX : public ConventionXL_A1
             return;
         }
 
+        {
+            ScAddress aAbs1 = rRef.Ref1.toAbs(rPos);
+            if (std::make_unsigned_t<sal_Int16>(aAbs1.Tab()) >= rTabNames.size())
+            {
+                rBuf.append(rErrRef);
+                return;
+            }
+        }
+
+        if (!bSingleRef)
+        {
+            ScAddress aAbs2 = rRef.Ref2.toAbs(rPos);
+            if (std::make_unsigned_t<sal_Int16>(aAbs2.Tab()) >= rTabNames.size())
+            {
+                rBuf.append(rErrRef);
+                return;
+            }
+        }
+
         ConventionXL_A1::makeRefStr( pDoc, rBuf, eGram, aPos, rErrRef, rTabNames, rRef, bSingleRef, bFromRangeName);
     }
 
commit 76139d1059f063a3f53e4bac8cc9790bf02629ad
Author:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
AuthorDate: Sun Sep 6 17:07:47 2020 +0200
Commit:     Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
CommitDate: Wed Sep 9 17:09:30 2020 +0200

    Check range before accessing Calc sort userlist
    
    Conflicts:
            sc/source/filter/excel/excrecds.cxx
    
    Change-Id: Ib5078dc4ce3f85be9b42320b60ef6fc40b684cb7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102140
    Tested-by: Jenkins
    Tested-by: Serge Krot <Serge.Krot at cib.de>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102255
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index 1ee6456d84a6..c27c73fb88e1 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -1488,9 +1488,9 @@ short ScTable::CompareCell(
                 bool bNaturalSort = aSortParam.bNaturalSort;    // natural sort
                 bool bCaseSens    = aSortParam.bCaseSens;       // case sensitivity
 
-                if (bUserDef)
+                ScUserList* pList = ScGlobal::GetUserList();
+                if (bUserDef && pList && pList->size() > aSortParam.nUserIndex )
                 {
-                    ScUserList* pList = ScGlobal::GetUserList();
                     const ScUserListData& rData = (*pList)[aSortParam.nUserIndex];
 
                     if ( bNaturalSort )
diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx
index d7ab5d7d95af..920955a6540d 100644
--- a/sc/source/filter/excel/excrecds.cxx
+++ b/sc/source/filter/excel/excrecds.cxx
@@ -935,7 +935,8 @@ ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab, const
                 ScSortParam aSortParam;
                 pData->GetSortParam( aSortParam );
 
-                if (aSortParam.bUserDef)
+                ScUserList* pList = ScGlobal::GetUserList();
+                if (aSortParam.bUserDef && pList && pList->size() > aSortParam.nUserIndex)
                 {
                     // get sorted area without headers
                     maSortRef = ScRange(
@@ -943,7 +944,6 @@ ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab, const
                         aParam.nCol2, aParam.nRow2, aParam.nTab );
 
                     // get sorted columns with custom lists
-                    ScUserList* pList = ScGlobal::GetUserList();
                     const ScUserListData& rData = (*pList)[aSortParam.nUserIndex];
 
                     // get column index and sorting direction
commit a86ddd7fc0413f65ee7851eb09b15a24e5d457ba
Author:     Serge Krot <Serge.Krot at cib.de>
AuthorDate: Mon Jun 29 13:23:34 2020 +0200
Commit:     Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
CommitDate: Wed Sep 9 17:09:04 2020 +0200

    tdf#95640 XLSX: import/export of custom sort lists
    
    Conflicts:
            sc/source/filter/excel/excrecds.cxx
            sc/source/filter/oox/autofilterbuffer.cxx
            sc/source/filter/oox/tablebuffer.cxx
    
    Change-Id: If5ffef39770bf7abd6e75e8de998d4a2b4749a0d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97399
    Tested-by: Jenkins
    Tested-by: Serge Krot <Serge.Krot at cib.de>
    Reviewed-by: Serge Krot <Serge.Krot at cib.de>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102254
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx
index a7dc35c3b61b..24eaa3be7d18 100644
--- a/sc/inc/dbdata.hxx
+++ b/sc/inc/dbdata.hxx
@@ -172,8 +172,8 @@ public:
     OUString GetSourceString() const;
     OUString GetOperations() const;
 
-    void        GetSortParam(ScSortParam& rSortParam) const;
-    void        SetSortParam(const ScSortParam& rSortParam);
+    SC_DLLPUBLIC void GetSortParam(ScSortParam& rSortParam) const;
+    SC_DLLPUBLIC void SetSortParam(const ScSortParam& rSortParam);
 
     /** Remember some more settings of ScSortParam, only to be called at
         anonymous DB ranges as it at least overwrites bHasHeader. */
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 15fdc5074357..63009443b919 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -805,8 +805,8 @@ public:
                                                   bool bRemoveAutoFilter = false );
     const ScDBData*              GetDBAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, ScDBDataPortion ePortion) const;
     ScDBData*                    GetDBAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, ScDBDataPortion ePortion);
-    const ScDBData*              GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) const;
-    ScDBData*                    GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
+    SC_DLLPUBLIC const ScDBData* GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) const;
+    SC_DLLPUBLIC ScDBData*       GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
     void                         RefreshDirtyTableColumnNames();
     SC_DLLPUBLIC sc::ExternalDataMapper& GetExternalDataMapper();
 
diff --git a/sc/qa/unit/data/ods/tdf95640.ods b/sc/qa/unit/data/ods/tdf95640.ods
new file mode 100644
index 000000000000..5d435c61cc85
Binary files /dev/null and b/sc/qa/unit/data/ods/tdf95640.ods differ
diff --git a/sc/qa/unit/data/ods/tdf95640_standard_list.ods b/sc/qa/unit/data/ods/tdf95640_standard_list.ods
new file mode 100644
index 000000000000..37bea8a0c93e
Binary files /dev/null and b/sc/qa/unit/data/ods/tdf95640_standard_list.ods differ
diff --git a/sc/qa/unit/data/xlsx/tdf95640.xlsx b/sc/qa/unit/data/xlsx/tdf95640.xlsx
new file mode 100644
index 000000000000..78c2d32c2cf6
Binary files /dev/null and b/sc/qa/unit/data/xlsx/tdf95640.xlsx differ
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index e220803967cb..b7b41d40addb 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -195,6 +195,12 @@ public:
     void testPreserveTextWhitespace2XLSX();
     void testTextDirectionXLSX();
 
+    xmlDocPtr testTdf95640(const OUString& rFileName, sal_Int32 nSourceFormat,
+                           sal_Int32 nDestFormat);
+    void testTdf95640_ods_to_xlsx();
+    void testTdf95640_ods_to_xlsx_with_standard_list();
+    void testTdf95640_xlsx_to_xlsx();
+
     void testRefStringXLSX();
     void testRefStringConfigXLSX();
     void testRefStringUnspecified();
@@ -326,6 +332,9 @@ public:
     CPPUNIT_TEST(testMoveCellAnchoredShapesODS);
     CPPUNIT_TEST(testMatrixMultiplicationXLSX);
     CPPUNIT_TEST(testTextDirectionXLSX);
+    CPPUNIT_TEST(testTdf95640_ods_to_xlsx);
+    CPPUNIT_TEST(testTdf95640_ods_to_xlsx_with_standard_list);
+    CPPUNIT_TEST(testTdf95640_xlsx_to_xlsx);
 
     CPPUNIT_TEST(testRefStringXLSX);
     CPPUNIT_TEST(testRefStringConfigXLSX);
@@ -3954,6 +3963,60 @@ void ScExportTest::testTextDirectionXLSX()
     assertXPath(pDoc, "/x:styleSheet/x:cellXfs/x:xf[3]/x:alignment", "readingOrder", "2");//RTL
 }
 
+xmlDocPtr ScExportTest::testTdf95640(const OUString& rFileName, sal_Int32 nSourceFormat,
+                                     sal_Int32 nDestFormat)
+{
+    ScDocShellRef xShell = loadDoc(rFileName, nSourceFormat);
+    CPPUNIT_ASSERT(xShell);
+
+    auto pXPathFile = ScBootstrapFixture::exportTo(&(*xShell), nDestFormat);
+    xShell->DoClose();
+
+    return XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/worksheets/sheet1.xml");
+}
+
+void ScExportTest::testTdf95640_ods_to_xlsx()
+{
+    // Roundtripping sort options with user defined list to XLSX
+    xmlDocPtr pDoc = testTdf95640("tdf95640.", FORMAT_ODS, FORMAT_XLSX);
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter", "ref", "A1:B4");
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter/x:sortState/x:sortCondition", "ref", "A2:A4");
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter/x:sortState/x:sortCondition", "customList",
+                "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec");
+}
+
+void ScExportTest::testTdf95640_ods_to_xlsx_with_standard_list()
+{
+    // Roundtripping sort options with user defined list to XLSX
+    xmlDocPtr pDoc = testTdf95640("tdf95640_standard_list.", FORMAT_ODS, FORMAT_XLSX);
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter", "ref", "A1:B4");
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter/x:sortState/x:sortCondition", "ref", "A2:A4");
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter/x:sortState/x:sortCondition", "customList",
+                "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday");
+}
+
+void ScExportTest::testTdf95640_xlsx_to_xlsx()
+{
+    // XLSX Roundtripping sort options with custom sort list - note
+    // that compared to ODS source documents above, here we _actually_
+    // can use custom lists (beyond the global user defines), like
+    // low, medium, high
+    xmlDocPtr pDoc = testTdf95640("tdf95640.", FORMAT_XLSX, FORMAT_XLSX);
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter", "ref", "A1:B4");
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter/x:sortState/x:sortCondition", "ref", "A2:A4");
+
+    assertXPath(pDoc, "//x:worksheet/x:autoFilter/x:sortState/x:sortCondition", "customList",
+                "Low,Medium,High");
+}
+
 void ScExportTest::testTdf88657ODS()
 {
     ScDocShellRef xDocSh = loadDoc("tdf88657.", FORMAT_ODS);
diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx
index 4fbe955d8b52..d7ab5d7d95af 100644
--- a/sc/source/filter/excel/excrecds.cxx
+++ b/sc/source/filter/excel/excrecds.cxx
@@ -34,6 +34,8 @@
 #include <oox/token/tokens.hxx>
 #include <queryentry.hxx>
 #include <queryparam.hxx>
+#include <sortparam.hxx>
+#include <userlist.hxx>
 #include <root.hxx>
 
 #include <xeescher.hxx>
@@ -927,6 +929,45 @@ ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab, const
 
             if (maFilterList.IsEmpty () && !bConflict)
                 mbAutoFilter = true;
+
+            // get sort criteria
+            {
+                ScSortParam aSortParam;
+                pData->GetSortParam( aSortParam );
+
+                if (aSortParam.bUserDef)
+                {
+                    // get sorted area without headers
+                    maSortRef = ScRange(
+                        aParam.nCol1, aParam.nRow1 + (aSortParam.bHasHeader? 1 : 0), aParam.nTab,
+                        aParam.nCol2, aParam.nRow2, aParam.nTab );
+
+                    // get sorted columns with custom lists
+                    ScUserList* pList = ScGlobal::GetUserList();
+                    const ScUserListData& rData = (*pList)[aSortParam.nUserIndex];
+
+                    // get column index and sorting direction
+                    SCCOLROW nField = 0;
+                    bool bSortAscending=true;
+                    for (const auto & rKey : aSortParam.maKeyState)
+                    {
+                        if (rKey.bDoSort)
+                        {
+                            nField = rKey.nField;
+                            bSortAscending = rKey.bAscending;
+                            break;
+                        }
+                    }
+
+                    // remember sort criteria
+                    const ScRange aSortedColumn(
+                        nField, aParam.nRow1 + (aSortParam.bHasHeader? 1 : 0), aParam.nTab,
+                        nField, aParam.nRow2, aParam.nTab );
+                    const OUString aItemList = rData.GetString();
+
+                    maSortCustomList.emplace_back(aSortedColumn, aItemList, !bSortAscending);
+                }
+            }
         }
     }
 }
@@ -990,6 +1031,29 @@ void ExcAutoFilterRecs::SaveXml( XclExpXmlStream& rStrm )
     // OOXTODO: XML_extLst, XML_sortState
     if( !maFilterList.IsEmpty() )
         maFilterList.SaveXml( rStrm );
+
+    if (!maSortCustomList.empty())
+    {
+        rWorksheet->startElement(XML_sortState, XML_ref, XclXmlUtils::ToOString(&rStrm.GetRoot().GetDoc(), maSortRef));
+
+        for (const auto & rSortCriteria : maSortCustomList)
+        {
+            if (std::get<2>(rSortCriteria))
+                rWorksheet->singleElement(XML_sortCondition,
+                                          XML_ref, XclXmlUtils::ToOString(&rStrm.GetRoot().GetDoc(),
+                                                                          std::get<0>(rSortCriteria)),
+                                          XML_descending, "1",
+                                          XML_customList, std::get<1>(rSortCriteria).toUtf8().getStr());
+            else
+                rWorksheet->singleElement(XML_sortCondition,
+                                          XML_ref, XclXmlUtils::ToOString(&rStrm.GetRoot().GetDoc(),
+                                                                          std::get<0>(rSortCriteria)),
+                                          XML_customList, std::get<1>(rSortCriteria).toUtf8().getStr());
+        }
+
+        rWorksheet->endElement(XML_sortState);
+    }
+
     rWorksheet->endElement( XML_autoFilter );
 }
 
diff --git a/sc/source/filter/inc/autofilterbuffer.hxx b/sc/source/filter/inc/autofilterbuffer.hxx
index c6387e5d37d4..ae8e8b4fa2a0 100644
--- a/sc/source/filter/inc/autofilterbuffer.hxx
+++ b/sc/source/filter/inc/autofilterbuffer.hxx
@@ -184,6 +184,22 @@ private:
     bool                mbShowButton;
 };
 
+// class SortCondition
+
+class SortCondition : public WorkbookHelper
+{
+public:
+    explicit SortCondition( const WorkbookHelper& rHelper );
+
+    void importSortCondition( const AttributeList& rAttribs, sal_Int16 nSheet );
+
+    ScRange maRange; // Column/Row that this sort condition applies to.
+    OUString maSortCustomList; // Sort by a custom list.
+    bool mbDescending;
+};
+
+// class AutoFilter
+
 class AutoFilter : public WorkbookHelper
 {
 public:
@@ -194,17 +210,26 @@ public:
     /** Imports auto filter settings from the AUTOFILTER record. */
     void                importAutoFilter( SequenceInputStream& rStrm, sal_Int16 nSheet );
 
+    void                importSortState( const AttributeList& rAttribs, sal_Int16 nSheet );
+
     /** Creates a new auto filter column and stores it internally. */
     FilterColumn&       createFilterColumn();
 
+    SortCondition&      createSortCondition();
+
     /** Applies the filter to the passed filter descriptor. */
-    void                finalizeImport( const css::uno::Reference< css::sheet::XSheetFilterDescriptor3>& rxFilterDesc );
+    void                finalizeImport( const css::uno::Reference< css::sheet::XDatabaseRange >& rxDatabaseRange,
+                                        sal_Int16 nSheet );
 
 private:
     typedef RefVector< FilterColumn > FilterColumnVector;
 
     FilterColumnVector  maFilterColumns;
     ScRange             maRange;
+
+    ScRange maSortRange; // The whole range of data to sort (not just the sort-by column).
+    typedef RefVector< SortCondition > SortConditionVector;
+    SortConditionVector maSortConditions;
 };
 
 class AutoFilterBuffer : public WorkbookHelper
@@ -221,7 +246,8 @@ public:
 
     /** Applies the filters to the passed database range object.
         @return  True = this buffer contains valid auto filter settings. */
-    bool                finalizeImport( const css::uno::Reference< css::sheet::XDatabaseRange >& rxDatabaseRange );
+    bool                finalizeImport( const css::uno::Reference< css::sheet::XDatabaseRange >& rxDatabaseRange,
+                                        sal_Int16 nSheet );
 
 private:
     /** Returns the auto filter object used to perform auto filtering. */
diff --git a/sc/source/filter/inc/autofiltercontext.hxx b/sc/source/filter/inc/autofiltercontext.hxx
index 9a58a8a998e0..ef7bb539c3e7 100644
--- a/sc/source/filter/inc/autofiltercontext.hxx
+++ b/sc/source/filter/inc/autofiltercontext.hxx
@@ -21,6 +21,7 @@
 #define INCLUDED_SC_SOURCE_FILTER_INC_AUTOFILTERCONTEXT_HXX
 
 #include "excelhandlers.hxx"
+#include "autofilterbuffer.hxx"
 
 namespace oox {
 namespace xls {
@@ -61,6 +62,44 @@ private:
     FilterColumn&       mrFilterColumn;
 };
 
+// class SortConditionContext
+
+class SortConditionContext : public WorksheetContextBase
+{
+public:
+    explicit            SortConditionContext( WorksheetContextBase& rFragment, SortCondition& rSortCondition );
+
+protected:
+    virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override;
+    virtual void        onStartElement( const AttributeList& rAttribs ) override;
+
+    virtual ::oox::core::ContextHandlerRef onCreateRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ) override;
+    virtual void        onStartRecord( SequenceInputStream& rStrm ) override;
+
+private:
+    SortCondition&      mrSortCondition;
+};
+
+// class SortStateContext
+
+class SortStateContext : public WorksheetContextBase
+{
+public:
+    explicit            SortStateContext( WorksheetContextBase& rFragment, AutoFilter& rAutoFilter );
+
+protected:
+    virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override;
+    virtual void        onStartElement( const AttributeList& rAttribs ) override;
+
+    virtual ::oox::core::ContextHandlerRef onCreateRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ) override;
+    virtual void        onStartRecord( SequenceInputStream& rStrm ) override;
+
+private:
+    AutoFilter&         mrAutoFilter;
+};
+
+// class AutoFilterContext
+
 class AutoFilterContext : public WorksheetContextBase
 {
 public:
diff --git a/sc/source/filter/inc/excrecds.hxx b/sc/source/filter/inc/excrecds.hxx
index 74a21cbfa563..a0abbf9410cd 100644
--- a/sc/source/filter/inc/excrecds.hxx
+++ b/sc/source/filter/inc/excrecds.hxx
@@ -417,6 +417,9 @@ private:
     std::unique_ptr<XclExpAutofilterinfo> m_pFilterInfo;
     ScRange                 maRef;
     bool mbAutoFilter;
+
+    ScRange maSortRef; // sort area without headers
+    std::vector< std::tuple<ScRange, OUString, bool> > maSortCustomList; // sorted column with list of sorted items
 };
 
 /** Sheet filter manager. Contains auto filters or advanced filters from all sheets. */
diff --git a/sc/source/filter/oox/autofilterbuffer.cxx b/sc/source/filter/oox/autofilterbuffer.cxx
index 9e53200092ce..8209df526283 100644
--- a/sc/source/filter/oox/autofilterbuffer.cxx
+++ b/sc/source/filter/oox/autofilterbuffer.cxx
@@ -39,6 +39,10 @@
 #include <addressconverter.hxx>
 #include <defnamesbuffer.hxx>
 #include <biffhelper.hxx>
+#include <document.hxx>
+#include <dbdata.hxx>
+#include <sortparam.hxx>
+#include <userlist.hxx>
 
 namespace oox {
 namespace xls {
@@ -530,6 +534,25 @@ ApiFilterSettings FilterColumn::finalizeImport( sal_Int32 nMaxCount )
     return aSettings;
 }
 
+// SortCondition
+
+SortCondition::SortCondition( const WorkbookHelper& rHelper ) :
+    WorkbookHelper( rHelper ),
+    mbDescending( false )
+{
+}
+
+void SortCondition::importSortCondition( const AttributeList& rAttribs, sal_Int16 nSheet )
+{
+    OUString aRangeStr = rAttribs.getString( XML_ref, OUString() );
+    AddressConverter::convertToCellRangeUnchecked( maRange, aRangeStr, nSheet );
+
+    maSortCustomList = rAttribs.getString( XML_customList, OUString() );
+    mbDescending = rAttribs.getBool( XML_descending, false );
+}
+
+// AutoFilter
+
 AutoFilter::AutoFilter( const WorkbookHelper& rHelper ) :
     WorkbookHelper( rHelper )
 {
@@ -548,6 +571,12 @@ void AutoFilter::importAutoFilter( SequenceInputStream& rStrm, sal_Int16 nSheet
     AddressConverter::convertToCellRangeUnchecked( maRange, aBinRange, nSheet );
 }
 
+void AutoFilter::importSortState( const AttributeList& rAttribs, sal_Int16 nSheet )
+{
+    OUString aRangeStr = rAttribs.getString( XML_ref, OUString() );
+    AddressConverter::convertToCellRangeUnchecked( maSortRange, aRangeStr, nSheet );
+}
+
 FilterColumn& AutoFilter::createFilterColumn()
 {
     FilterColumnVector::value_type xFilterColumn( new FilterColumn( *this ) );
@@ -555,12 +584,21 @@ FilterColumn& AutoFilter::createFilterColumn()
     return *xFilterColumn;
 }
 
-void AutoFilter::finalizeImport( const Reference<XSheetFilterDescriptor3>& rxFilterDesc )
+SortCondition& AutoFilter::createSortCondition()
 {
-    if( rxFilterDesc.is() )
+    SortConditionVector::value_type xSortCondition = std::make_shared<SortCondition>( *this );
+    maSortConditions.push_back( xSortCondition );
+    return *xSortCondition;
+}
+
+void AutoFilter::finalizeImport( const Reference< XDatabaseRange >& rxDatabaseRange, sal_Int16 nSheet )
+{
+    // convert filter settings using the filter descriptor of the database range
+    const Reference<XSheetFilterDescriptor3> xFilterDesc( rxDatabaseRange->getFilterDescriptor(), UNO_QUERY_THROW );
+    if( xFilterDesc.is() )
     {
         // set some common properties for the auto filter range
-        PropertySet aDescProps( rxFilterDesc );
+        PropertySet aDescProps( xFilterDesc );
         aDescProps.setProperty( PROP_IsCaseSensitive, false );
         aDescProps.setProperty( PROP_SkipDuplicates, false );
         aDescProps.setProperty( PROP_Orientation, TableOrientation_ROWS );
@@ -631,11 +669,71 @@ void AutoFilter::finalizeImport( const Reference<XSheetFilterDescriptor3>& rxFil
 
         // insert all filter fields to the filter descriptor
         if( !aFilterFields.empty() )
-            rxFilterDesc->setFilterFields3( ContainerHelper::vectorToSequence( aFilterFields ) );
+            xFilterDesc->setFilterFields3( ContainerHelper::vectorToSequence( aFilterFields ) );
 
         // regular expressions
         bool bUseRegExp = obNeedsRegExp.get( false );
         aDescProps.setProperty( PROP_UseRegularExpressions, bUseRegExp );
+
+        // sort
+        if (!maSortConditions.empty())
+        {
+            const SortConditionVector::value_type& xSortConditionPointer = *maSortConditions.begin();
+            const SortCondition& rSorConditionLoaded = *xSortConditionPointer;
+
+            ScSortParam aParam;
+            aParam.bUserDef = false;
+            aParam.nUserIndex = 0;
+            aParam.bByRow = false;
+
+            ScUserList* pUserList = ScGlobal::GetUserList();
+            if (!rSorConditionLoaded.maSortCustomList.isEmpty())
+            {
+                for (size_t i=0; pUserList && i < pUserList->size(); i++)
+                {
+                    const OUString aEntry((*pUserList)[i].GetString());
+                    if (aEntry.equalsIgnoreAsciiCase(rSorConditionLoaded.maSortCustomList))
+                    {
+                        aParam.bUserDef = true;
+                        aParam.nUserIndex = i;
+                        break;
+                    }
+                }
+            }
+
+            if (!aParam.bUserDef)
+            {
+                pUserList->push_back(new ScUserListData(rSorConditionLoaded.maSortCustomList));
+                aParam.bUserDef = true;
+                aParam.nUserIndex = pUserList->size()-1;
+            }
+
+            // set sort parameter if we have detected it
+            if (aParam.bUserDef)
+            {
+                SCCOLROW nStartPos = aParam.bByRow ? maRange.aStart.Col() : maRange.aStart.Row();
+                if (rSorConditionLoaded.mbDescending)
+                {
+                    // descending sort - need to enable 1st SortParam slot
+                    assert(aParam.GetSortKeyCount() == DEFSORT);
+
+                    aParam.maKeyState[0].bDoSort = true;
+                    aParam.maKeyState[0].bAscending = false;
+                    aParam.maKeyState[0].nField += nStartPos;
+                }
+
+                ScDocument& rDoc = getScDocument();
+                ScDBData* pDBData = rDoc.GetDBAtArea(
+                    nSheet,
+                    maRange.aStart.Col(), maRange.aStart.Row(),
+                    maRange.aEnd.Col(), maRange.aEnd.Row());
+
+                if (pDBData)
+                    pDBData->SetSortParam(aParam);
+                else
+                    OSL_FAIL("AutoFilter::finalizeImport(): cannot find matching DBData");
+            }
+        }
     }
 }
 
@@ -662,7 +760,7 @@ void AutoFilterBuffer::finalizeImport( sal_Int16 nSheet )
             // use the same name for the database range as used for the defined name '_FilterDatabase'
             Reference< XDatabaseRange > xDatabaseRange = createUnnamedDatabaseRangeObject( aFilterRange );
             // first, try to create an auto filter
-            bool bHasAutoFilter = finalizeImport( xDatabaseRange );
+            bool bHasAutoFilter = finalizeImport( xDatabaseRange, nSheet );
             // no success: try to create an advanced filter
             if( !bHasAutoFilter && xDatabaseRange.is() )
             {
@@ -709,7 +807,7 @@ void AutoFilterBuffer::finalizeImport( sal_Int16 nSheet )
     }
 }
 
-bool AutoFilterBuffer::finalizeImport( const Reference< XDatabaseRange >& rxDatabaseRange )
+bool AutoFilterBuffer::finalizeImport( const Reference< XDatabaseRange >& rxDatabaseRange, sal_Int16 nSheet )
 {
     AutoFilter* pAutoFilter = getActiveAutoFilter();
     if( pAutoFilter && rxDatabaseRange.is() ) try
@@ -717,9 +815,9 @@ bool AutoFilterBuffer::finalizeImport( const Reference< XDatabaseRange >& rxData
         // the property 'AutoFilter' enables the drop-down buttons
         PropertySet aRangeProps( rxDatabaseRange );
         aRangeProps.setProperty( PROP_AutoFilter, true );
-        // convert filter settings using the filter descriptor of the database range
-        Reference< XSheetFilterDescriptor3 > xFilterDesc( rxDatabaseRange->getFilterDescriptor(), UNO_QUERY_THROW );
-        pAutoFilter->finalizeImport( xFilterDesc );
+
+        pAutoFilter->finalizeImport( rxDatabaseRange, nSheet );
+
         // return true to indicate enabled autofilter
         return true;
     }
diff --git a/sc/source/filter/oox/autofiltercontext.cxx b/sc/source/filter/oox/autofiltercontext.cxx
index 1ec7b7138b72..814569e0b45f 100644
--- a/sc/source/filter/oox/autofiltercontext.cxx
+++ b/sc/source/filter/oox/autofiltercontext.cxx
@@ -116,6 +116,65 @@ void FilterColumnContext::onStartRecord( SequenceInputStream& rStrm )
     mrFilterColumn.importFilterColumn( rStrm );
 }
 
+// class SortConditionContext
+
+SortConditionContext::SortConditionContext( WorksheetContextBase& rParent, SortCondition& rSortCondition ) :
+    WorksheetContextBase( rParent ),
+    mrSortCondition( rSortCondition )
+{
+}
+
+ContextHandlerRef SortConditionContext::onCreateContext( sal_Int32 , const AttributeList& )
+{
+    return nullptr;
+}
+
+void SortConditionContext::onStartElement( const AttributeList& rAttribs )
+{
+    mrSortCondition.importSortCondition( rAttribs, getSheetIndex() );
+}
+
+ContextHandlerRef SortConditionContext::onCreateRecordContext( sal_Int32 , SequenceInputStream& )
+{
+    return nullptr;
+}
+
+void SortConditionContext::onStartRecord( SequenceInputStream& )
+{
+}
+
+// class SortStateContext
+
+SortStateContext::SortStateContext( WorksheetContextBase& rParent, AutoFilter& rAutoFilter ) :
+    WorksheetContextBase( rParent ),
+    mrAutoFilter( rAutoFilter )
+{
+}
+
+ContextHandlerRef SortStateContext::onCreateContext( sal_Int32 nElement, const AttributeList& /*rAttribs*/ )
+{
+    if( getCurrentElement() == XLS_TOKEN( sortState ) ) switch( nElement )
+    {
+        case XLS_TOKEN( sortCondition ):
+            return new SortConditionContext( *this, mrAutoFilter.createSortCondition() );
+    }
+    return nullptr;
+}
+
+void SortStateContext::onStartElement( const AttributeList& rAttribs )
+{
+    mrAutoFilter.importSortState( rAttribs, getSheetIndex() );
+}
+
+ContextHandlerRef SortStateContext::onCreateRecordContext( sal_Int32 , SequenceInputStream& )
+{
+    return nullptr;
+}
+
+void SortStateContext::onStartRecord( SequenceInputStream& )
+{
+}
+
 AutoFilterContext::AutoFilterContext( WorksheetFragmentBase& rFragment, AutoFilter& rAutoFilter ) :
     WorksheetContextBase( rFragment ),
     mrAutoFilter( rAutoFilter )
@@ -124,8 +183,13 @@ AutoFilterContext::AutoFilterContext( WorksheetFragmentBase& rFragment, AutoFilt
 
 ContextHandlerRef AutoFilterContext::onCreateContext( sal_Int32 nElement, const AttributeList& /*rAttribs*/ )
 {
-    if( (getCurrentElement() == XLS_TOKEN( autoFilter )) && (nElement == XLS_TOKEN( filterColumn )) )
-        return new FilterColumnContext( *this, mrAutoFilter.createFilterColumn() );
+    if( getCurrentElement() == XLS_TOKEN( autoFilter ) ) switch( nElement )
+    {
+        case XLS_TOKEN( sortState ):
+            return new SortStateContext( *this, mrAutoFilter );
+        case XLS_TOKEN( filterColumn ):
+            return new FilterColumnContext( *this, mrAutoFilter.createFilterColumn() );
+    }
     return nullptr;
 }
 
diff --git a/sc/source/filter/oox/tablebuffer.cxx b/sc/source/filter/oox/tablebuffer.cxx
index 8c8526ce9a57..928870276276 100644
--- a/sc/source/filter/oox/tablebuffer.cxx
+++ b/sc/source/filter/oox/tablebuffer.cxx
@@ -136,7 +136,7 @@ void Table::applyAutoFilters()
             PropertySet aDocProps( getDocument() );
             Reference< XDatabaseRanges > xDatabaseRanges( aDocProps.getAnyProperty( PROP_DatabaseRanges ), UNO_QUERY_THROW );
             Reference< XDatabaseRange > xDatabaseRange( xDatabaseRanges->getByName( maDBRangeName ), UNO_QUERY );
-            maAutoFilters.finalizeImport( xDatabaseRange );
+            maAutoFilters.finalizeImport( xDatabaseRange, maModel.maRange.aStart.Tab() );
         }
         catch( Exception& )
         {
commit b7de766b4dc5b4810277069bcf53a9f3737e87da
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun May 31 11:50:20 2020 +0200
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Wed Sep 9 15:40:37 2020 +0200

    pdfium: only init pdfium library once and destroy on LO exit
    
    With more and more usage of PDFium, it is hard to keep track of
    the life-time of the PDFium library, so it can happen that a
    FPDF_DestroyLibrary happens when we still have another instance
    where PDFium is still use. The result of this is a crash. To
    prevent this, just initialize the library once and delete, when
    on LO exit.
    
    This can be improved in the future to only keep the library
    active when in actual use.
    
    [ Leaving out the vector graphic search bits, the motivation is to just
    have this in libreoffice-7-0, so that recent pdf sig verify improvements
    can be backported. ]
    
    (cherry picked from commit 067a8a954c8e1d8d6465a4ab5fb61e93f16c26c2)
    
    Conflicts:
            vcl/source/graphic/VectorGraphicSearch.cxx
    
    Change-Id: I5c7e5de7f8b97d10efb394c67c7a61b976c8d57c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102317
    Tested-by: Miklos Vajna <vmiklos at collabora.com>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>

diff --git a/include/vcl/filter/PDFiumLibrary.hxx b/include/vcl/filter/PDFiumLibrary.hxx
new file mode 100644
index 000000000000..bc7912c17e81
--- /dev/null
+++ b/include/vcl/filter/PDFiumLibrary.hxx
@@ -0,0 +1,43 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+
+#pragma once
+
+#include <config_features.h>
+
+#if HAVE_FEATURE_PDFIUM
+
+#include <memory>
+#include <rtl/instance.hxx>
+#include <vcl/dllapi.h>
+
+namespace vcl::pdf
+{
+class VCL_DLLPUBLIC PDFium final
+{
+private:
+    PDFium(const PDFium&) = delete;
+    PDFium& operator=(const PDFium&) = delete;
+
+public:
+    PDFium();
+    ~PDFium();
+};
+
+struct PDFiumLibrary : public rtl::StaticWithInit<std::shared_ptr<PDFium>, PDFiumLibrary>
+{
+    std::shared_ptr<PDFium> operator()() { return std::make_shared<PDFium>(); }
+};
+
+} // namespace vcl::pdf
+
+#endif // HAVE_FEATURE_PDFIUM
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index b392e9523f79..66b37df2aee4 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -145,6 +145,7 @@ ImpSdrPdfImport::ImpSdrPdfImport(SdrModel& rModel, SdrLayerID nLay, const tools:
     , mnPageCount(0)
     , mdPageWidthPts(0)
     , mdPageHeightPts(0)
+    , mpPDFium(vcl::pdf::PDFiumLibrary::get())
 {
     mpVD->EnableOutput(false);
     mpVD->SetLineColor();
@@ -158,13 +159,6 @@ ImpSdrPdfImport::ImpSdrPdfImport(SdrModel& rModel, SdrLayerID nLay, const tools:
                                               svl::Items<EE_ITEMS_START, EE_ITEMS_END>{});
     checkClip();
 
-    FPDF_LIBRARY_CONFIG aConfig;
-    aConfig.version = 2;
-    aConfig.m_pUserFontPaths = nullptr;
-    aConfig.m_pIsolate = nullptr;
-    aConfig.m_v8EmbedderSlot = 0;
-    FPDF_InitLibraryWithConfig(&aConfig);
-
     // Load the buffer using pdfium.
     mpPdfDocument = FPDF_LoadMemDocument(mpPdfData->data(), mpPdfData->size(),
                                          /*password=*/nullptr);
@@ -197,11 +191,7 @@ ImpSdrPdfImport::ImpSdrPdfImport(SdrModel& rModel, SdrLayerID nLay, const tools:
     mnPageCount = FPDF_GetPageCount(mpPdfDocument);
 }
 
-ImpSdrPdfImport::~ImpSdrPdfImport()
-{
-    FPDF_CloseDocument(mpPdfDocument);
-    FPDF_DestroyLibrary();
-}
+ImpSdrPdfImport::~ImpSdrPdfImport() { FPDF_CloseDocument(mpPdfDocument); }
 
 void ImpSdrPdfImport::DoObjects(SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport,
                                 int nPageIndex)
diff --git a/svx/source/svdraw/svdpdf.hxx b/svx/source/svdraw/svdpdf.hxx
index 70b5a44e4ddf..3624b50ba28d 100644
--- a/svx/source/svdraw/svdpdf.hxx
+++ b/svx/source/svdraw/svdpdf.hxx
@@ -42,6 +42,8 @@
 #include <postwin.h>
 #include <fpdfview.h>
 
+#include <vcl/filter/PDFiumLibrary.hxx>
+
 // Forward Declarations
 
 class SfxItemSet;
@@ -205,6 +207,8 @@ class ImpSdrPdfImport final
     tools::Rectangle PointsToLogic(double left, double right, double top, double bottom) const;
     Point PointsToLogic(double x, double y) const;
 
+    std::shared_ptr<vcl::pdf::PDFium> mpPDFium;
+
     // check for clip and evtl. fill maClip
     void checkClip();
     bool isClip() const;
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 6635c3fcdc43..83ac6691f3c5 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -315,6 +315,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/source/gdi/scrptrun \
     vcl/source/gdi/CommonSalLayout \
     vcl/source/gdi/TypeSerializer \
+    vcl/source/pdf/PDFiumLibrary \
     vcl/source/graphic/GraphicLoader \
     vcl/source/graphic/GraphicObject \
     vcl/source/graphic/GraphicObject2 \
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 48f12080f74b..28ee088a6f17 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list