Accepting request 1001730 from LibreOffice:Factory

OBS-URL: https://build.opensuse.org/request/show/1001730
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libreoffice?expand=0&rev=258
This commit is contained in:
Dominique Leuenberger 2022-09-09 16:24:16 +00:00 committed by Git OBS Bridge
commit 8fd41b6343
31 changed files with 137 additions and 632 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9b334d6c6d7af5a0687280788cd84444398b8e0b472cd88e52bbc3c3ef11d98e
size 17548708

3
boost_1_79_0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2058aa88758a0e1aaac1759b3c4bad2526f899c6ecc6eeea79aa5e8fd3ea95dc
size 17688504

View File

@ -1,391 +0,0 @@
From 5319087ab75a01793462c8c41cebfa1996cc688a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Toma=C5=BE=20Vajngerl?= <tomaz.vajngerl@collabora.co.uk>
Date: Mon, 6 Jun 2022 22:53:23 +0200
Subject: [PATCH] tdf148321: convert OOXML inset values to text distance values
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Inset values for top, bottom are calcualted differently in OOXML
and need to be coverted on import to the text distance LO values,
that place the text relative to the shape correctly.
At export, the values can be converted back to the OOXML inset
compatible values, but the values are not always converted back to
the same values as the conversion is not bijective, however they
do render the same.
This also adds the test for the conversion when importing and
checks that the exported values are expected.
Change-Id: Ic64eec1a2a80ddad997f916da3e87dc30aaa12be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135463
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
(cherry picked from commit e216988657e20a1e52986f742ab60464697bcb41)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135504
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
---
oox/inc/drawingml/textbodyproperties.hxx | 17 +-
oox/source/drawingml/shape.cxx | 9 +-
oox/source/drawingml/textbodyproperties.cxx | 129 +++++-
oox/source/export/drawingml.cxx | 48 ++-
...ppunitTest_sd_shape_import_export_tests.mk | 74 ++++
sd/Module_sd.mk | 1 +
sd/qa/unit/ShapeImportExportTest.cxx | 381 ++++++++++++++++++
sd/qa/unit/data/TextDistancesInsets1.pptx | Bin 0 -> 60484 bytes
sd/qa/unit/data/TextDistancesInsets2.pptx | Bin 0 -> 111830 bytes
sd/qa/unit/data/TextDistancesInsets3.pptx | Bin 0 -> 60276 bytes
10 files changed, 619 insertions(+), 40 deletions(-)
create mode 100644 sd/CppunitTest_sd_shape_import_export_tests.mk
create mode 100644 sd/qa/unit/ShapeImportExportTest.cxx
create mode 100644 sd/qa/unit/data/TextDistancesInsets1.pptx
create mode 100644 sd/qa/unit/data/TextDistancesInsets2.pptx
create mode 100644 sd/qa/unit/data/TextDistancesInsets3.pptx
diff --git a/oox/inc/drawingml/textbodyproperties.hxx b/oox/inc/drawingml/textbodyproperties.hxx
index 41fbb832a5d8..7cc1b9d8041c 100644
--- a/oox/inc/drawingml/textbodyproperties.hxx
+++ b/oox/inc/drawingml/textbodyproperties.hxx
@@ -21,12 +21,15 @@
#define INCLUDED_OOX_DRAWINGML_TEXTBODYPROPERTIES_HXX
#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
#include <oox/helper/helper.hxx>
#include <oox/helper/propertymap.hxx>
#include <optional>
+#include <array>
-namespace oox::drawingml {
+class Size;
+namespace oox::drawingml {
struct TextBodyProperties
{
@@ -35,7 +38,7 @@ struct TextBodyProperties
bool mbAnchorCtr;
OptValue< sal_Int32 > moVert;
bool moUpright = false;
- std::optional< sal_Int32 > moInsets[4];
+ std::array<std::optional<sal_Int32>, 4> moInsets;
std::optional< sal_Int32 > moTextOffUpper;
std::optional< sal_Int32 > moTextOffLeft;
std::optional< sal_Int32 > moTextOffLower;
@@ -47,10 +50,14 @@ struct TextBodyProperties
OUString msHorzOverflow;
OUString msVertOverflow;
- explicit TextBodyProperties();
+ std::array<std::optional<sal_Int32>, 4> maTextDistanceValues;
+
+ explicit TextBodyProperties();
+
+ void pushTextDistances(Size const& rShapeSize);
+ void readjustTextDistances(css::uno::Reference<css::drawing::XShape> const& xShape);
+ void pushVertSimulation();
- void pushRotationAdjustments();
- void pushVertSimulation();
};
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index cd800f892030..bebcbae240b6 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1119,7 +1119,7 @@ Reference< XShape > const & Shape::createAndInsert(
// add properties from textbody to shape properties
if( mpTextBody )
{
- mpTextBody->getTextProperties().pushRotationAdjustments();
+ mpTextBody->getTextProperties().pushTextDistances(Size(aShapeRectHmm.Width, aShapeRectHmm.Height));
aShapeProps.assignUsed( mpTextBody->getTextProperties().maPropertyMap );
// Push char properties as well - specifically useful when this is a placeholder
if( mpMasterTextListStyle && mpMasterTextListStyle->getListStyle()[0].getTextCharacterProperties().moHeight.has() )
@@ -1685,9 +1685,14 @@ Reference< XShape > const & Shape::createAndInsert(
}
}
- if( mxShape.is() )
+ if (mxShape.is())
+ {
finalizeXShape( rFilterBase, rxShapes );
+ if (mpTextBody)
+ mpTextBody->getTextProperties().readjustTextDistances(mxShape);
+ }
+
return mxShape;
}
diff --git a/oox/source/drawingml/textbodyproperties.cxx b/oox/source/drawingml/textbodyproperties.cxx
index 2ffa7de1085f..e44a103e3865 100644
--- a/oox/source/drawingml/textbodyproperties.cxx
+++ b/oox/source/drawingml/textbodyproperties.cxx
@@ -22,9 +22,17 @@
#include <drawingml/textbodyproperties.hxx>
#include <oox/token/properties.hxx>
#include <oox/token/tokens.hxx>
+#include <tools/gen.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdoashp.hxx>
+#include <svx/sdtditm.hxx>
+
+#include <array>
using namespace ::com::sun::star::drawing;
using namespace ::com::sun::star::text;
+using namespace css;
namespace oox::drawingml {
@@ -57,14 +65,21 @@ void TextBodyProperties::pushVertSimulation()
maPropertyMap.setProperty( PROP_TextHorizontalAdjust, TextHorizontalAdjust_CENTER);
}
-/* Push adjusted values, taking into consideration Shape Rotation */
-void TextBodyProperties::pushRotationAdjustments()
+/* Push text distances / insets, taking into consideration Shape Rotation */
+void TextBodyProperties::pushTextDistances(Size const& rTextAreaSize)
{
- sal_Int32 nOff = 0;
- static sal_Int32 const aProps[] { PROP_TextLeftDistance, PROP_TextUpperDistance, PROP_TextRightDistance, PROP_TextLowerDistance };
- sal_Int32 n = SAL_N_ELEMENTS( aProps );
+ for (auto & rValue : maTextDistanceValues)
+ rValue.reset();
+
+ sal_Int32 nOff = 0;
+ static constexpr const std::array<sal_Int32, 4> aProps {
+ PROP_TextLeftDistance,
+ PROP_TextUpperDistance,
+ PROP_TextRightDistance,
+ PROP_TextLowerDistance
+ };
- switch( moRotation.get(0) )
+ switch (moRotation.get(0))
{
case 90*1*60000: nOff = 3; break;
case 90*2*60000: nOff = 2; break;
@@ -72,28 +87,104 @@ void TextBodyProperties::pushRotationAdjustments()
default: break;
}
- for( sal_Int32 i = 0; i < n; i++ )
+ for (size_t i = 0; i < aProps.size(); i++)
{
sal_Int32 nVal = 0;
// Hack for n#760986
// TODO: Preferred method would be to have a textbox on top
// of the shape and the place it according to the (off,ext)
- if( nOff == 0 && moTextOffLeft ) nVal = *moTextOffLeft;
- if( nOff == 1 && moTextOffUpper ) nVal = *moTextOffUpper;
- if( nOff == 2 && moTextOffRight ) nVal = *moTextOffRight;
- if( nOff == 3 && moTextOffLower ) nVal = *moTextOffLower;
- if( nVal < 0 ) nVal = 0;
-
- if( moInsets[i] )
- maPropertyMap.setProperty( aProps[ nOff ], static_cast< sal_Int32 >( *moInsets[i] + nVal ));
- else if( nVal )
- maPropertyMap.setProperty( aProps[ nOff ], nVal );
-
- nOff = (nOff+1) % n;
+ if (nOff == 0 && moTextOffLeft)
+ nVal = *moTextOffLeft;
+
+ if (nOff == 1 && moTextOffUpper)
+ nVal = *moTextOffUpper;
+
+
+ if (nOff == 2 && moTextOffRight)
+ nVal = *moTextOffRight;
+
+ if (nOff == 3 && moTextOffLower)
+ nVal = *moTextOffLower;
+
+
+ if( nVal < 0 )
+ nVal = 0;
+
+ sal_Int32 nTextOffsetValue = nVal;
+
+ if (moInsets[i])
+ {
+ nTextOffsetValue = *moInsets[i] + nVal;
+ }
+
+ // if inset is set, then always set the value
+ // this prevents the default to be set (0 is a valid value)
+ if (moInsets[i] || nTextOffsetValue)
+ {
+ maTextDistanceValues[nOff] = nTextOffsetValue;
+ }
+
+ nOff = (nOff + 1) % aProps.size();
+ }
+
+ // Check if bottom and top are set
+ if (maTextDistanceValues[1] && maTextDistanceValues[3])
+ {
+ double nHeight = rTextAreaSize.getHeight();
+
+ double nTop = *maTextDistanceValues[1];
+ double nBottom = *maTextDistanceValues[3];
+
+ // Check if top + bottom is more than text area height.
+ // If yes, we need to adjust the values as defined in OOXML.
+ if (nTop + nBottom >= nHeight)
+ {
+ double diffFactor = (nTop + nBottom - nHeight) / 2.0;
+
+ maTextDistanceValues[1] = nTop - diffFactor;
+ maTextDistanceValues[3] = nBottom - diffFactor;
+ }
+ }
+
+ for (size_t i = 0; i < aProps.size(); i++)
+ {
+ if (maTextDistanceValues[i])
+ maPropertyMap.setProperty(aProps[i], *maTextDistanceValues[i]);
}
}
+/* Readjust the text distances / insets if necessary to take
+ the text area into account, not just the shape area*/
+void TextBodyProperties::readjustTextDistances(uno::Reference<drawing::XShape> const& xShape)
+{
+ // Only for custom shapes (for now)
+ auto* pCustomShape = dynamic_cast<SdrObjCustomShape*>(SdrObject::getSdrObjectFromXShape(xShape));
+ if (pCustomShape)
+ {
+ sal_Int32 nLower = pCustomShape->GetTextLowerDistance();
+ sal_Int32 nUpper = pCustomShape->GetTextUpperDistance();
+
+ pCustomShape->SetMergedItem(makeSdrTextUpperDistItem(0));
+ pCustomShape->SetMergedItem(makeSdrTextLowerDistItem(0));
+
+ tools::Rectangle aAnchorRect;
+ pCustomShape->TakeTextAnchorRect(aAnchorRect);
+ Size aAnchorSize = aAnchorRect.GetSize();
+
+ pushTextDistances(aAnchorSize);
+ if (maTextDistanceValues[1] && maTextDistanceValues[3])
+ {
+ nLower = *maTextDistanceValues[3];
+ nUpper = *maTextDistanceValues[1];
+ }
+
+ pCustomShape->SetMergedItem(makeSdrTextLowerDistItem(nLower));
+ pCustomShape->SetMergedItem(makeSdrTextUpperDistItem(nUpper));
+ }
+}
+
+
} // namespace oox::drawingml
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 2a11fa507959..c4795cf9e5b8 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -3132,20 +3132,22 @@ void DrawingML::WriteText(const Reference<XInterface>& rXIface, bool bBodyPr, bo
sal_Int32 nXmlNamespace, bool bWritePropertiesAsLstStyles)
{
// ToDo: Fontwork in DOCX
- Reference< XText > xXText( rXIface, UNO_QUERY );
+ uno::Reference<XText> xXText(rXIface, UNO_QUERY);
if( !xXText.is() )
return;
- Reference< XPropertySet > rXPropSet( rXIface, UNO_QUERY );
+ uno::Reference<drawing::XShape> xShape(rXIface, UNO_QUERY);
+ uno::Reference<XPropertySet> rXPropSet(rXIface, UNO_QUERY);
sal_Int32 nTextPreRotateAngle = 0;
double nTextRotateAngle = 0;
-#define DEFLRINS 254
-#define DEFTBINS 127
- sal_Int32 nLeft, nRight, nTop, nBottom;
- nLeft = nRight = DEFLRINS;
- nTop = nBottom = DEFTBINS;
+ constexpr const sal_Int32 constDefaultLeftRightInset = 254;
+ constexpr const sal_Int32 constDefaultTopBottomInset = 127;
+ sal_Int32 nLeft = constDefaultLeftRightInset;
+ sal_Int32 nRight = constDefaultLeftRightInset;
+ sal_Int32 nTop = constDefaultTopBottomInset;
+ sal_Int32 nBottom = constDefaultTopBottomInset;
// top inset looks a bit different compared to ppt export
// check if something related doesn't work as expected
@@ -3158,6 +3160,27 @@ void DrawingML::WriteText(const Reference<XInterface>& rXIface, bool bBodyPr, bo
if (GetProperty(rXPropSet, "TextLowerDistance"))
mAny >>= nBottom;
+ // Transform the text distance values so they are compatible with OOXML insets
+ if (xShape.is())
+ {
+ sal_Int32 nTextHeight = xShape->getSize().Width;
+
+ auto* pCustomShape = dynamic_cast<SdrObjCustomShape*>(SdrObject::getSdrObjectFromXShape(xShape));
+ if (pCustomShape)
+ {
+ tools::Rectangle aAnchorRect;
+ pCustomShape->TakeTextAnchorRect(aAnchorRect);
+ nTextHeight = aAnchorRect.GetSize().getHeight();
+ }
+
+ if (nTop + nBottom >= nTextHeight)
+ {
+ sal_Int32 nDiff = std::abs(std::min(nTop, nBottom));
+ nTop += nDiff;
+ nBottom += nDiff;
+ }
+ }
+
TextVerticalAdjust eVerticalAlignment( TextVerticalAdjust_TOP );
const char* sVerticalAlignment = nullptr;
if (GetProperty(rXPropSet, "TextVerticalAdjust"))
@@ -3229,7 +3252,6 @@ void DrawingML::WriteText(const Reference<XInterface>& rXIface, bool bBodyPr, bo
{
if (mpTextExport)
{
- uno::Reference<drawing::XShape> xShape(rXIface, uno::UNO_QUERY);
if (xShape)
{
auto xTextFrame = mpTextExport->GetUnoTextFrame(xShape);
@@ -3377,10 +3399,10 @@ void DrawingML::WriteText(const Reference<XInterface>& rXIface, bool bBodyPr, bo
XML_horzOverflow, sHorzOverflow,
XML_vertOverflow, sVertOverflow,
XML_fromWordArt, sax_fastparser::UseIf("1", bFromWordArt),
- XML_lIns, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nLeft)), nLeft != DEFLRINS),
- XML_rIns, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nRight)), nRight != DEFLRINS),
- XML_tIns, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nTop)), nTop != DEFTBINS),
- XML_bIns, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nBottom)), nBottom != DEFTBINS),
+ XML_lIns, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nLeft)), nLeft != constDefaultLeftRightInset),
+ XML_rIns, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nRight)), nRight != constDefaultLeftRightInset),
+ XML_tIns, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nTop)), nTop != constDefaultTopBottomInset),
+ XML_bIns, sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nBottom)), nBottom != constDefaultTopBottomInset),
XML_anchor, sVerticalAlignment,
XML_anchorCtr, sax_fastparser::UseIf("1", bHorizontalCenter),
XML_vert, sWritingMode,
@@ -3465,7 +3487,6 @@ void DrawingML::WriteText(const Reference<XInterface>& rXIface, bool bBodyPr, bo
{
// tdf#112312: only custom shapes obey the TextAutoGrowHeight option
bool bTextAutoGrowHeight = false;
- uno::Reference<drawing::XShape> xShape(rXIface, uno::UNO_QUERY);
auto pSdrObjCustomShape = xShape.is() ? dynamic_cast<SdrObjCustomShape*>(SdrObject::getSdrObjectFromXShape(xShape)) : nullptr;
if (pSdrObjCustomShape && GetProperty(rXPropSet, "TextAutoGrowHeight"))
{
@@ -3517,7 +3538,6 @@ void DrawingML::WriteText(const Reference<XInterface>& rXIface, bool bBodyPr, bo
if( !enumeration.is() )
return;
- uno::Reference<drawing::XShape> xShape(rXIface, uno::UNO_QUERY);
SdrObject* pSdrObject = xShape.is() ? SdrObject::getSdrObjectFromXShape(xShape) : nullptr;
const SdrTextObj* pTxtObj = dynamic_cast<SdrTextObj*>( pSdrObject );
if (pTxtObj && mpTextExport)

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c72723ddba3300ffb231d6b09e2a728ea6e89de10ed5927f74bacbd77042336e
size 18770261

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8d205428c17bf13bb535300669ed28b338a157b1c01ae66d31d0d3e2d47c3fd5
size 25449582

3
icu4c-71_1-data.zip Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e3882b4fece6e5e039f22c3189b7ba224180fd26fdbfa9db284617455b93e804
size 19057953

3
icu4c-71_1-src.tgz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:67a7e6e51f61faf1306b6935333e13b2c48abd8da6d2f46ce6adca24b1e21ebf
size 25701340

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:48309056aa797eb2ae3aa3ef1b1bc49bd435fd4f2ad5770c45f4aa56fe6f0ff6
size 256373724

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmKX2fcACgkQ9DSh76/u
rqMvDRAAz3STt8tRWpbnR3/kc3/Cw1rwjxsZxlGjWLq24bnIcQwqUcEFghNmr+wy
WNAmHtnzXS9Wpk3kZYIKmMsNdeY6nu/8uW41Z6fPbt4a9/+xju+xeFg0Xfx85xOG
4nRoCA/ZKEyPexq51l8fqfg3F8pdmhVaBzMA7iTDTCaj83tM0YcmoGOriLqk1bms
tb2Ddhf/yDfdO03K6XRz4VcaIdbIdeJ2KOuiL4PLyL78UmulGtnF42HmaGd3sMgj
8bXa7jBMFmarBpigu4Hu6ASpqJbBb2Hn9OzrfmRpOfgKv7eZgqGbb2EwqE0DXwHb
DGhQJHZobj2X9cS3qdKmxCMYppQ82krICBaI1uP0qgrS6czpJrEnrsfqLg4Tvqz8
4ED72doRVu+7iHGmMapTeqgT9cKTNKlOU+bhV/2hXzdzJiijy37anHhRHIWs70pe
c6X1jXShY5NRarCYpX9eV71CG4OhqBvp0u1kNIQdat21wX17gFNB980tnOi4Swq3
LNSLiuJvjaPV1xEE8MmNfD7B1stvBmuwxEaJb58Mr3m+mYBgJ0Umysiu2Vm7ySE5
5DermMXJaj9pMOHiDb8PhzGULRIWzmeqGz6ZH9ya9ZnYTGB+U9AYdESSds49OS7l
RHgMcnFCvaHu458Wj0qjRzbGHeo3fXg0oE9Sk+ibprYFuKfQqjg=
=SP5t
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2c5c219c538776b4ec3815fe74c1915024cbe17dd0950e725e544ff49b20a28c
size 263297300

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmMGVUEACgkQ9DSh76/u
rqM4zg/9EvpdhG6GifHKkT0pr5P8raIBwuQ4ZFVos32vuaQsPpdA/5YsXi5HlZwT
3f8/XJVTI0RXdjFjsbNQ6WKlp36ulXZFpCJbvG4cDmzkiJw9TnrnBi55Kbb/DpbJ
k/HYVz0sFl53TaXgKYfRKW8YsgjR+eqXYjPDtQH4qQMLVkgxUG7HgE7whXUqeFUS
dmClNYYb56WYWDYrMCBbt3y2M3WS79yn/6t/dwT+LK7iP3ft+fo4V9a3q2dJ1a12
fP/t7ZUsIbVOm3Vy1CcqlQz/op0mmHsEACRpEoVCsvYbEAvhuYvfdRGkLYWKQnqu
ZWq3Fa+0CDMHMoZopd8tvQZ5PDi3In02XNDO415mt+1+gGwfuukkU+zQd1fyB10Q
IQAzVpDS5j6zk3/wCFnG0xoGoWJvggSsnhXv1IZClMaYKHzJ7fPLJKTIalqd+UWL
sYfjRDCn0YyYqUZKHxCZqvciAPHuS04XkdksChYrwcvvF73tQY+ygXqqnHZV8unx
iF4xgvxJBHWf90e4A2KRuzkTUWd3mTRb0mocC/Y1kLKq6xBuIAfG6s3yLi5r1I3/
moWFdf1V4YAGDfRGhryMRE2nxC5ekc0qX+i/+B8/KkJ83kCINmLylDsInI4pz0rN
jHv1BbWiwsvhNWfVFa1M87jzg+8Uqtc99b2AMwbjX0vG47mUCnE=
=ShB/
-----END PGP SIGNATURE-----

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eef1324f1796196718973cd110c5579fa142cd4ac947d7b1b1fea87c12aa42ad
size 112208564

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmKX2f0ACgkQ9DSh76/u
rqM3NBAAzdD6z2ua/NjFTKlhbgMaP/Q9s7QhfFQno99hXn87WF/B+rFjBm9SzBcT
SPz+nrnPnk4z1SyW735Ek3lWzzqZjPvH3uZpRVcHqH5k83E779pzQUq1kbgDxbNl
vb+BIxVd4b36H/JeQTnJew+PUXfXRVLIeO77A2enmMak9AJHsu9konavSCFN/jFH
AAfdRpd2Q5gx6JAsc7CRjFBfD4TDWY9AmFoolqFzujuz+MEFy9rVxjtp5bPLMEZY
QIxbUr8b6UQTzjGbNxzHmV/2afIUBou0hUIMVvbgUKemFguyD8T2K7LqRYC2UJr1
8iQv1TlT6aUIrBERMeoI5e+TDdVFCWy2RCwUlGgfsoH8CbYNAOK2SckrESvD1uy2
eaL9t+ezRd1E3AYUyzV6VNBlXN6K4CyGwlotMly6IpyoHLlgNDCkFBtQKFvmVIz6
YQBqJOO0vpTJ1ohatDmZ2i1cwn2rqjXxP6t8j0ZBXmSSQYK4A689lZ8P4l0IEnix
pFdpLYzDfg6Qlh5NH4eiZquv6y8pfHXn4wh1y+CkBWeNmBrIZBuXDA+0U8jHs9rl
tH0Z4ndXguCIgjm4IcpVYiiKObsjfffI1bKptbuOnE6XtzinsYsGaVCTQljeAvbF
4TNLOl38FrTOKIECroAFAK3uKWmtZa+2Y72tikkM0UhH0oQp2ss=
=ZLkM
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:17f0ef8b8722d399b070036cf11da9af33a2b9f7261a02bd5c89416d94c819c3
size 112593804

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmMGVUgACgkQ9DSh76/u
rqOGuhAAoCVUJgbkQa8a/EteYjqiIGFgibY8y19sDZh5eMeXlZnh1eSagWdodZvi
Lm1yO9KAj19HP8g1JJoJyPmfK1xVrrxAtAspUh3GeOBfoV1uLNQvUyiKfoPlKE42
xU3+mggivcnIYarHQ0/W9NwdWH9cocz6YrXvb6VsFTNvXBHFnFcfYWdgf6Sx9QjL
/deLBO8st9/nTpWmCsbVjT8FoOH12r1fzqnbJckh27xM2wdYrdkSoMTBomsOGd1B
YOOCHXvNQDzHhk/D3zc1FhFDwcaQV9oJ6nWchEm9N5lh325m5qm8e9mx68Q8vgxC
y80b3xyijGiE7oKJWkf12hXaXH0xp63yDCHKmhLGLd/39b8XiYFgKDK/O/AA+P8Q
cG0Ba0o7KfCfaycYFT1AWQXIuOnqhCfm7XrSlQhXO1J1HZS4DoL91d1NegmXd1V2
nSEwohl19jSXqTw1aJwyfqkRihGPPE1nnh/U0Ja9oI0F9wpyO3NuZW/MU1krT97Z
xllVj7SrVHY4LFzRcQfJ+uSS5B/cly+XFugQstQcOG41MjMWLrJ93otQV6w2EUnd
N5PfWKORUBKpRmvE2VSTPmdYuY2FWtYahNnvpPASBiUUM/M+mSjesnO6EUSupYon
TCMO1k64ZzuwhQMTENExTvyr/PRsr6aNLzBzqJVXjcA0/xU88sg=
=CkYk
-----END PGP SIGNATURE-----

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9ebc0c2f666d3677d28a01d69f247a8f9fa2dd64fe3d1092058a20cfee615379
size 196429092

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmKX2f4ACgkQ9DSh76/u
rqNxBRAAwMfmJPu/0qcmK4EWS3i585r4jHibQFWR8HzuHs49rs3SPkkfWle7VUYa
/O6eGnMnhLigRKqj+e+0ukwAIzb4GKLyItNKkMKWcWxJd5mzWSfTeG0mmuUJhST8
Lv6Nq2O4lq1CuMaqaOmORlSvY0102LFb4Vzhb1T5wCLU+kTe1FixBXDGg/OkXIYY
oS6l5JcbgAbl/BSfG8tmcl/8f0H4XCbcTOiojw7naEzVuB3nCF075ffZVp4nKrpk
wrOy1qVrhzUmoGEYml0dhW/cXKjqQGfAUyFgIf2Qh/6s90NObTGO45+YoXmcx5eG
Q8DfEdIwv42bwm/tH5bMH8moD+Hr2G3lf3v0e33d4IYRdugkbIBvLN5V63Dl9jEG
lWGmxjXywdOaYrylE5R8QeRkm3gkkWK4LZQg9yW56xdePSdPme5nSfLhaV7aRzqF
vKan1R34fWoNq0crQ482DE3DnD52fC8UnxVVgKALx7LkZ8Rp+H1LjyRvB5mBwLc1
SfDbejWQvFEl14+nyUTXlaX/Y+HLdfxIDjDFiWF6zmNI+c2iGQtKaxjWihnuTgiO
ZPBO6GCLh5nK4sC2t3MEgP62o7kZSAfjr5WTQ2h2XhGhkoh2FrSO+VVnHUmC4dmN
rrb4CQkkDknTB0kaE8PNKf7WbTZ14EbH2xhQRUS750kERdLcI8Q=
=hqcU
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e0d19967f81f53ea57b5a933ade455c81ad8c9a6c5c4e2442695138b2e816afe
size 199118572

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmMGVUgACgkQ9DSh76/u
rqM42Q//cXQQaUJuh80MgBr+GSRRGzqB/j6ePUFs6JuhHEH+QFVDmEad/1Z9EtRU
tXAPtTak7/LYsX2KMa7GlZNXqACYZgt3CUvYHUnRvz4GYBFCm8mefVoOkUuhfvNE
vJ1mRqnUxcd7zr4ed3ESLXjrcVRDOcZZA64uCmOJ8xNt+iSyS+h5q0j+A2/TghQq
fInlrAIO2H9ndkbutZZyf+1gnoNp7eUlgU3iWQjc8YSnN4lqFawS4myewrD6ZzeS
PFmAWF7X19rAscQns82fIpMhxmb4M0Ig3eyHNlprItgEM34nDFaeSEz6WvQ5H39w
6W8+9Zqk5bTKEppdDhF5zaDFiYEi59wJDS7jQNPC7HO3x/ZhpEhlLd6jt1/dD3Dk
vAULxKB/aud04d4d3pz91tTtQWpegpzZDSZU6Vj4Q2K1Jyw5ruHqv9hF3w/nnI4U
eGLWIqZoj7vXVB3OAzIV5CXbRwbsI6z/ihSq7N+avxtAIvYSEiqBbs/sSazspiDd
c9A42PMR0n0saQzrsoAw0KAVA3+ZeVqyZFr/WmfLXziZ6DpGlRdX4qW0F1tah6AT
ySbXEhxIAnGda4zEEBi0c9qq6IZQ6recR8Bg9YDtVCYo1Zl7WgEzSgDPh3DdnZPk
hgynxpRv7s5Ojp+r3Z7eCJfKPvxNaKeXU1U+dV92KgAXaZGYjxQ=
=CN4T
-----END PGP SIGNATURE-----

View File

@ -1,3 +1,33 @@
-------------------------------------------------------------------
Wed Aug 31 07:45:42 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>
- Update to 7.4.1.1:
https://wiki.documentfoundation.org/Releases/7.4.1/RC1
-------------------------------------------------------------------
Tue Aug 23 13:46:00 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>
- Update to 7.4.0.3:
You can check for 7.4 release notes here:
https://wiki.documentfoundation.org/ReleaseNotes/7.4
You can check for each minor release notes here:
https://wiki.documentfoundation.org/Releases/7.4.0/RC3
https://wiki.documentfoundation.org/Releases/7.4.0/RC2
https://wiki.documentfoundation.org/Releases/7.4.0/RC1
- Updated bundled libraries:
* boost_1_77_0.tar.xz -> boost_1_79_0.tar.xz
* icu4c-70_1-data.zip -> icu4c-71_1-data.zip
* icu4c-70_1-src.tgz -> icu4c-71_1-src.tgz
* pdfium-4699.tar.gz2 -> pdfium-5058.tar.bz2
* poppler-21.11.0.tar.xz -> poppler-22.01.0.tar.xz
* poppler-data-0.4.10.tar.gz -> poppler-data-0.4.11.tar.gz
* skia-m97-a7230803d64ae9d44f4e1282444801119a3ae967.tar.xz
-> skia-m103-b301ff025004c9cd82816c86c547588e6c24b466.tar.xz
- Remove upstreamed patches:
* bsc1198665.patch
* poppler-22-03-0.patch
* poppler-22-04-0.patch
-------------------------------------------------------------------
Mon Jul 18 14:23:35 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>

View File

@ -49,7 +49,7 @@
%endif
%bcond_with firebird
Name: libreoffice
Version: 7.3.4.2
Version: 7.4.1.1
Release: 0
Summary: A Free Office Suite (Framework)
License: LGPL-3.0-or-later AND MPL-2.0+
@ -90,11 +90,11 @@ Source2005: %{external_url}/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zi
Source2006: https://dev-www.libreoffice.org/extern/8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar
Source2007: https://dev-www.libreoffice.org/extern/odfvalidator-0.9.0-RC2-SNAPSHOT-jar-with-dependencies-2726ab578664434a545f8379a01a9faffac0ae73.jar
# PDFium is bundled everywhere
Source2008: %{external_url}/pdfium-4699.tar.bz2
Source2008: %{external_url}/pdfium-5058.tar.bz2
# Single C file with patches from LO
Source2009: %{external_url}/dtoa-20180411.tgz
# Skia is part of chromium and bundled everywhere as by google only way is monorepo way
Source2010: %{external_url}/skia-m97-a7230803d64ae9d44f4e1282444801119a3ae967.tar.xz
Source2010: %{external_url}/skia-m103-b301ff025004c9cd82816c86c547588e6c24b466.tar.xz
Source2012: %{external_url}/libcmis-0.5.2.tar.xz
# change user config dir name from ~/.libreoffice/3 to ~/.libreoffice/3-suse
# to avoid BerkleyDB incompatibility with the plain build
@ -107,18 +107,12 @@ Patch3: mediawiki-no-broken-help.diff
Patch6: gcc11-fix-error.patch
Patch9: fix_math_desktop_file.patch
Patch10: fix_gtk_popover_on_3.20.patch
# Bug 1198665 - LO-L3: PPTX: text on top of circular object misplaced
Patch15: bsc1198665.patch
# Build with java 8
Patch101: 0001-Revert-java-9-changes.patch
# try to save space by using hardlinks
Patch990: install-with-hardlinks.diff
# save time by relying on rpm check rather than doing stupid find+grep
Patch991: libreoffice-no-destdircheck.patch
# PATCH-FIX-UPSTRAM poppler-22-03-0.patch
Patch992: poppler-22-03-0.patch
# PATCH-FIX-SUSE poppler-22-04-0.patch
Patch993: poppler-22-04-0.patch
BuildRequires: %{name}-share-linker
BuildRequires: ant
BuildRequires: autoconf
@ -128,6 +122,8 @@ BuildRequires: bison
BuildRequires: bsh2
BuildRequires: commons-logging
BuildRequires: cups-devel
BuildRequires: fixmath-devel
BuildRequires: libwebp-devel
%if %{with system_curl}
BuildRequires: curl-devel >= 7.68.0
%else
@ -151,7 +147,6 @@ BuildRequires: junit4
BuildRequires: libassuan0
BuildRequires: libbase
BuildRequires: libcppunit-devel >= 1.14.0
BuildRequires: libcuckoo-devel
BuildRequires: liberation-fonts
BuildRequires: libexif
BuildRequires: libfonts
@ -178,6 +173,7 @@ BuildRequires: update-desktop-files
BuildRequires: xml-commons-apis
BuildRequires: xz
BuildRequires: zip
BuildRequires: cmake(dragonbox)
BuildRequires: perl(Archive::Zip)
BuildRequires: perl(Digest::MD5)
BuildRequires: pkgconfig(apr-util-1)
@ -210,7 +206,7 @@ BuildRequires: pkgconfig(libexttextcat) >= 3.4.1
BuildRequires: pkgconfig(libfreehand-0.1)
BuildRequires: pkgconfig(liblangtag)
BuildRequires: pkgconfig(libmspub-0.1) >= 0.1
BuildRequires: pkgconfig(libmwaw-0.3) >= 0.3.19
BuildRequires: pkgconfig(libmwaw-0.3) >= 0.3.21
BuildRequires: pkgconfig(libnumbertext) >= 1.0.6
BuildRequires: pkgconfig(libodfgen-0.1) >= 0.1.4
BuildRequires: pkgconfig(liborcus-0.17)
@ -271,9 +267,9 @@ Obsoletes: %{name}-icon-theme-oxygen < %{version}
ExclusiveArch: aarch64 %{ix86} x86_64 ppc64le
%if 0%{?suse_version} < 1550
# Too old boost on the system
Source2020: %{external_url}/boost_1_77_0.tar.xz
Source2023: %{external_url}/poppler-21.11.0.tar.xz
Source2024: %{external_url}/poppler-data-0.4.10.tar.gz
Source2020: %{external_url}/boost_1_79_0.tar.xz
Source2023: %{external_url}/poppler-22.01.0.tar.xz
Source2024: %{external_url}/poppler-data-0.4.11.tar.gz
%else
BuildRequires: libboost_date_time-devel
BuildRequires: libboost_filesystem-devel
@ -285,8 +281,8 @@ BuildRequires: pkgconfig(poppler-cpp)
%endif
%if 0%{?suse_version} < 1500
# Too old icu on the system
Source2021: %{external_url}/icu4c-70_1-src.tgz
Source2022: %{external_url}/icu4c-70_1-data.zip
Source2021: %{external_url}/icu4c-71_1-src.tgz
Source2022: %{external_url}/icu4c-71_1-data.zip
BuildRequires: gcc7
BuildRequires: gcc7-c++
BuildRequires: java-devel >= 1.8
@ -1020,15 +1016,12 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
%patch3
%patch6 -p1
%patch9 -p1
%patch15 -p1
%if 0%{?suse_version} < 1500
%patch10 -p1
%patch101 -p1
%endif
%patch990 -p1
%patch991 -p1
%patch992 -p1
%patch993 -p1
# Disable some of the failing tests (some are random)
%if 0%{?suse_version} < 1330
@ -1212,7 +1205,7 @@ export NOCONFIGURE=yes
# no coinormp packages for coinmp
# just call make here as we added the jobs in configure
make verbose=t build-nocheck
make verbose=t build
%check
export LANG=C.UTF-8
@ -1385,22 +1378,23 @@ cp uno.py %{buildroot}%{_libdir}/%{name}/program/uno.py
%py3_compile %{buildroot}/%{_libdir}/libreoffice/share/extensions/
%py3_compile %{buildroot}/%{_libdir}/libreoffice/share/Scripts/python/
%py3_compile %{buildroot}/%{_libdir}/libreoffice/sdk/examples/python/
# Move python cache to respective filelist
for i in file-lists/*.txt; do
if [ `cat "${i}" | grep '\.py$' |wc -l` -gt 0 ]; then
cat "${i}" | grep '\.py$' > pyfiles.txt
for j in `cat pyfiles.txt`; do
# python3 has __pycache__ dir while py2 does not
pydir="${j%/*}"
pyname="${j##*/}"
if compgen -G "%{buildroot}${pydir}/__pycache__/${pyname%.*}*.pyc" > /dev/null; then
echo "%dir ${pydir}/__pycache__/" >> "${i}"
echo "${pydir}/__pycache__/${pyname%.*}*.pyc" >> "${i}"
fi
done
fi
# Add python cache dir to respective filelist
for filelist in file-lists/*.txt; do
echo "filelist: ${filelist}"
# For each python file in the filelist
for pyfile in `cat "${filelist}" | grep '\.py$'`; do
echo "pyfile: ${pyfile}"
pydir=`dirname ${pyfile}`
pyname=`basename ${pyfile}`
# If the bytecode for this python file exists, add it to the filelist
if compgen -G "%{buildroot}${pydir}/__pycache__/${pyname%.*}*.pyc" > /dev/null; then
echo "%dir ${pydir}/__pycache__/" >> "${filelist}"
#echo "%dir ${pydir}/__pycache__/" >> pycache.txt
echo "${pydir}/__pycache__/${pyname%.*}*.pyc" >> "${filelist}"
echo "adding: ${pydir}/__pycache__/${pyname%.*}*.pyc"
fi
done
done
rm pyfiles.txt
# Install color palette
cp %{SOURCE6} %{buildroot}%{_libdir}/libreoffice/share/palette/SUSE.soc
@ -1613,7 +1607,6 @@ exit 0
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/share
%dir %{_libdir}/%{name}/share/extensions
%{_libdir}/%{name}/share/extensions/ConvertTextToNumber
%{_libdir}/%{name}/share/extensions/nlpsolver
%{_libdir}/%{name}/share/extensions/numbertext

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ee80fe0a3b20ef5c5babc494cd655d1b1a0bdec710acb04524789df500c563bf
size 8780890

3
pdfium-5058.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eaf4ce9fad32b5d951c524139df23119b66c67720057defb97acab2dfb2582ac
size 9771391

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:31b76b5cac0a48612fdd154c02d9eca01fd38fb8eaa77c1196840ecdeb53a584
size 1783592

View File

@ -1,29 +0,0 @@
diff --git a/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
index ad6320139..e5f6d9c68 100644
--- a/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
+++ b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
@@ -138,6 +138,15 @@ int main(int argc, char **argv)
_setmode( _fileno( g_binary_out ), _O_BINARY );
#endif
+#if POPPLER_CHECK_VERSION(22, 3, 0)
+ PDFDoc aDoc( std::make_unique<GooString>(pFileName),
+ GooString(pOwnerPasswordStr),
+ GooString(pUserPasswordStr) );
+
+ PDFDoc aErrDoc( std::make_unique<GooString>(pErrFileName),
+ GooString(pOwnerPasswordStr),
+ GooString(pUserPasswordStr) );
+#else
PDFDoc aDoc( pFileName,
pOwnerPasswordStr,
pUserPasswordStr );
@@ -145,6 +154,7 @@ int main(int argc, char **argv)
PDFDoc aErrDoc( pErrFileName,
pOwnerPasswordStr,
pUserPasswordStr );
+#endif
// Check various permissions for aDoc.
PDFDoc &rDoc = aDoc.isOk()? aDoc: aErrDoc;

View File

@ -1,98 +0,0 @@
Index: libreoffice-7.3.3.1/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
===================================================================
--- libreoffice-7.3.3.1.orig/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
+++ libreoffice-7.3.3.1/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
@@ -474,12 +474,21 @@ int PDFOutDev::parseFont( long long nNew
{
// TODO(P3): Unfortunately, need to read stream twice, since
// we must write byte count to stdout before
+#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed
+ auto pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef());
+ if ( pBuf )
+ {
+ aNewFont.isEmbedded = true;
+ nSize = pBuf->size();
+ }
+#else
char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
if( pBuf )
{
aNewFont.isEmbedded = true;
gfree(pBuf);
}
+#endif
}
m_aFontMap[ nNewId ] = aNewFont;
@@ -492,21 +501,35 @@ void PDFOutDev::writeFontFile( GfxFont*
return;
int nSize = 0;
+#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed
+ auto pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef());
+ if ( !pBuf )
+ return;
+ nSize = pBuf->size();
+#else
char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
if( !pBuf )
return;
+#endif
// ---sync point--- see SYNC STREAMS above
fflush(stdout);
+#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed
+ if( fwrite(pBuf->data(), sizeof(unsigned char), nSize, g_binary_out) != static_cast<size_t>(nSize) )
+ {
+#else
if( fwrite(pBuf, sizeof(char), nSize, g_binary_out) != static_cast<size_t>(nSize) )
{
gfree(pBuf);
+#endif
exit(1); // error
}
// ---sync point--- see SYNC STREAMS above
fflush(g_binary_out);
+#if !POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed
gfree(pBuf);
+#endif
}
#if POPPLER_CHECK_VERSION(0, 83, 0)
@@ -759,7 +782,11 @@ void PDFOutDev::updateFont(GfxState *sta
{
assert(state);
+#if POPPLER_CHECK_VERSION(22, 04, 0)
+ std::shared_ptr<GfxFont> gfxFont = state->getFont();
+#else
GfxFont *gfxFont = state->getFont();
+#endif
if( !gfxFont )
return;
@@ -776,7 +803,11 @@ void PDFOutDev::updateFont(GfxState *sta
m_aFontMap.find( fontID );
if( it == m_aFontMap.end() )
{
+#if POPPLER_CHECK_VERSION(22, 04, 0)
+ nEmbedSize = parseFont( fontID, gfxFont.get(), state );
+#else
nEmbedSize = parseFont( fontID, gfxFont, state );
+#endif
it = m_aFontMap.find( fontID );
}
@@ -806,7 +837,11 @@ void PDFOutDev::updateFont(GfxState *sta
if (nEmbedSize)
{
+#if POPPLER_CHECK_VERSION(22, 04, 0)
+ writeFontFile(gfxFont.get());
+#else
writeFontFile(gfxFont);
+#endif
}
}

3
poppler-22.01.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7d3493056b5b86413e5c693c2cae02c5c06cd8e618d14c2c31e2c84b67b2313e
size 1801984

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6e2fcef66ec8c44625f94292ccf8af9f1d918b410d5aa69c274ce67387967b30
size 4497684

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2cec05cd1bb03af98a8b06a1e22f6e6e1a65b1e2f3816cb3069bb0874825f08c
size 4497282

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c094a6247e44104beaaa0d00c825beb6baf1a8e532dc22214747495317a65bd9
size 11079112

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:97e859e8467eca9d2441cd23079b61c2c3863b5687620f18cc31a9f966740177
size 11826600